Requete lors de confirmation d'inscription

kevin74 Messages postés 13 Statut Membre -  
 alain42 -
Bonjour,

En pleine création de l'inscription à mon futur jeu, j'ai un probleme.
En effet, je procede par la validation du compte, dans la BDD on definit l'état 1 par defaut, et lorsque le joueur a confirmer son inscription apres avoir cliqué sur le lien qu'il a reçut par email, le 1 devrait etre remplacé par un 2.

Voici mon script, si vous pouviez m'aider ce ne serait pas de refus :)

<?
mysql_connect("sql.free.fr", "eubeubeu", "lemotdepasse");
mysql_select_db("eubeubeu");

// test des variables
if (!isset($_GET['pseudo'], $_GET['cle']) ) {
// si les champs sont non renseignés on les demande
require ('http://eubeubeu.free.fr/celebrity-life/kev/Decembre07/Inscription/valide_formulaire.htm') ;
} else {
 
$pseudo = $_POST['pseudo'];
$cle = $_POST['cle'];
}
// on vérifie que tout est bon : clé, login et état
$query = mysql_query('SELECT * FROM `joueurs` WHERE cle = \''.$cle.'\' AND pseudo = \''.$pseudo.'\' AND etat = \'1\' LIMIT 1');
if(mysql_num_rows($query) == 1) {
mysql_query('UPDATE `joueurs` SET etat = 2 WHERE pseudo = '.$pseudo.' LIMIT 1');
echo 'Compte validé';
} else {
echo 'Clé invalide avec ce pseudo ou compte déjà activé';
require ('http://eubeubeu.free.fr/celebrity-life/kev/Decembre07/Inscription/valide_formulaire.htm');
}
?>


si vous avez besoin des autres pages, demandez moi ;)

Merci d'avance,

Kevin74
A voir également:

11 réponses

alain42
 
Bonsoir,

je t'ai corrigé un certain nombre d'erreurs :

Essayes comme ça:

<?php // tag php correct
mysql_connect("sql.free.fr", "eubeubeu", "lemotdepasse");
mysql_select_db("eubeubeu"); 

// test des variables
if (isset($_GET['pseudo']) AND isset($_GET['cle'])) { // le formulaire a été posté
	if ($_GET['pseudo']=="" OR $_GET['cle']==""){
		// si les champs sont non renseignés on les demande
		header('location:/Inscription/valide_formulaire.htm') ; // la tu mets le chemin relatif vers le fichier formulaire par rapport à ce script
	} else {
		$pseudo = $_POST['pseudo'];
		$cle = $_POST['cle'];
	}
	// on vérifie que tout est bon : clé, login et état
	$query = mysql_query("SELECT * FROM joueurs WHERE cle = '".$cle."' AND pseudo = '".$pseudo."' AND etat = '1' ");
	if(mysql_num_rows($query) == 1) {
		$modif=mysql_query("UPDATE joueurs SET etat = '2' WHERE pseudo = '".$pseudo."' ");
		if($modif){
		// si la requett a focntionné
			echo 'Compte validé';
		} else {
			echo 'Clé invalide avec ce pseudo ou compte déjà activé';
		header('location:/Inscription/valide_formulaire.htm') ; // la tu mets le chemin relatif vers le fichier formulaire par rapport à ce script
		}
	}
}
?>
0
seas
 
comment on fé pour enregistré lé donné d'un formulaire html sur la base de donnée ? (mysql)
0
kevin74 Messages postés 13 Statut Membre
 
alain42, je te remercie de ce script améliorer, mais l'aboutissement reste le même, le 1 ne veut pas devenir 2 :/
0
alain42
 
Salut,

je t'en ai refait un avec plus de traces, sur les erreurs eventuelles, fais bien attention que les noms de champs, dans ta base, dans ton formulaire, soit identique à ceux de ton script (majuscules/minuscules)

j'ai mis des else pour balayer tous les cas ou on ne trouve rien

Si ça ne marche pas donnes les erreurs renvoyées par le script.

