8792 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai mis dans le fichier php.ini register_globals = On mais j'ai toujours des
notices : Undefined variable .
Quelqu'un peut-il m'aider ?
Merci
C'est parce que t'as le niveau d'erreur défini à E_ALL, et PHP t'informe que t'accède à une variable jamais déclarée, ce qui peut parfois être synonyme de failles de sécurités.
De toute façon il ne faut jamais activer le register global, ça ouvre un immense trou de sécurité.
Mieux vaut corriger le script ...
Modifié par QuentinC (22 Oct 2006 - 16:47)
Bonsoir Smiley smile

Il faut toujours avoir le register global a off, c'est beaucoup mieux ! attention à modifier ça vite Smiley smile

pour remettre tes erreurs comme il faut, tu peux le faire avec :
ini_set('error_reporting', E_ALL); 

je te conseille de mettre :
ini_set('error_reporting', E_ALL ^ E_NOTICE);

après avoir fini ton debug.

pour vérifier l'existence d'une variable, fais le avec isset($var);

et n'abuses pas de l'arobase @ Smiley rolleyes , c'est trop facile, et pas correct Smiley langue
Quand je disais corriger le script, ce n'était peut-être pas clair : utilise les tableaux $_GET, $_POST, $_SESSION, $_COOKIE et $_SERVER dans les règles de l'art, tu auras moins de problèmes.
L'avantage d'utiliser $_GET/SERVER/POST/COOKIE c'est que tu sais d'où vient la variable. Donc tu comprends déjà plus facilement ton code.
En plus tu peux protéger ces tableaux un par un, ou juste un par exemple. J'utilise couramment la protection des $_GET, et je sais que le contenu de mon tableau $_GET est sécurisé.
Cette opération est beaucoup moins longue et complexe si je le fais sur $_GET, que si je l'a fais sur $GLOBAL (je dois d'abord détecter les get, ensuite les protéger, et pour ça, explorer tout l'array $GLOBAL). Ca prend trop de temps et de ressources.
Donc register_global = Off n'apporte que des avantages Smiley langue
La directive register_globals à ON n'est pas un trou de sécurité en soi.
Par contre, cette directive mal exploitée ouvre bien des portes. Smiley langue