Sondage :

Publicité




Partenaires




Jmax-Hardware

mxdev.net

feedburner
donate.gif


91 visiteur(s) en ligne
Forums d'entraide informatique - Les forums de PCW
[Résolu] Problème de script de sondage - Version imprimable

+- Forums d'entraide informatique - Les forums de PCW (http://forum.pcinfo-web.com)
+-- Forum : Forum Informatique (/forumdisplay.php?fid=39)
+--- Forum : Internet - Navigation -Programmation - Scripts - Developpement (/forumdisplay.php?fid=8)
+--- Discussion : [Résolu] Problème de script de sondage (/showthread.php?tid=2385)

Pages : 1 2


[Résolu]Problème de script de sondage - Toto - 28-05-2008 12:42 PM

Bonjour, j'ai décidé de me lancer dans un script de sondage, malheureusement, il ne fonctionne pas. Pourquoi? Je vous le demande Smile

Page Index.php

<form method="post" action="form.php" enctype="multipart/form-data">
<select name="choix" id="choix">
<option value=""></option>
<option value="Choix1">Choix1</option>
<option value="Choix2">Choix2</option>
<option value="Choix3">Choix3</option>
</select>
<p><input type="submit" value="Valider" /></p>
</form>
</body>
</html>
</div>



Page form.php

<?php

if (empty($_POST['choix']))
{
echo 'Vous n\'avez pas sélectionné de choix. Cliquez AJOUTER JS ici pour revenir a la page.';
}
else
{
if ($_POST['choix'] == Choix1)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('".$_POST['choix']."', '', '')");
mysql_close();
}
elseif ($_POST['choix'] == Choix2)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '".$_POST['choix']."', '')");
mysql_close();
}
else ($_POST['choix'] == Choix3)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '', '".$_POST['choix']."')");
mysql_close();
}
}
?>
</div>
</body>
</html>



J'obtient un message d'erreur:

Parse error: syntax error, unexpected '{' in C:\wamp\www\techno\form.php on line 24

Lignes 23, 24, et 25:


23: else ($_POST['choix'] == Choix3)
24: {
25: mysql_connect("localhost", "root", "");



Merci de m'aider Smile


- Troll - 28-05-2008 14:32 PM

Salut Toto,

Si je puis me permettre, quelques habitudes à prendre qui vont changer ta vie...

1°) Ne pas remettre les trois fonctions "mysql_close()" mysql_connect() et mysql_select_db() à chaque fois.
Pour la connexion, tu mets les fonctions "mysql_connect()" et mysql_select_db dans un fichier, que tu inclueras au début de ton fichier. Et à la fin de ton fichier tu mets la déconnexion mysql_close()


2°) Indentes ton code, là c'est illisible et donc impossible de voir les fautes, voici ton code indenté correctement :



if (empty($_POST['choix']))
{
echo 'Vous n\'avez pas sélectionné de choix. Cliquez AJOUTER JS ici pour revenir a la page.';
}
else
{
if ($_POST['choix'] == Choix1)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('".$_POST['choix']."', '', '')");
mysql_close();
}
elseif ($_POST['choix'] == Choix2)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '".$_POST['choix']."', '')");
mysql_close();
}
else ($_POST['choix'] == Choix3)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '', '".$_POST['choix']."')");
mysql_close();
}
}



Ensuite encore, n'écrit pas :


	else ($_POST['choix'] == Choix3)



Mais :


	else ($_POST['choix'] == "Choix3")




Enfin, pour ton erreur, soit elle vient de cet oublie de guillemets, soit elle vient du fait que tu dois avoir un " ou un ' dans la variable $_POST['choix']

Ce qui fait que ca fait sortir PHP de la chaine de requete, et planter le code.

De plus c'est très dangereux, ca s'appelle des injections SQL c'est à dire que je peux envoyer à ton script ceci :



CHOIX 1') UNION SELECT motdepasse FROM users WHERE rank = 'admin'



Et en supposant que les tables users et les champs "modepasse" et "rank" existent, j'aurai obtenu ton mot de passe !

Il faut donc faire :



//On vire tout ce qui pourrait planter la requete, attention il faut déjà être connecté à la bdd ! (mysql_connect())
$insertion = mysql_real_escape_string($_POST['choix']);
mysql_query(....".$insertion.");




Voilou Wink

NB : C'est pas simple un bon script de sondage, surtout pour le protéger, crois-moi !


- -Sh4D0w- - 28-05-2008 14:44 PM

fais attention au failles SQL


- Toto - 29-05-2008 09:11 AM

Salut, merci de ta réponse, mais ca ne marche toujours pas Sad


- Troll - 29-05-2008 20:03 PM

Le code que tu nous as donné, c'est le code entier de ta page ?

Tu peux nous poster tout le code, après tes modifications ?

Et aussi tu envoies quelle valeur à "$_POST['choix']" ?


- Toto - 31-05-2008 12:02 PM

C'est bon c'est réglé Wink


- Troll - 01-06-2008 12:22 PM

Euh voui mais on aimerait quand même bien savoir comment :mrgreen:


- Toto - 01-06-2008 12:58 PM

J'ai remplacé else par elseif


else ($_POST['choix'] == Choix3)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '', '".$_POST['choix']."')");
mysql_close();
}


=


elseif ($_POST['choix'] == Choix3)
{
mysql_connect("localhost", "root", "");
mysql_select_db("nomdelabase");
mysql_query("INSERT INTO nomdelatable VALUES ('', '', '".$_POST['choix']."')");
mysql_close();
}




- Troll - 01-06-2008 13:39 PM

Oh putain oui je n'avais même pas fait attention que tu avais mis des parenthèses de condition après le else ! Fatigué moi ><


- Toto - 01-06-2008 13:42 PM

Bref j'ai réussi a faire tout ce que je voulais, je suis content, c'est mon premier script sans aide que je réussi (j'ai pas pu aller sur le sdz, j'ai fait ca sans connexion internet Big Grin )

Ce que j'ai fait, même pour l'affichage des votes, je suis sur qu'il y avait plus simple mais bon.. xD