Probleme formulaire du au submit

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 formulaire du au submit

par Victor BRITO » 19 mai 2009, 20:00

Pour mysql_real_escape_string() , tu me l'as expliqué sur l'autre topic, vais regarder des exemples pour comprendre comment l'appliquer a mon code. Car j'avoue que pour le moment sur ce que j'ai lu, pas compris grand chose a part son fonctionnement xD
L'essentiel de cette fonction (et des requêtes préparées de PDO) est de se prémunir des attaques par injection SQL (Wikipédia est d'autant plus ton ami qu'il fournit un exemple tout à fait parlant ;) ).

par Ariochs » 19 mai 2009, 14:10

Marche pas non plus, mais pas grave, vais enlever le esle.

Merci pour l'aide.

Pour mysql_real_escape_string() , tu me l'as expliqué sur l'autre topic, vais regarder des exemples pour comprendre comment l'appliquer a mon code. Car j'avoue que pour le moment sur ce que j'ai lu, pas compris grand chose a part son fonctionnement xD

par stopher » 19 mai 2009, 13:55

Quelque chose du genre
if(!empty($_POST['rapport_nom']) && !empty($_POST['rapport_societe']) && !empty($_POST['rapport_mail'])){
			
			$rapport_nom = $_POST['rapport_nom'];
			$rapport_societe = $_POST['rapport_societe'];
			$rapport_mail = $_POST['rapport_mail'];
			$sql = "INSERT INTO rapport (nom, societe, mail) VALUES ('$rapport_nom', '$rapport_societe', '$rapport_mail')";
}
Seul problème c'est que si j'ai un champ un champ vide, il n'affiche pas d'erreur, car si je laisse :
else{
	echo "<div id='erreur'>Erreur : Merci de remplir tout les champs</div>";
}
Il affiche l'erreur direct dès le chargement de la page..
Dans ce cas , tu le fais dans le sens inverse ...

if( empty($_POST['rapport_nom']) || empty($_POST['rapport_societe']) || empty($_POST['rapport_mail'])){
			
			echo "<div id='erreur'>Erreur : Merci de remplir tout les champs</div>";
}else{

     ... traitement ... 

}

par stopher » 19 mai 2009, 13:53

Attention , n'oublies pas d'échapper tes données avant d'exécuter ta requête :

Regarde du cote de la fonction mysql_real_escape_string() , ou PDO avec les requetes préparées .

Je te conseil vivement de ne pas insérer tes données en brute ( peu importe de la provenance ).

par Ariochs » 19 mai 2009, 13:50

Quelque chose du genre
if(!empty($_POST['rapport_nom']) && !empty($_POST['rapport_societe']) && !empty($_POST['rapport_mail'])){
			
			$rapport_nom = $_POST['rapport_nom'];
			$rapport_societe = $_POST['rapport_societe'];
			$rapport_mail = $_POST['rapport_mail'];
			$sql = "INSERT INTO rapport (nom, societe, mail) VALUES ('$rapport_nom', '$rapport_societe', '$rapport_mail')";
}
Seul problème c'est que si j'ai un champ un champ vide, il n'affiche pas d'erreur, car si je laisse :
else{
	echo "<div id='erreur'>Erreur : Merci de remplir tout les champs</div>";
}
Il affiche l'erreur direct dès le chargement de la page..

par stopher » 19 mai 2009, 13:41

Oui effectivement j'utilise cette façon pour mon php
if(isset($_POST['rapport_ok'])){
traitement
}
Quel serait donc la solution ?
Une solution serait de tester les champs qui selon toi sont obligatoires :

exemple : ( si tu souhaites toujours les trois au minimum )
if(      !empty( $_POST['rapport_nom'] )
    && !empty( $_POST['rapport_societe'] )
    && !empty( $_POST['rapport_mail'] ) ) {

... traitement ...

}
Voilà .. maintenant , celà dépend de ce que tu veux .. tu peux n'en tester qu'un ..

Ch.

par Ariochs » 19 mai 2009, 13:25

Oui effectivement j'utilise cette façon pour mon php
if(isset($_POST['rapport_ok'])){
traitement
}
Quel serait donc la solution ?

par geoffroy » 19 mai 2009, 12:32

A vrai dire je ne connaissais même pas la balise <input type="image" />,
donc je suis allé voir :o .
Mais je pense que c'est normal qu'il n'y ai pas de $_POST['rapport_ok'] définie,
comme il n'y en a pas avec un bouton classique de type submit.
Après, je ne suis pas sûr.

par stopher » 19 mai 2009, 12:26

Effectivement , j'ai été trop vite en disant qu'il ne renvoie rien ...

Il renvoi effectivement x et y sous les noms :

* rapport_ok_y
* rapport_ok_x

Mais rien sous le nom rapport_ok , cette clef n'existe pas dans le tableau POST

J'ai testé le formulaire ( sans le JS ) et voilà ce que renvoi le tableau POST :

Code : Tout sélectionner

array(5) { ["rapport_nom"]=> string(16) "Entrez votre nom" ["rapport_societe"]=> string(32) "Entrez le nom de votre société" ["rapport_mail"]=> string(19) "Entrez votre e-mail" ["rapport_ok_x"]=> string(0) "" ["rapport_ok_y"]=> string(0) "" }

par geoffroy » 19 mai 2009, 12:21

euh .. un bouton <input type="image" /> renvoie des données POST avec en plus les coordonnées x,y du clic.
Ca devrait marcher je pense ...
Sinon tu peux faire un bouton "submit" stylé en css.

par stopher » 19 mai 2009, 12:00

Salut ,

Ton formulaire se "POST" bien ? ( lorsque tu cliques , ta page est bien envoyé , rechargement de la page ou nouvelle page .. )

Quels sont les tests que tu fais pour voir si ton formulaire a bien été validé ?

Car à la différence d'un boutton submit , une image , ne renvoie pas de donnée POST , même pas vide .. alors que le boutton submit lui oui !

Donc , si pour valider ton formulaire , tu utilises un code du style :
if( !empty( $_POST['rapport_ok'] ) {
   ... traitement du formulaire ...
}
Ca ne fonctionnera jamais ave l'image , qui ne renvoi rien ..

Je pense que ton problème est là .. non ? :)

Ch.

Probleme formulaire du au submit

par Ariochs » 19 mai 2009, 11:44

Bonjour.

Bon voila j'ai un petit problème pour envoyer les informations de mon formulaire dans ma BDD. Niveau PHP c'est bon. Le probleme c'est que j'ai changé la forme de mon bouton, par des images.

Mais du coup, les données ne s'envoie plus..

Voici le code :

Code : Tout sélectionner

<form method="post" action="index.php"> <input class="news_nom" type="text" name="rapport_nom" value="Entrez votre nom"/> <input class="news_societe" type="text" name="rapport_societe" value="Entrez le nom de votre société"/> <input class="news_mail" type="text" name="rapport_mail" value="Entrez votre e-mail"/> <input class="news_valid" type="image" src="images/bouton_valid.jpg" name="rapport_ok" onmouseover="this.src='images/bouton_valid_mouse.jpg'" onmouseout="this.src='images/bouton_valid.jpg'" alt="Inscription Newsletter"/> </form>
Le type de mon bouton est en image (normal vu que je le change), si je le passe en "submit" tout fonctionne (a part le fait que mon bouton n'a pas la forme voulu xD). Comment puis je faire pour que ça fonctionne ?

Merci pour votre aide