Forums d'entraide informatique - Les forums de PCW

Version complète : Problème de script de sondage
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
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

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 !

fais attention au failles SQL
Salut, merci de ta réponse, mais ca ne marche toujours pas Sad
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']" ?
C'est bon c'est réglé Wink
Euh voui mais on aimerait quand même bien savoir comment :mrgreen:
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();
}

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 ><
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
Pages : 1 2
URLs de référence