Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc. pour PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/07/2008, 15h44   #21
Eusebe
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 993
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : mars 2006
Messages : 1 993
Points : 3 484
Points : 3 484
Y aurait-il une coquille dans la FAQ ?

Question : http://php.developpez.com/faq/?page=..._forcedownload
remplacer attachement par attachment ?

Voir le sujet :
http://www.developpez.net/forums/sho....php?p=3512971
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2008, 16h38   #22
Eusebius
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 296
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 296
Points : 3 268
Points : 3 268
Citation:
Envoyé par Eusebe Voir le message
Y aurait-il une coquille dans la FAQ ?

Question : http://php.developpez.com/faq/?page=..._forcedownload
remplacer attachement par attachment ?

Voir le sujet :
http://www.developpez.net/forums/sho....php?p=3512971
Oui, ça a l'air.
(Pfff, et en plus on suit les mêmes topics, ça va aider tiens pour pas nous confondre !)
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2008, 12h21   #23
gege2061
Rédacteur
 
Avatar de gege2061
 
Inscription : juin 2004
Messages : 5 850
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : juin 2004
Messages : 5 850
Points : 10 535
Points : 10 535
Une question par forcement fréquente mais la réponse n'est pas clairement expliquée dans la doc :

Citation:
Pourquoi isset renvoi toujours false ?

Comme précisé dans la documentation officiel, isset fonctionne uniquement avec les variables.

Pour les constantes, il faut utiliser defines.

Et pour les variables "magiques" (ie: gérée avec les fonctions magiques __set et __get), il faut définir la méthode __isset qui sera automatiquement appelée via la fonction isset. Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Foo
{
  private $vars = array ();
 
  private function __set ($key, $value)
  {
    $this->vars[$key] = $value;
  }
 
  public function __get ($key)
  {
    return $this->vars[$key];
  }
 
  public function __isset ($key)
  {
    return isset ($this->vars[$key]);
  }
}
 
$foo = new foo ();
isset ($foo->bar); // Retourne false
$foo->bar = 'bar';
isset ($foo->bar); // Retourne true
__________________
gege2061's blog
gege2061 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2009, 12h23   #24
Moubai
Invité de passage
 
Inscription : avril 2006
Messages : 1
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1
Points : 1
Points : 1
il y a une erreur de code dans la FAQ

http://php.developpez.com/faq/?page=...ner_couleur_tr


"Pour alterner les couleurs, il suffit de faire ainsi : "
Code :
1
2
3
4
5
6
7
$i = 0;
while(condition) 
{
  $couleur = ($compteur % 2 == 0) ? "#CCCCCC" : "#FFFFFF";
  echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>';
  $i++;
}
la variable $compteur doit être remplacée par la variable $i

donc

Code :
1
2
3
4
5
6
7
$i = 0;
while(condition) 
{
  $couleur = ($i % 2 == 0) ? "#CCCCCC" : "#FFFFFF";
  echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>';
  $i++;
}
Moubai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2009, 15h32   #25
Seb33300
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 428
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 27
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 428
Points : 1 913
Points : 1 913
J'ai une proposition pour la question :
Explications et correction de l'erreur "headers already sent"
http://php.developpez.com/faq/?page=...s_already_sent

Dans la liste de ce qui cause l'envoi des en-têtes, il serait peut être intéressant d'y ajouter : "Les fichiers php encodés en UTF8 avec BOM"

En effet c'est un cas assez particulier, car aucun texte n'est renvoyé à l'écran et un débutant pourrait pas mal galérer pour trouver la solution. Surtout que la tendance va justement vers l'UTF8.
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2009, 13h57   #26
s.n.a.f.u
Modérateur
 
Avatar de s.n.a.f.u
 
