Page 1 sur 1

Script d'inscription (MySQL / PHP)

Posté : 28 avr. 2013, 14:11
par toss
Bonjour, j'ai fait un petit script d'inscription (Pseudo et mot de passe, qui recupere les valeurs d'un formulaire) pour les enregistrer dans une BDD SQL.

Seul soucis, un meme pseudo pourra s'enregistrer plusieurs fois. J'ai utilisé la méthode COUNT de MySQL, mais ca n'a pas l'air de fonctionner et je tourne en rond...
J'ai indique ou est le probleme dans le script
Je copie le script:
<?php

	try
	{
		$bdd = new PDO('mysql:host=localhost;dbname=madb', 'root', '');      // On se connecte à la base SQL
	}	
	catch(Exception $e)
	{
	die('Erreur : '.$e->getMessage());
}


if(!isset($_POST['pseudo']) OR !isset($_POST['password1']) OR !isset($_POST['password2']))   // Ici je verifie que les champs sont tous remplis
{
    header('Location: inscription.php');    // Si non, on est redirigé vers le formulaire
	
} else {                       // Si oui on verifie que les mdps sont identiques

			if($_POST['password1'] === $_POST['password2'])
			{
				$username = $_POST['pseudo'];
				$password = sha1($_POST['password1']);

                           // S'ils sont identique on verifie que le pseudo n'est pas pris (LE PROBLEME EST ICI)
				
                $dn = mysql_num_rows(mysql_query('SELECT id FROM user_launcher WHERE username="'.$username.'"'));
				
				if ($dn==1)
					{
						// Pseudo existe deja
                                           header('Location: index.php'); 
					} else {
					

					// Pseudo n'existe pas, on l'enregistre

				try
				{
					$sql = 'INSERT INTO user_launcher(username, password) VALUES (:username, :password)';
					$req= $bdd->prepare($sql);
					$req->execute(array(
						'username' => $username,
						'password' => $password,
										)
								);
					$data = $req->fetch();
				}
					catch(Exception $e)
			{
				echo 'Erreur dans la base de données.';
			}
							
						
						header('Location: inscription_valide.php'); 

							}
			} else {  // Si les 2 mots de passes ne correspondent pas, on est redirigé vers le formulaire

			header('Location: formulaire.php'); 
			}
			
       }
?>

Re: Script d'inscription (MySQL / PHP)

Posté : 28 avr. 2013, 15:08
par yann18
bonjour,
tu mélanges l'extension mysql à pdo.Revois ta requête qui effectue la vérification des utilisateurs:
  
$sth = $bdd->prepare( "SELECT count(id) as nb FROM user_launcher WHERE username =:username ");
$sth->execute(array(':username'=>$username));

$nbColonnes= $sth->fetchColumn();
if ($nbColonnes == 1) 
// ok user existe déjà
else //n'existe pas ok


Re: Script d'inscription (MySQL / PHP)

Posté : 28 avr. 2013, 15:38
par toss
Merci de ton aide c'est sympa. Je pourrais avoir un éclaircissement sur:

Code : Tout sélectionner

$nbColonnes= $sth->fetchColumn();
Je n'ai jamais utilisé ces fonctions

Re: Script d'inscription (MySQL / PHP)

Posté : 28 avr. 2013, 16:41
par yann18
$nbColonnes= $sth->fetchColumn();
fetchColumn() récupère la première colonne des données sélectionnées dans la requête dans ton cas il s'agira de récupérer le nombre d'utilisateurs(avec count(id) ) dont le login vérifie la clause WHERE de la requête.

autre alternative à fetchColomn():
 $sth = $bdd->prepare( "SELECT count(id) as nb FROM user_launcher WHERE username =:username ");
$sth->execute(array(':username'=>$username));

$data= $sth->fetch();
if ($data['nb'] == 1)
// ok user existe déjà donc ajout impossible
else //user n'existe pas donc ajout possible