Accueil
Forums
Turoriaux
Inscription
Connexion
Fil RSS
Bienvenue invité !
Samedi 22 Novembre 2008
Vous êtes ici: Crea-paradise.com > Tutoriaux > Conception web > PHP > Créer un espace membre > Inscription (2è partie)

Inscription (2è partie)



Informations sur le tutorial
Image du tutorial Auteur : [Toxik] Commentaires : 7
Note : Note: 4/5 Vu : 2805
Date : 25/08/2007 à 23h34 Actions : Commenter et noter ce tutorial
Dernière modification : 16/09/2007 à 19h12


Cette partie est autrement plus intéressante, par le fait qu'on ne traitera que du PHP brut Du coup, je devrais vous expliquer en détails chaque partie pour que vous comprenez bien. Donc elle sera longue, mais pas ennuyeuse 

Commençons !

_________________


La première chose à faire c'est de savoir si l'utilisateur à bien rempli tous les champs (sinon, l'inscription est impossible !). Pour ça, il y a plusieurs méthodes (que je vais vous présenter  ) :

  • !empty
  • NULL


Je vais commencer par vous expliquer le fonctionnement de !empty.

Question
Euh.. Pourquoi y'a un point d'exclamation devant le nom de la fonction  ?


C'est très simple : la fonction empty sert à savoir si une variable est vide (si elle ne contient rien). Donc mettre !empty revient à savoir si la variable contient quelque chose ! En clair, mettre la condition

Code PHP:
if (!empty($_POST['pseudo'])


Reviens à dire : SI la variable $_POST['pseudo'] contient quelque chose, ALORS...



Ensuite, NULL. NULL sert tout simplement à savoir si une variable est nulle, donc si elle ne contient rien. Vous devinez donc que faire !NULL reviens à faire !empty.

Attention
Si vous faites une condition comme ceci :

Code PHP:
if ($variable == NULL)
Cela veut dire "Si la variable ne contient rien". En revanche, écrire :

Code PHP:
$variable = NULL;

Reviens à définir une variable, en ne lui donnant aucune valeur, comme si elle ne valait rien (même pas 0).


Personnellement, je préfère utilisez !empty, donc je l'utiliserai dans mes codes (mais rien ne vous empêche d'utiliser !NULL), car c'est plus rapide. Utiliser !empty sert à vérifier si la variable existe et contient quelque chose, alors que !NULL ne sert qu'à vérifier si la variable contient quelque chose.
La première chose à faire est de vérifier que les variables existent et contiennent bien quelque chose :

Code PHP:
if (!empty($_POST['pseudo']) && !empty($_POST['email']))
{


Maintenant qu'on sait que l'utilisateur à bien entré des données, on vérifie que l'email n'est pas erroné.

Question
Euh... Comment peut-on faire ça ? 


Alors là, c'est assez compliqué et complexe. C'est pour ça que je vous demanderai de recopier juste cette ligne, sans me demander ce qu'elle veux dire (elle fera sans doute l'objet d'un tuto, qui sait  ) :

Code PHP:
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-].[a-z]$#", $_POST['email']))
{


Ensuite, quelque chose d'une importance capitale : se connecter à la base de données. Si vous ne savez pas ce que c'est, ce n'est pas grave. Vous pouvez tout simplement attendre que je finisse d'écrire le tutorial dessus pour pouvoir apprendre en douceur  . Si vous savez ce que c'est, vous pouvez continuer.
La connexion va être dans un fichier à part (comme ça, si vous changez d'hébergeur, vous n'avez qu'à modifier ce fichier). Il s'appellera "mysql_connect.php" :


Mysql_connect.php
Code PHP:
<?php
mysql_connect("localhost", "votrelogin", "votremotdepasse");
mysql_select_db("votreBDD");
?>


On va maintenant l'inclure dans la page en question :

Code PHP:
include("mysql_connect.php");


On continues avec la vérification de l'adresse email.

Question
Mais on l'a déjà fait, nan ?


Ce n'est pas la même  . Celle que nous allons faire maintenant, c'est celle qui vérifies que l'adresse email n'existe pas déjà (ce qui limite à : 1 compte/email) avec une requête tout simple :

Code PHP:
$test = mysql_query("SELECT COUNT(*) AS nb_email FROM membres WHERE email = '".$_POST['email']."'");
$testA = mysql_fetch_array($test);


Avant de continuer, je veux que vous sachiez que je ne vous impose absolument pas le nom des variables. Ici, j'ai mis "$test" et "$testA", mais vous pouvez mettre ce que vous voulez. Attention quand même de ne pas vous mélanger.

On vérifies maintenant que l'adresse n'existe pas :

Code PHP:
if ($testA['nb_email'] != 1)
{

Une condition simple qui vérifies que le nombre d'adresses égales à l'adresse email entrée par le visiteur n'est pas égal à un.

Maintenant, je vais faire quelque chose que je vous conseille de faire, mais qui n'est pas obligatoire :

Code PHP:
$pseudo = htmlspecialchars($_POST['pseudo']);
$email = htmlspecialchars($_POST['email']);


La fonction htmlspecialchars permet de rendre le HTML inoffensif (en clair, c'est une protection), et puis on a rendu plus court le nom des variables (ça ne sert à rien, mais ça sera plus rapide à écrire  ) Maintenant, une autre vérification : le pseudo du futur inscrit existe-t-il  déjà ?

Code PHP:
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo = '" . $pseudo . "'");
$ech = mysql_fetch_array($sql);


La requête est simple, on a déjà vu pire. On sélectionne donc le nombre de pseudos qui sont égaux au pseudo que le futur inscrit a entré. Ensuite, vient la condition :

Code PHP:
if ($ech['nb_pseudo'] == 0)
{


Je vous rassure, on a pris toutes les mesures de sécurité possible  . On va pouvoir enregistrer le membre ! Mais d'abord, il faut créer le mot de passe :

Code PHP:
$lettres_chiffres = 'abcdefghijklmnopqrstuvwxyz0123456789';
$lettres_chiffres_melanges = str_shuffle($lettres_chiffres);
$mot_passe = substr($lettres_chiffres_melanges, 0, 5);


Je vous explique : On créé une variable qui contient des chiffres et des lettres. Avec la fonction str_shuffle, on les mélange, et avec substr, on indique le nombre de caractères que l'ont veux prendre dans la chaîne indiquée. (ici, on indique les chiffres et les lettres mélangés, et on dit qu'on veux du caractère 0 à 5, donc les 5 premiers). Le mot de passe est créé, on a plus qu'à insérer le membre et à lui envoyer le mail (bah oui, on va pas le laisser comme ça, sans son mot de passe  ).
Il faut déjà que vous sachiez utiliser la fonction mail :
Elle fonctionne facilement, et prends en général trois paramètres : le destinataire, l'objet et le message. On écrit :

Code PHP:
mail($destinataire, $objet, $message);


Information
Vous n'êtes pas obligés de mettre des variables pour le destinataire, ni pour l'objet ni pour le message. Vous pouvez mettre directement l'adresse du destinataire, l'objet et le message, mais ça fait trop "lourd".

Utiliser mail(); n'est pas plus dur que ça.
Comme vous l'avez vu, il faut déjà créer les variables (ce n'est qu'un conseil, car c'est beaucoup plus clair et votre code sera plus propre ) :

Code PHP:
$destinataire = $email;
$objet = "Inscription sur Mon site"; // Remplacez "Mon site" par le nom de votre site
$message = "Bonjour,
Après votre inscription sur Mon site, nous vous envoyons vos identifiants par e-mail.

Pseudo : " .$pseudo. "
Mot de passe : " .$mot_passe. "

Merci de votre visite, et a bientôt !
L'équipe de Mon site";


Et oui, un peu de politesse ne fait de mal à personne 
Bon bah maintenant, y'a plus qu'à insérer le membre dans la base de données  :

Code PHP:
mysql_query("INSERT INTO membres VALUES('', '$pseudo', '$mot_passe', '$email')");


Et pour finir, laisser un petit message au membre pour lui dire que tout c'est déroulé correctement et qu'il est bien inscrit  :

Code PHP:
echo '<br/>Vous avez bien été inscrit. Vos identifiants vous sont envoyés par mail.<br/>
<a href="index.php">Retour à l'index</a>'
;


C'est là que ça se complique. Bon, d'accord, le gros code est derrière nous, mais c'est là qu'on a tendance à s'embrouiller. Il faut refermer toutes les conditions qu'on a ouvertes 
Alors, on commence par la dernière qu'on a ouverte : celle qui vérifie que le pseudo n'existe pas déjà :

Code PHP:
}
else
{
echo 'Ce pseudo existe déjà. Choisissez en un autre !';
}


Et oui, il faut afficher un message d'erreur, et surtout, préciser de quelle erreur il s'agit.
Ensuite, si l'adresse email existe déjà :

Code PHP:
}
else
{
echo 'Un compte existe déja avec cette adresse email.';
}


On avait également ouvert la condition qui permettait de savoir si l'adresse email était valide (avec pleins de caractères incompréhensibles  ) :

Code PHP:
}
else
{
echo 'Cette adresse email n'est pas valide.';
}



Et enfin, celle qui vérifiait que tous les champs étaient remplis :

Code PHP:
}
else
{
echo 'Merci de remplir tous les champs';
}


