Tutoriel PHP – Créer un espace membre #1 – Formulaire d’inscription

 

Bienvenue dans cette nouvelle série de tutoriels PHP consacrée à la réalisation d’un espace membre. Il s’agira d’un espace membre simple, sans notion de programmation orientée objet et sans architecture de fichiers, afin qu’il puisse être suivi par un maximum de personnes. Le code que vous allez voir ici n’est pas un code « propre » car il s’agit du code le plus simple pour débuter. Ce premier épisode porte sur la création du système d’inscription, et il  sera suivi du tuto sur le système de connexion et de celui sur la page de profil. Je ferai également une vidéo sur la réorganisation du code pour les personnes intéressées. Il sera alors question de réagencer ce qui a été développé pour une meilleure organisation. Ce tuto a pour but de pouvoir être utilisé comme base pour d’autres tutoriels à venir, comme un système de commentaires ou encore un système d’envoi d’emails.

 

Création du formulaire HTML

Commençons par créer le formulaire HTML de base, ce qui sera la porte d’entrée de notre espace membre. Pour de meilleurs résultats visuels, il est préférable de l’incorporer dans un tableau. On choisira la méthode POST pour l’envoi des données et le formulaire agira sur le fichier lui-même. On laisse donc vide la valeur de l’attribut « action ».

<form method="POST" action="">

	<table>

		<tr>
			<td>
				<label>Votre Email :</label>
			</td>
			<td>
				<input type="email" name="email">
			</td>
		</tr>

		<tr>
			<td>
				<label>Choisissez un pseudo :</label>
			</td>
			<td>
				<input type="text" name="username">
			</td>
		</tr>

		<tr>
			<td>
				<label>Choisissez un mot de passe :</label>
			</td>
			<td>
				<input type="password" name="password">
			</td>
		</tr>

		<tr>
			<td>
				<label>Confirmez votre mot de passe :</label>
			</td>
			<td>
				<input type="password" name="password_confirm">
			</td>
		</tr>

		<tr><td></td></tr>

		<tr>
			<td></td>
			<td>
				<button type="submit" name="confirm_register">S'inscrire</button>
			</td>
		</tr>

	</table>

</form>

 

Traitement en PHP

On va commencer par créer et initialiser la connexion à la base de donnée. Je l’ai ici appelée « espace membre« . Vous retrouverez le fichier contenant la structure de la base toute faite dans la zone téléchargement.

Il nous faut maintenant arriver à traiter les données entrées en PHP. Pour cela, nous allons effectuer certaines vérifications que l’on va emboîter :

  • On vérifie que la variable POST du bouton est bien envoyée (L’utilisateur a appuyé sur le bouton)
  • On simplifie les variables et on les sécurise grâce aux fonctions trim() et htmlspecialchars()
  • On vérifie que la longueur de l’email soit inférieure à 255 caractères et qu’il soit valide grace à filter_var()
  • On vérifie que la longueur du pseudo soit comprise entre 3 et 255 caractères compris (vous pouvez modulez ces valeurs à condition de rester inférieur à la limite configurée dans la base de données)
  • On vérifie que le mot de passe comporte entre 8 et 255 caractères compris (idem, vous pouvez moduler les valeurs min. et max.)
  • On crypte le mot de passe (ici le sha1 est utilisé, mais il est possible (et même recommandé) d’utiliser des systèmes de cryptage beaucoup plus sûrs)
  • On effectue une requête préparée qu’on exécute.
  • Pour toutes les conditions non validées, on affiche des erreurs grâce à la variable $error (et également pour prévenir l’utilisateur qu’il a réussi à créer son compte)

 

Traduisons maintenant tout cela en code PHP :

<?php

// On se connecte la BDD
$bdd = new PDO("mysql:host=127.0.0.1;dbname=tuto_espace_membre;charset=utf8", "root", "");

// On commence les vérifications
if(isset($_POST['confirm_register'])) {

	if(isset($_POST['email']) AND isset($_POST['username']) AND isset($_POST['password']) AND isset($_POST['password_confirm'])) {
		if(!empty($_POST['email']) AND !empty($_POST['username']) AND !empty($_POST['password']) AND !empty($_POST['password_confirm'])) {

			$email = trim(htmlspecialchars($_POST['email']));
			$username = trim(htmlspecialchars($_POST['username']));
			$password = htmlspecialchars($_POST['password']);
			$password_confirm = trim(htmlspecialchars($_POST['password_confirm']));

			if(strlen($email) <= 255) {
				if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
					if(strlen($username) >= 3 AND strlen($username) <= 255) {
						if(strlen($password) >= 8 AND strlen($password) <= 100) {
							if($password == $password_confirm) {

								$password_crypted = sha1($password);

								$req = $bdd->prepare("INSERT INTO users (pseudo, email, password) VALUES (?,?,?)");
								$req->execute(array($username, $email, $password_crypted));

								$error = "Votre compte a été créé avec succès !";

							} else {
								$error = "Vos mots de passes ne correspondent pas";
							}
						} else {
							$error = "Votre mot de passe doit comporter entre 8 et 100 caractères";
						}
					} else {
						$error = "Votre pseudo doit comporter entre 3 et 255 caractères";
					}
				} else {
					$error = "Votre email a un format incorrect";
				}
			} else {
				$error = "Votre email doit faire moins de 255 caractères";
			}


		} else {
			$error = "Veuillez remplir tous les champs";
		}
	}
}

?>

 

Il ne faut pas oublier d’ajouter une ligne sous le tableau pour afficher les éventuelles erreurs :

<?php if(isset($error)) { echo $error; } ?>

 

Voilà ! j’espère que cet épisode vous a plu et on se retrouve très bientôt dans le tutoriel consacré à la connexion !

 

Icon téléchargements

Partagez cette vidéo !

Leave Comment