Page 1 sur 1

undefined variable

Posté : 22 févr. 2007, 00:53
par patlecou
Bonsoir a tous,
J'ai recopie un petit script permettant une recherche de noms de fichiers contenant un mot cle donne.
Tres court script, le voici :
<?PHP
$répertoire = "C:\\easyphp1-8\\www\\docs\\";  
if ($REQUEST_METHOD == 'POST')
{ $catalogue = opendir($répertoire);
  while ($page = readdir($catalogue))
  { if (stristr($page, $mot) && !empty($mot))
    { print "<A HREF=\"$répertoire"."$page\">$page</A><br>\n";
    }
  }
}
else
{ echo "<H2>Recherche d'une fonction PHP</H2>";
  echo "<FORM METHOD=POST Action=$PHP_SELF>";
  echo "Tapez le mot clé recherché : ";
  echo "<INPUT TYPE='text' NAME='mot' VALUE=''>";
  echo "<INPUT TYPE='submit' VALUE='Chercher'>";
  echo "</FORM>";
}
?>
Mais quand je l'execute, il me renvoie:
Notice: Undefined variable: REQUEST_METHOD in c:\easyphp1-8\www\recherche.php on line 8

Recherche d'une fonction PHP

Notice: Undefined variable: PHP_SELF in c:\easyphp1-8\www\recherche.php on line 18

Je ne reussis pas a voir pourquoi.
Si quelqu'un pouvait m'eclairer, merci d'avance.[/php]

Posté : 22 févr. 2007, 01:05
par Ryle
C'est parce que tu fais appel à des variables (en l'occurence $REQUEST_METHOD et $PHP_SELF) alors que celles-ci ne sont pas définies.

C'est lié au paramètre register_global que tu dois avoir à OFF et qui nécessite par conséquent pour les variables globales de spécifier d'où elles proviennent. Ainsi la variable $PHP_SELF n'existe plus, il faut utiliser $_SERVER['PHP_SELF'] pour spécifier que tu veux la valeur de l'index PHP_SELF du serveur.

Ceci étant pour des raisons de sécurité, en effet, si quelqu'un ajoute dans l'url de ta page ?PHP_SELF=xxx, alors ta variable aurait été erronée. Avec register_globals à off, tu serais obligé (si tu souhaitais récupérer cette valeur dans l'url) de le spécifier explicitement : $_GET['PHP_SELF'] (qui n'a donc rien à voir avec celui du serveur)

voir la FAQ et la doc pour plus de détail :)