2011-05-05 1 views
1

Comment cette forme php fonctionne-t-elle sans définir la variable $ SCRIPT_NAME?Comment fonctionne cette forme php sans définir de variable?

<form action="<?php echo $SCRIPT_NAME ?>" method="post"> 
+0

Souhaitez-vous que le script lui-même soit appelé sur la soumission de formulaire? – Eldros

+0

Si la variable a une valeur, cette valeur est assignée * quelque part *. Peut-être pas juste à côté du formulaire, mais si vous "grep" pour "SCRIPT_NAME" vous le trouverez certainement. – Jon

+1

Quelle est la sortie HTML? –

Répondre

4

Ce code repose sur l'ancienne, dépréciée et horrible register_globals fonction qui crée des variables globales de tous les $_REQUEST, $_COOKIE et $_SERVER champs.

Je vous suggère fortement de se débarrasser de ce code et de désactiver le paramètre register_globals.

1

Il existe une variable, $ _SERVER ['SCRIPT_NAME'] qui imprime le nom du script en cours. Vous pouvez trouver des informations à ce sujet ici: http://php.net/manual/en/reserved.variables.server.php

Je suppose que c'est ce qui est utilisé.

+0

il n'a pas utilisé '$ _SERVER' – diEcho

+0

Dans ce cas, register_globals est probablement activé dans la configuration php - généralement une mauvaise idée. Cela signifie que vous n'avez pas besoin de référencer spécifiquement certaines des variables globales (comme $ _SERVER) que PHP fournit, mais cela peut causer des problèmes de sécurité: http://php.net/manual/fr/security.globals.php –

0

La variable $_SERVER['PHP_SELF'] vous donnera le chemin relatif du script d'exécution, ainsi que la variable $_SERVER['SCRIPT_NAME'] qui donne le nom du script courant.

Une alternative serait d'utiliser $_SERVER['SCRIPT_FILENAME'] ou la constante FICHIER, qui donnent chacun le chemin absolu.

Ceux-ci devraient être préférés et utilisés au lieu d'utiliser la fonctionnalité register-globals qui devrait être désactivée comme l'a dit @ThiefMaster.

Questions connexes