<?php // tag php correct
mysql_connect("sql.free.fr", "eubeubeu", "lemotdepasse")or die ("Pb connexion au serveur ".mysql_error());
mysql_select_db("eubeubeu") or die ("Pb connexion a la base ".mysql_error()); 

// test des variables
if (isset($_GET['pseudo']) AND isset($_GET['cle'])) { // le formulaire a été posté
	if ($_GET['pseudo']=="" OR $_GET['cle']==""){
		// si les champs sont non renseignés on les demande
		header('location:/Inscription/valide_formulaire.htm') ; // la tu mets le chemin relatif vers le fichier formulaire par rapport à ce script
	} else {
		$pseudo = $_POST['pseudo'];
		$cle = $_POST['cle'];
		echo "pseudo reçu: ".$pseudo;"  cle reçue: ".$cle; // trace a enlever qd ça marchera
	}
	// on vérifie que tout est bon : clé, login et état
	$query = mysql_query("SELECT * FROM joueurs WHERE cle = '".$cle."' AND pseudo = '".$pseudo."' AND etat = '1' ") or die ("Pb requette SELECT ".mysql_error());
	if(mysql_num_rows($query) == 1) {
		$modif=mysql_query("UPDATE joueurs SET etat = '2' WHERE pseudo = '".$pseudo."' ") or die ("Pb requette UPDATE ".mysql_error());
		if($modif){
		// si la requette a fonctionné
			echo 'Compte validé';
		} else {
			echo 'Clé invalide avec ce pseudo ou compte déjà activé';
		header('location:/Inscription/valide_formulaire.htm') ; // la tu mets le chemin relatif vers le fichier formulaire par rapport à ce script
		}
	}else{
		// si on n'a pas trouve la paire pseudo  / cle
		echo "Pas de compte avec le pseudo $pseudo et la cle $cle trouv&eacute; dans la base";
	}
}else {

echo "Pb avec les valeurs du formulaire post&eacute; !";
}
?>


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kevin74 Messages postés 13 Statut Membre
 
Voilà ce que ça me met :/

pseudo reçu: Pas de compte avec le pseudo et la cle trouvé dans la base

merci quand même, j'apprecie ton aide,

Joyeuses fêtes !
0
alain42
 
Bonjour,

si tu as:

pseudo reçu: et rien comme pseudo à côté c'est que tu ne lis pas correctement la valeur du pseudo postée par ton fomulaire

dans ton formulaire as tu :

<input type="text" name="pseudo" ...
<input type="text" name="cle" ...

et pas Pseudo ou autre la casse est importante

$pseudo = $_POST['pseudo']; ne reçoit rien c'est pour cela que tu ne fais pas l'UPDATE correctement.

Bonnes fêtes
0
kevin74 Messages postés 13 Statut Membre
 
mon formulaire a bien ce même corps ;)

<?php

mysql_connect("sql.free.fr", "eubeubeu", "lemotdepasse");
mysql_select_db("eubeubeu");
?>
<center>
<form action="http://eubeubeu.free.fr/celebrity-life/kev/Decembre07/Inscription/valide.php" method="get">
pseudo <br><td><input type="text" name="pseudo"></td><br><br>

cle <br><input type="text" name="cle"></td>
<br><br><br>
<input type="submit" value="Valider le compte">
</form>
</center>

0
le père
 
Bonjour

$pseudo = $_POST['pseudo']; ne reçoit rien

Normal, le formulaire est envoyé avec la méthode GET.

Il faut mettre méthode = "POST" dans le formulaire et remplacer les $_GET par des $_POST dans le script d'analyse du formulaire
0
alain42
 
Ha ben oui,c'est ça le bug

je n'avais pas le code du formulaire.

@lain
0
kevin74 Messages postés 13 Statut Membre
 
Un grand merci ça fonctionne ! ;)

il fallait donc remplacer GET par POST dans le formulaire
et les $pseudo = $_POST['pseudo']; par $pseudo = $_GET['pseudo'];
0
alain42
 
Non non,

si tu mets method="post" dans le formulaire tu les récuperes dans ton script de traitement par $_POST['pseudo']

@lain
0