Probleme avec PHP_SELF en local.

chdanao
Invité n'ayant pas de compte PHPfrance

01 mai 2008, 10:05

Bonjour,

Déjà je signale que je suis débutant en PHP donc soyez indulgeant si je dis des conneries :?

Je voudrais faire un petit script qui me permet de créer un fichier texte avec différentes infos. J'en ai fait un qui marche tres bien en ligne et qui me créer mon fichier avec tout ce que je veux.
Par contre ce qui m'interesse ce serait de le faire tourner en local pour créer ce fichier sur mon PC et sans avoir le net.

Et j'ai un problème en local avec PHP_SELF apparement.

J'utilise cette ligne de commande pour rappeler mon formulaire.

Code : Tout sélectionner

<form method="post" action="<?echo $PHP_SELF?>">


Quand je remplit mon formulaire et que je valide, ca plante et j'ai (Le même code fonctionne tres bien en ligne)
Image


Donc je pense que ca plante au moment de rappeler la page.
Est ce que PHP_SELF foncionne en local?
Sinon est-il possible d'outrepasser ce problème?
Faut-il configurer le serveur PHP de manière à ce qu'il prennent en compte cette variable?

Merci d'avance pour vos multiples réponses :lol:

Eléphant du PHP | 422 Messages

01 mai 2008, 10:09

et avec
<form method="post" action="<?php echo $PHP_SELF; ?>">
ça donne quoi ?

chdanao
Invité n'ayant pas de compte PHPfrance

01 mai 2008, 10:42

Merci de ta reponse déjà.

La même chose. Même erreur avec
dans la barre d'adresse.

J'ai aussi essayer çà
<? echo "<form method=\"post\" action=\"$PHP_SELF\">"; ?>
en vain.

Le serveur ne prend pas en compte cette variable j'ai l'impression, j'ai essayer avec easyphp et wamp5. Rien a faire.

Eléphant du PHP | 422 Messages

01 mai 2008, 11:05

D'après ce que je vois, tu as mis <? et pas <?php . Peux-tu essayer avec <?php ?

ViPHP
ViPHP | 5924 Messages

01 mai 2008, 11:16

C'est parce que tu codes de manière tout à fait obsolète, et insécure au passage…
Les nouvelles configurations ne supportent plus :
- Que les données $_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER, $_ENV, $_FILE soient enregistrées directement sous forme de variable dans les scripts : http://www.php.net/manual/fr/language.v ... efined.php
http://www.php.net/manual/fr/security.globals.php
- Que les erreurs notice soient cachées, cachant en même temps les erreurs de variables indéfinies, d'indices de tableaux inexistants : http://www.php.net/manual/fr/errorfunc. ... -reporting
- Que les données entrantes soient automatiquement échappées, déresponsabilisant ainsi le développeur au sujet des problèmes de sécurité et d'injection SQL : http://www.php.net/manual/fr/info.confi ... quotes-gpc

Ton problème ne vient que du premier point, il faut que tu utilises le tableau $_SERVER, mais si tu as ce problème, il y a de fortes chances que tu en ais d'autres dûs à ce que j'ai cité, notamment des grosses failles de sécurité… Je t'encourage donc à recoder proprement ton script.

Edit, en effet, je n'avais pas vu non plus le <? , les nouvelles configurations n'interprêtent plus non plus le code commencant par <?, il faut lui préférer <?php : http://www.php.net/manual/fr/ini.core.p ... t-open-tag

chdanao
Invité n'ayant pas de compte PHPfrance

01 mai 2008, 16:35

OK ben merci pour vos réponses. Apparement il faut que je potasse :?

Sinon pour info quand je mets <?php, ca ne plante plus quand je remplit mon formulaire, par contre çà ne rappelle pas la page. :(

je cherche simplement à rappeler la page avec les variables que j'ai rentré dans le forumaire en fait. Il n'y a pas une méthode simple???

A+ :wink:

ViPHP
ViPHP | 5924 Messages

01 mai 2008, 17:07

Il faut que tu utilises le tableau $_SERVER, mais si tu as ce problème, il y a de fortes chances que tu en ais d'autres dûs à ce que j'ai cité, notamment des grosses failles de sécurité… Je t'encourage donc à recoder proprement ton script.

Mammouth du PHP | 19672 Messages

01 mai 2008, 17:38

Et donc on écrit pas $PHP_SELF mais $_SERVER['PHP_SELF']
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 353 Messages

05 mai 2008, 16:07

Et donc on écrit pas $PHP_SELF mais $_SERVER['PHP_SELF']
Sans oublier d'en vérifier le contenu et de le filtrer pour ne pas s'exposer à une faille XSS, puisque c'est une donnée provenant du client.