Et aussi, fermer la connexion à MySQL étant donné qu'on ne s'en sert plus :

Code PHP:


______________

Alors là, c'était, je pense, la plus grosse partie de ce tuto ! Il ne nous reste plus grand chose, c'est-à-dire la connexion, déconnexion et la page des membres 

Sommaire



7 commentaires



> Posté le : 19/10/2007 à 14h32 | Note : Note: 4/5
Aucun avatar


Groupe : Membres


Une petite erreur 

Code PHP:
mail($destinataire, $objet, $message);


A placer après et pas avant
Code PHP:
$destinataire = $email;
$objet = "Inscription sur Mon site"; // Remplacez "Mon site" par le nom de votre site
$message = "Bonjour,
Après votre inscription sur Mon site, nous vous envoyons vos identifiants par e-mail.

Pseudo : " .$pseudo. "
Mot de passe : " .$mot_passe. "

Merci de votre visite, et a bientôt !
L'équipe de Mon site";

mail($destinataire, $objet, $message);
> Posté le : 07/01/2008 à 18h17 | Note : Note: 4/5
Aucun avatar


Groupe : Membres


Caché (cliquez pour afficher)
Need regex

greg , sa rime avec pgm non?
> Posté le : 23/01/2008 à 15h51 | Note : Note: 3/5
Aucun avatar


