probleme de formulaire

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 : probleme de formulaire

par Invité » 20 juil. 2005, 18:11

bien sur on peut mettre resolu mais je suis quand meme curieux de savoir pourquoi ca ne marche pas " a tous les coups", surtout que c'est un programme boursier et la rigeur y est requise :?:

pour modo : resolu donc

par Cyrano » 20 juil. 2005, 17:49

C'est effectivement curieux et l'idée d'un problème de cache n'est pas dénuée de sens. L'essentiel est que ça fonctionne désormais auquel cas on pourrait envisager de mettre ce sujet... [Résolu] :?:

par Invité » 20 juil. 2005, 17:47

il est bizaaar quand meme php
au debut :
<? echo $nom; ?> 
ne marchait pas (et ne marche toujours pas :
Notice: Undefined variable: nom in c:\program files\easyphp\www\projet1\bourse\tableaux.php on line 3
sauf qu'en remplacant ca par
$nom = $_POST['nom']; 
echo $nom; 
j'avais toujours la meme erreur
j'ai donc essayé :
<pre> 
<?php 
var_dump($_POST); 
?> 
</pre> 
qui m a donné :
array(6) {
["dateAchat"]=>
string(6) "010101"
["nom"]=>
string(6) "titre1"
["qteAchat"]=>
string(2) "25"
["prixUnitaire"]=>
string(3) "120"
["prixTotal"]=>
string(4) "2150"
["B1"]=>
string(7) "Envoyer"
}
puis essayé
<?php 
echo $_REQUEST["nom"]; 
?>
qui m a enfin donné le bon resultat
sauf que, surprise, en remplacant ca par la 2eme solution
$nom = $_POST['nom']; 
echo $nom; 
ca a enfin marché ! (et pas au debut) ce qui est icomprehensible : probleme de cache ou autre chose ? (je n utilise pour ce script ni cookies ni sessions) :?:

par Guakamol » 20 juil. 2005, 15:01

En validant ton formulaire tu a rempli ton champ nom??

Tu nous montre le code du formulaire c'est bien mais le code de traitement du formulaire c'est encore mieux ;)

par Axel » 20 juil. 2005, 14:49

OK
Je comprends, c'est vrai que je n'avais pas pensé à ça.
Si j'ai bien compris:
en fait si on a une page avec un formulaire qui transmet les variables en POST et que l'on récupère avec un REQUEST, on peut modifier l'une de ces variables en inscrivant la variable dans l'url (pour ceux qui cherchent à arnaquer :evil: )
alors que si on récupére avec POST pas de soucis

merci, tu vas m'éviter pas mal d'erreur :lol:

par Cyrano » 20 juil. 2005, 14:16

Tout simplement parce que c'est le même problème qu'avec le register globals à ON : $_REQUEST te permet de récupérer aussi bien des variables en POST ou en GET : mais le danger en GET, c'est qu'on peut modifier l'url manuellement et envoyer des valeurs non prévues qui seront traitées de la même manière mais pourront avoir des conséquences fort désagréables: par exemple, on peut modifier juste la quantité d'articles d'un panier... sans modifier le prix total et donc avoir une facture pour 10 articles mays payer pour 2 articles seulement tout en recevant quand même les 10 articles. $_REQUEST n'est utile à mon avis qu'en débuggage, mais en production, il est préférable d'en éviter l'usage.

À ce compte là, la méthode GET doit être évitée quand elle n'est pas absolument nécessaire. Donc on l'utilisera pour envoyer des paramètres permettant de choisir d'afficher telle ou telle page, mais on s'abstiendra de l'utiliser pour envoyer les données d'un formulaire, et on bannira cette méthode dans un formulaire d'identification ou un formulaire comportant des information personnelles ou confidentielles en particulier

par Axel » 20 juil. 2005, 12:04

Salut
Depuis, pour des raisons de sécurité, cette option register_globals est à OFF. Pour récupérer une valeur, il faut créer la variable et l'initialiser en récupérant explicitement les valeur dans une variable dire "super globale". Il y a plusieurs super-globales, les plus utilisées avec les formulaires étant $_POST, $_GET et $_REQUEST. Il est préférable d'utiliser les deux premières. On choisira en fonction de la valeur de l'attribut "method" de la balise <form>.
Tiens puisque tu en parles, pourrais tu m'expliquer pourquoi le $_REQUEST n'est pas conseillé, car cette fonctionnalité est bien pratique :roll:

Merci

Récupérer les variables d'un formulaire

par Cyrano » 20 juil. 2005, 07:51

Quelques explications simples.

Jusqu'à la version 4.2 de PHP, la configuration par défaut définissait l'option "register_globals" à ON. Grâce à cette option, on pouvait récupérer la valeur d'un champ de formulaire en mettant directement le nom du champ préfixé avec un "$" pour définir la variable. Ainsi, un champ "nom" (<input type="text" name="nom"> pouvait être récupéré dans la partie traitement en appelant $nom.

Depuis, pour des raisons de sécurité, cette option register_globals est à OFF. Pour récupérer une valeur, il faut créer la variable et l'initialiser en récupérant explicitement les valeur dans une variable dire "super globale". Il y a plusieurs super-globales, les plus utilisées avec les formulaires étant $_POST, $_GET et $_REQUEST. Il est préférable d'utiliser les deux premières. On choisira en fonction de la valeur de l'attribut "method" de la balise <form>.

Si la méthode choisie est "post", alors on retrouvera les valeurs dans $_POST, si c'Est "get" dans $_GET. Ce sont des tableaux associatifs dont les index sont les noms des champs du formulaire. Donc on retrouvera la valeur de notre champ "nom" dans $_POST['nom'] ou $_GET['nom'] selon la méthode.

Pour vérifier "en vrac" ce que le formulaire envoie, on peut très simplement faire afficher le contenu de la variable superglobale utilisée:
<pre>
<?php
var_dump($_POST);
?>
</pre>
On aura alors à l'écran toutes les variables effectivement envoyées par le formulaire.

Bon code.

par Jawad » 20 juil. 2005, 03:31

Après test, cela marche parfaitement chez moi.

Question stupide (mais je préfère vérifier): cela donne l'erreur après que tu aies posté le formulaire ? Après que tu aies cliqué sur le bouton 'Envoyer' ?

Si oui, essaye directement un

Code : Tout sélectionner

<?php echo $_REQUEST["nom"]; ?>
Cela m'étonnerait que cela résolve le problème, mais on sera fixés.

probleme de formulaire

par Invité » 20 juil. 2005, 00:30

salut
j'ai fait ce formulaire :

Code : Tout sélectionner

<form method="POST" action="tableaux.php"> <p>Date d'achat (jj/mm/aa) : <input type="text" name="dateAchat" size="8"></p> <p>Nom de la valeur : <input type="text" name="nom" size="10"></p> <p>Quantité achetée : <input type="text" name="qteAchat" size="10"></p> <p>Prix d'achat unitaire : <input type="text" name="prixUnitaire" size="5"> ou total : <input type="text" name="prixTotal" size="20"></p> <p><input type="submit" value="Envoyer" name="B1"> <input type="reset" value="Rétablir" name="B2"></p> </form>
et dans tableaux.php:
- si je met :
<? echo $nom; ?>
cela donne une erreure variable nom non definie
et meme en essayant :
<?
$nom = $_POST['nom'];
echo $nom;
j'ai la meme erreur
solution ? merci