Page 1 sur 1

pb passage de variable d'une page a l'autre

Posté : 14 déc. 2005, 13:08
par keb
Bonjour, j'utilise php / mysql sur mon pc de bureau.Je viens de changer d'ordi, mon ancien etait sous libranet et lmon nouveau st sous debian sarge.

Auparavant j'avais des bases de donnees qui utilisaient des formulaires pour transmettre des variables d'une page a la suivante et ca marchait.

Malheureusementsur le nouveau pc, ou j'ai mis les bases mysql et copier / coller les fichiers php, cela ne marche plus !! apparemnt les varaiables qui sont selectionnees sur la premiere page ne sont pas transmise a la suivante !!

merci d'avance pour votre aide

Posté : 14 déc. 2005, 13:22
par DocType
Encore une fois, on ne peut t'aider sans ton script ! Nous ne sommes pas encore devin, et même à l'approche de Noël nous ne faisons pas de miracle. Donc si tu souhaites une réponse, il serait apprecié que tu donnes les éléments concrets !
Mets-toi à notre place !

exemple: J'ai un soucis, un texte ne s'affiche pas, que se passe t'il comme problème ?
Note: si tu arrives à répondre à cette question quasi identique à la tienne, tu es très fort :wink:

Posté : 14 déc. 2005, 13:28
par Cyrano
Vérifie aussi la valeur de la directive register_globals dans le fichier de configuration de PHP: il y a fort à parier qu'elle est à OFF : ça implique que pour récupérer les variables du formulaire dans la page de traitement, il faut initialiser explicitement les variables :
$var = $_POST['var'];

Posté : 14 déc. 2005, 13:40
par DocType
Vérifie aussi la valeur de la directive register_globals dans le fichier de configuration de PHP: il y a fort à parier qu'elle est à OFF : ça implique que pour récupérer les variables du formulaire dans la page de traitement, il faut initialiser explicitement les variables :
$var = $_POST['var'];
Concernant ce register global, je reve ou c'est mùoins securisé de le passer à ON ? car je conseille tjr de le laisser à off et de mieux programmer.

Note: j'avais lu ça sur un site et j'avais pris ça par principe :wink:

Posté : 14 déc. 2005, 13:45
par Cyrano
Tout à fait juste : s'il est à off, il faut le laisser à off. Mais ça pose des problème pour le scripts qui ont été codé à l'ancienne méthode, c'est à dire avant la version 4.2 de PHP.

Le danger avec le register_globals à ON, c'est l'injection SQL par l'envoi de variables via l'URL qui seront récupérées et traitées directement: en mettant cette directive à OFF, il devient nécessaire d'initialiser les variables explicitement comme je l'ai indiqué plus tôt.

Posté : 14 déc. 2005, 14:17
par DocType
en mettant cette directive à OFF, il devient nécessaire d'initialiser les variables explicitement comme je l'ai indiqué plus tôt.
Ouep, et c'est le mieux :wink:

Posté : 14 déc. 2005, 14:49
par keb
et ben en utilisant ceci : <?php echo $_POST['nom']; ?>

mon probleme semble resolu, c'est magnifique... c donc certainement ce probleme de ON / OFF qui m'eenuyait

Merci de votre rapidite de reponse


PS : la prochaine fois j'essaierais de penser a mettre le script... ;-)

Keb

Posté : 14 déc. 2005, 15:04
par sadeq
Une astuce existe pour les programmeurs qui veulent mettre à niveau rapidement l'ancienne codification PHP basée sur un register_globals à ON.
Puisque cette directive est à OFF et qu'il ne faut pas la remettre à ON surtout s'il s'agit d'un parseur situé sur un serveur public.

L'astuce est de rajouter une ligne de code PHp au début de toutes les page PHP qui traitent des formulaires et qui se référent aux noms des champs transmis.

La ligne de code est la suivante :
<?php 
extract ($_GET);
extract($_POST);
?>
basé sur la fonction extract qui transforme les champs (GET ou POST) automatiquement en variables php.

Posté : 14 déc. 2005, 15:23
par Cyrano
Mouais, j'encouragerais pas cette manip, ça laisse la porte ouverte aux injections. Tu me diras : "Il faut encore le savoir", peut-être, mais la faille est toujours là.

Posté : 14 déc. 2005, 16:34
par sadeq
Quelles failles, l'extract que j'ai donné déclare les variables contenues dans le GET et le POST rien d'autres.
Si un programme utilise les variables extraites tant-mieu sinon ça n'a aucune incidence sur le programme.