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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb passage de variable d'une page a l'autre

par sadeq » 14 déc. 2005, 16:34

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.

par Cyrano » 14 déc. 2005, 15:23

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à.

par sadeq » 14 déc. 2005, 15:04

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.

par keb » 14 déc. 2005, 14:49

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

par DocType » 14 déc. 2005, 14:17

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:

par Cyrano » 14 déc. 2005, 13:45

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.

par DocType » 14 déc. 2005, 13:40

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:

par Cyrano » 14 déc. 2005, 13:28

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'];

par DocType » 14 déc. 2005, 13:22

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:

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

par keb » 14 déc. 2005, 13:08

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