Homme jmleroux
Développeur Web
Inscription : août 2006
Messages : 2 757
Détails du profil
Informations personnelles :
Nom : Homme jmleroux
Âge : 38
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 757
Points : 3 861
Points : 3 861
Citation:
Envoyé par Seb33300 Voir le message
J'ai une proposition pour la question :
Explications et correction de l'erreur "headers already sent"
http://php.developpez.com/faq/?page=...s_already_sent

Dans la liste de ce qui cause l'envoi des en-têtes, il serait peut être intéressant d'y ajouter : "Les fichiers php encodés en UTF8 avec BOM"

En effet c'est un cas assez particulier, car aucun texte n'est renvoyé à l'écran et un débutant pourrait pas mal galérer pour trouver la solution. Surtout que la tendance va justement vers l'UTF8.
Waouh ! J'avais commencé un petit texte, et au moment de faire mon copier-coller, je vois que je ne suis pas le seul à y avoir pensé !

Pour la description précise du problème, je renvoie vers Wikipedia qui est assez claire sur le sujet, et je ne citerais que ce passage :

Citation:
Problèmes liés à l'utilisation de la marque d'ordre des octets
Beaucoup de logiciels Windows (incluant Windows Notepad) en ajoutent un aux fichiers UTF-8. Cependant, sur des systèmes de type Unix (qui utilisent beaucoup les fichiers textes pour la configuration) cette pratique n'est pas recommandée, car cela peut interférer avec le traitement adéquat de codes importants tels que le sha-bang au début d'un script interprété. Il peut également interférer avec le source pour les langages de programmation qui ne le reconnaissent pas. Par exemple, gcc reporte des stray characters au début du fichier source, et en PHP, si l'output buffering est désactivé, cela a pour effet subtil de faire que la page commence immédiatement à être envoyée au navigateur, et d'empêcher les custom headers d'être spécifiés par le script PHP. La représentation UTF-8 du BOM est la séquence d'octets EF BB BF, qui apparaît en codage ISO-8859-1 comme "" dans les éditeurs de textes et navigateurs mal préparés pour traiter l'UTF-8. Ils peuvent également échouer à appliquer la première règle d'une feuille CSS.
J'ai eu à intervenir plusieurs fois chez des amis ou connaissances qui développent sous windows avant de charger leur site en FTP sur un système linux.
Le BOM et l'output buffering ne faisaient pas bon ménage (les vues Zend_View avec ce caractère explosaient le rendu), mais il leur était impossible de trouver cette erreur, qui est assez discrète pour qui n'en a pas eu l'expérience précédemment.
Pour compliquer la chose, ajoutons à cela que les éditeurs actuels (Notepad++ par exemple) masquent le BOM par défaut.

Le problème a déjà été rencontré plusieurs fois sur le forum, aussi serait-il judicieux de préciser cette source d'erreur.

Enfin, si ça peut aider, je peux apporter ma petite contribution sous la forme de ce mini-script qui repère les fichiers incriminés dans une arborescence.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
/** JML - findBom.php
Ce script va parcourir toute l'arborescence à partir de son emplacement pour repérer les fichiers contenant le BOM utf8
La sortie est une table récapitulative des fichiers testés
*/
 
$path = realpath('./');
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
 
echo "<table>\n<tr><th>Fichier test&eacute;</th><th>R&eacute;sultat</th></tr>\n";
 
foreach($objects as $name => $object){
    if (!preg_match('/php|txt|p?html?$/', $name)) continue;
    echo "<tr>";
    printf ("<td>%s</td>", $name);
    $content = file_get_contents($name);
    if (preg_match('/\x{feff}/u', $content, $match))
        echo '<td style="color: red;">BOM</td>';
    else
        echo '<td style="color: green;">OK</td>';
    echo "</tr>\n";
}
echo "</table>\n";
La correction des fichiers incriminés peut se déduire de ce script, bien que personnellement je préfère le faire en Perl lorsque je dispose d'un accès ssh.

Qu'en pensez-vous ?
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • N'oubliez pas de vous servir des boutons , et
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h35.


 
 
 
 
Partenaires

Hébergement Web