Groupe : Membres


Je comprend pas grand chose ... Tes if's on doit les imbriquer ou pas ? Ils se suivent ? Où vont-ils ? ...

Mon site : Studio Znak
> Posté le : 02/03/2008 à 19h14 | Note : Note: 4/5
Avatar de paparazzi


Groupe : Membres


Tu ne fermes pas tes if?

On pourrait avoir le code complet pour connexion-ok.php ? 


De retour..
> Posté le : 02/09/2008 à 11h49 | Note : Note: 5/5
Aucun avatar


Groupe : Membres


j'aimerais moi aussi avoir le code complet...
ça serait super que tu me l'envoie par mp ou que tu le mettes à la fin de ton tutoriel s'il te plait^^
> Posté le : 22/09/2008 à 18h34 | Note : Note: 3/5
Aucun avatar


Groupe : Membres


Je met 3 car il a l'air bien mais on a pas le code complet  
> Posté le : 05/11/2008 à 15h24 | Note : Note: 4/5
Aucun avatar


Groupe : Membres


Note: 4/5

Il y a juste 3 choses négatives :
- On a pas le code complet...
- Et puis, dans ton script, on laisse pas le client choisir son mot de passe...
- Tu ne prends pas en compte les apostrophes et les guillemets entre eux même...
Information
EX:
Code PHP:
echo 'Cette adresse email n'est pas valide.';


Sinon le reste est super !!! 


1