Problème page d'inscription

Résolu/Fermé
Signaler
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
-
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
-
Bonjour, je suis en train de développer un site et j'ai un petit problème. Je fais ma page d'inscription normal, et là, ca ne m'affiche rien, juste les graphismes de mon site. Et même avec un mysql_error() ca n'affiche toujours rien. J'ai donc testé avec un autre site que j'avais développé il y a de cela quelques temps et là, ca me met les erreurs.
Voici le code :
if(isset($_POST['inscription']))
{

$pseudo = htmlspecialchars(addslashes($_POST['pseudo']));
$password = htmlspecialchars(addslashes(md5($_POST['password'])));
$password2 = htmlspecialchars(addslashes(md5($_POST['password2'])));
$email = htmlspecialchars(addslashes($_POST['email']));
$email2 = htmlspecialchars(addslashes($_POST['email2']));
$question = htmlspecialchars(addslashes($_POST['question']));
$question2 = htmlspecialchars(addslashes($_POST['question2']));


$res  = mysql_query("SELECT COUNT(*) FROM comptes WHERE pseudo = '".mysql_real_escape_string($pseudo)."'") or die(mysql_error());
$test_pseudo_row = mysql_fetch_row($res);
$test_pseudo = $test_pseudo_row[0];

$res_email  = mysql_query("SELECT COUNT(*) FROM comptes WHERE email = '".mysql_real_escape_string($email)."'") or die(mysql_error());
$test_email_row = mysql_fetch_row($res_email);
$test_email = $test_email_row[0];

if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) AND preg_match("#[^a-z0-9éèêàâîôûù]#i", $_POST['pseudo']) == FALSE AND $email == $email2 AND $password == true AND $password == $password2 AND $pseudo == true AND $email == true AND $test_pseudo == 0 AND $question == true AND $question2 == true AND $test_email['email'] == 0)
{

$query = mysql_query("INSERT INTO comptes VALUES('', '".$pseudo."', '".$password."', '".$password2."', '".$email."', '".$email2."', '".$question."', '".$question2."', '', '')") or die(mysql_error());
}

else if (preg_match("#[^a-z0-9éèêàâîôûù]#i", $_POST['pseudo']) OR $email != $email2 OR $password != $password2 OR $pseudo == false OR $email == false OR $email2 == false OR $password == false OR $password2 == false OR $question == false OR $question2 == false)
{
echo '<center>Votre compte n\'a pas été créé. Une ou plusieurs de ces raison(s) peuve(nt) en être la(les) cause(s) : <br />
Vos mots de passes sont différents.<br />
Vous n\'avez pas indiqué soit le premier, soit le deuxième mot de passe.<br />
Vous n\'avez pas indiqué votre email.<br />
Votre email n\'est pas valide.<br />
Vous n\'avez pas indiqué votre pseudo.<br />
Vous n\'avez pas choisi de question ou de réponse.<br />
Il y a des caractères spéciaux dans votre pseudo (les accents sont autorisés).<br />
<b><a href="formulaire.php">Cliquez ici pour retourner au formulaire d\'inscription</a></b></center>';
}

else if ($test_pseudo != 0)
{
echo '<p align=center>Le pseudo <strong> '.htmlspecialchars(stripslashes($_POST['pseudo'])).' </strong> est déjà utilisé. Veuillez en choisir un autre.<br />
<b><a href="formulaire.php">Cliquez ici pour retourner au formulaire d\'inscription</a></b></p>';
}

else if ($test_email != 0)
{
echo '<center><L\'email <strong> '.htmlspecialchars(stripslashes($_POST['pseudo'])).' </strong> est déjà utilisée. Veuillez en choisir une autre.<br />
<b><a href="formulaire.php">Cliquez ici pour retourner au formulaire d\'inscription</a></b></center>';
}


Merci de bien vouloir m'aider.

13 réponses

Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
Pas le temps de vérifier, mais ... ne faut il pas ajouter le ";" en fin de requête ?
Un truc genre

mysql_db_query("dbname","select * from comptes ;");

En même temps, je comprends pas pourquoi tu n'aurais pas d'erreur...
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
17
Je les ais mis les ";" en fin de requête...
Messages postés
18614
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2021
4 336
Dans le code que tu nous donnes, il n'y a aucun formulaire, juste le traitement en PHP ; donne le script complet (colle-le plutôt sur http://paste.pocoo.org/ et passe l'adresse pour le voir)
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
mysql_query("SELECT COUNT(*) FROM comptes WHERE pseudo = '".mysql_real_escape_string($pseudo)."'")

Je le vois pas le ;

mysql_query("SELECT COUNT(*) FROM comptes WHERE pseudo = '".mysql_real_escape_string($pseudo)." ' ; ")

Je peux pas tester là, pas l'temps... j'ai toujours pensé qu'il était impératif de le mettre.
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
17
il est après le mysql_error
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
Euh... oublie ce que j'ai écris ;)
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
17
Mdr, alors, quelqu'un peut m'aider plz ?
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
17
En fait j'ai résolu le problème. Ne me demandez pas comment, j'ai juste ajouté un mysql_error() après le mysql_fetch_row et ca a marché tout de suite.
C'est quand même bizzare...
Messages postés
18614
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2021
4 336
C'est que ce n'est pas vraiment la solution, même si "ça fonctionne".
Pour G1fo, il n'y a pas besoin de ";" dans une requête SQL avec mysql_query
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
Exact, j'ai vu ça ^^
Messages postés
18614
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2021
4 336
Tu as sans doute parlé de ça car PhpMyAdmin le fait lorsqu'il y a plusieurs requêtes SQL à faire.
$sql = explode(';', $_POST['sql']);
foreach($sql as $k => $v) {
    mysql_query($v);
}
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
Ou parce que mysql_db_query() est une fonction obsolète et que je suis un vieux crouton décrépi ;-p

Messages postés
18614
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
28 novembre 2021
4 336
J'espère que ton hébergeur va vite passer à PHP6 comme ça tu seras obligé de te mettre à jour :)
Messages postés
100
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 février 2010
7
Héhé trop vrai