Formulaire d'inscription de l'espace membre

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Nous allons créer une nouvelle page nommé "auth-creer-compte.php" contenant le code de base suivant :  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Language" content="fr" />
<title>Créer un compte</title>
<link rel="stylesheet" href="auth-style-index.css" type="text/css" media="screen" />
<body>
 
<div id="centre">
 
<h1>Créer un compte</h1>
 
<p id="lien"><a href="index.php">Connexion</a> | <a href="auth-creer-compte.php">Créer un compte</a> | <a href="auth-identifiant-perdu.php">Identifiant perdu?</a></p>
</div>
 
<noscript><div id="erreur"><b>Votre navigateur ne prend pas en charge JavaScript!</b> Veuillez activer JavaScript afin de profiter pleinement du site.</div></noscript>
 
</body>
</html>
La première chose à faire, c'est de créer le formulaire d'inscription. Ce formulaire à placer sous le "h1" permettra d'enregistrer un pseudo, un mot de passe et un email. 
<form method="POST" action="#">
<label for="pseudo">Pseudo : </label><input type="text" name="pseudo" maxlength="20" value="<?php if (!empty($_POST["pseudo"])) { echo stripcslashes(htmlspecialchars($_POST["pseudo"],ENT_QUOTES)); } ?>" /><br/>
<label for="pass">Mot de Passe : </label><input type="password" name="motdepass" maxlength="20" value="<?php if (!empty($_POST["motdepass"])) { echo stripcslashes(htmlspecialchars($_POST["motdepass"],ENT_QUOTES)); } ?>" /><br/>
<label for="email">Email : </label><input type="text" name="email" maxlength="50" value="<?php if (!empty($_POST["email"])) { echo stripcslashes(htmlspecialchars($_POST["email"],ENT_QUOTES)); } ?>" /><br/>
<label for="action">Action : </label><input type="submit" name="Envoyer" value="Envoyer" />
<input name="Effacer" value="Effacer" type="reset" />
</form>
<br/>
Vous remarquerez que les valeurs de l'attribut "maxlength" correspondent aux valeurs déterminées des champs pseudo, pass et email de la BD (`pseudo` varchar(20) » maxlength="20").

Ensuite nous vérifions les champs un par un : 
<?php
if(isset($_POST['Envoyer'])){
    //si pseudo vide
    if(empty($_POST['pseudo'])){
        echo '<div id="erreur">Veuillez saisir un pseudo!</div>';
    }
    //si mot de passe vide
    else if(empty($_POST['motdepass'])){
        echo '<div id="erreur">Veuillez saisir un mot de passe!</div>';
    }
    //si l'email vide
    else if(empty($_POST['email'])){
        echo '<div id="erreur">Veuillez saisir un email!</div>';
    }
    //si l'email est invalide
    else if (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST['email'])){
        echo '<div id="erreur">Veuillez saisir un email valide!</div>';
    }
Les champs vérifiés, nous vérifions maintenant que le pseudo et l'email saisi ne sont pas déjà enregistré en BD. 
    //c'est ok
    else{
        include("auth-data_bd.php");
        connexion_bd();
        //On vérifie si le pseudo existe en bd
        $pseudo = mysql_query("SELECT pseudo FROM LOGIN WHERE pseudo='".mysql_real_escape_string(stripcslashes($_POST['pseudo']))."'") or die ('Erreur :'.mysql_error());
        if(mysql_num_rows($pseudo) != 0)
        {
            echo '<div id="erreur">Ce pseudo est déjà utilisé!</div>'; return false;
        }
        //on vérifie si le mail existe en bd
        $email = mysql_query("SELECT email FROM LOGIN WHERE email='".mysql_real_escape_string(stripcslashes($_POST['email']))."'") or die ('Erreur :'.mysql_error());
        if(mysql_num_rows($email) != 0)
        {
            echo '<div id="erreur">Cet email est déjà utilisé!</div>'; return false;
        }
Comme vous l'avez comprit, un pseudo ou un email ne pourra être utilisé qu'une seule fois.

Si tout est correcte, on enregistre les données : 
        //tout est ok		
		else{
		//date du jour
		$date=date("Y-m-d");
			// on enregistre les données
			$insert = mysql_query("INSERT INTO LOGIN VALUES ( '', '".mysql_real_escape_string(stripcslashes(utf8_decode($_POST['pseudo'])))."', '".mysql_real_escape_string(stripcslashes(utf8_decode($_POST['motdepass'])))."', '".mysql_real_escape_string(stripcslashes($_POST['email']))."', '".mysql_real_escape_string('0')."',  '".mysql_real_escape_string('0')."', '".mysql_real_escape_string($date)."' ) ");
			//Si il y a une erreur
			if (!$insert) {
				die('Requête invalide : ' . mysql_error());
			}
A ce stade, l'inscription est théoriquement réussit mais pour s'assurer que l'email saisi par l'utilisateur est correcte, on envoie un email à celui-ci pour confirmer son inscription. Cette confirmation permettra également de mettre à jour le champ "valide" qui est pour le moment à "0" et que l'on fera passer à "1" pour confirmer l'inscription de celui-ci.
			//pas d'erreur d'enregistrement, on envoie un mail de confirmation
			else {
				//email de celui qui envoie
				$webmaster = $email_webmaster;
				//email de celui qui reçoit
				$a_qui_j_envoie = $_POST['email'];
				//sujet
				$subject = "Valider votre inscription";
				//message   
				$msg  = "Bonjour ".stripcslashes($_POST['pseudo'])."<br/><br/>";
				$msg .= "Veuillez confirmer votre inscription en cliquant sur le lien ci-joint <a href=\"http://".$_SERVER['HTTP_HOST']."/authentification/auth-confirmation.php?pseudo=".stripcslashes($_POST['pseudo'])."&email=".$_POST['email']."\">Confirmation</a><br/>";
				$msg .= "Cordialement";
				//permet de savoir qui envoie le mail et d'y répondre
				$mailheaders = "From: $webmaster\n";
				$mailheaders .= "MIME-version: 1.0\n";
				$mailheaders .= "Content-type: text/html; charset= iso-8859-1\n";
				//on envoie l'email
				mail($a_qui_j_envoie, $subject, $msg, $mailheaders);
Le mail est théoriquement envoyé, on informe donc l'utilisateur et on le redirige vers le futur formulaire de connexion puis on cloture le tout.
                //confirmation et redirection
                echo '<div id="ok">Inscription réussit. Un message vous a été envoyé sur votre boîte email pour valider votre inscription.</div>                         <script type="text/javascript"> window.setTimeout("location=(\'index.php?conf=ok\');",3000) </script>';
            }      
        }               
        close_bd();   
    }
}
?>
La redirection faite en Javascript "index.php?conf=ok" pointe vers la futur page de connexion "index.php" et contient une variable nommé "conf" qui a pour valeur "ok". Cette variable nous permettra par la suite d'afficher un message à destination de l'utilisateur.
Voir/déposer un commentaire (7) | Signaler un problème