#2 Espace membre - Connexion & Inscription

Iktus

Premium
Inscription
21 Octobre 2013
Messages
1 675
Réactions
374
Points
12 981
1a38d90afeed4241bacc2fe9baea2fa7.png


Bonjour, bonsoir,

Partie 1 -> Clique ici

Aujourd'hui, nous allons passer à la suite de la série du développement d'un espace membre assez complet.
Dans cette partie, nous allons faire le système de connexion et d'inscription, mais aussi quelque fonctions pour nous faciliter certaine chose.

Votre serveur Apache et MySQL est fonctionnel ? Alors on peut commencer!
Tout d'abord, nous allons créer un dossier includes à la racine de votre FTP (Je prends en compte que votre FTP est vide et que vous n'avez rien d'autre dedans)

c895080774824625a9be55b9f56aae31.png

Une fois celui-ci créé, vous allez vous rendre dedans et créer un fichier configuration.php
Dans ce fichier, nous allons mettre la connectivité avec PDO.​
PHP:
<?php

try
{
    $hostname = "127.0.0.1"; //Hôte
    $dbname = "rgtuto"; //Base de données
    $user = "root"; // Utilisateur
    $password = ""; // Mot de passe

    $bdd = new PDO('mysql:host='.$hostname.';dbname='.$dbname.';charset=utf8', ''.$user.'', ''.$password.'', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} // Ne pas toucher

catch(Exception $e)
{
    die('<span style="color:red;"><b>Une erreur est survenue !</b></span> <br />'. $e->getMessage()); // Message d'erreur avec l'erreur rencontré, mettre juste die('Votre message d'erreur'); pour afficher simplement votre message d'erreur seul
}

?>

Et nous allons rajouter l'ouverture des sessions dans le fichier de configuration pour ne pas devoir se reconnecter à chaque modification dans la table des membres.
PHP:
if(isset($_SESSION['id']))
{
    $req = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
    $req->execute(array($_SESSION['id']));
    $info = $req->rowCount();
    if($info == 1)
        {
            $info = $req->fetch();
            $_SESSION['id'] = $info['id'];
            $_SESSION['identifiant'] = $info['identifiant'];
            $_SESSION['motdepasse'] = $info['motdepasse'];
            $_SESSION['email'] = $info['email'];
            $_SESSION['avatar'] = $info['avatar'];

        }
}

Ce qui donne
PHP:
<?php

try
{
    $hostname = "127.0.0.1";
    $dbname = "rgtuto";
    $user = "root";
    $password = "";

    $bdd = new PDO('mysql:host='.$hostname.';dbname='.$dbname.';charset=utf8', ''.$user.'', ''.$password.'', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}

catch(Exception $e)
{
    die('<span style="color:red;"><b>Une erreur est survenue !</b></span> <br />'. $e->getMessage());
}

if(isset($_SESSION['id']))
{
    $req = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
    $req->execute(array($_SESSION['id']));
    $info = $req->rowCount();
    if($info == 1)
        {
            $info = $req->fetch();
            $_SESSION['id'] = $info['id'];
            $_SESSION['identifiant'] = $info['identifiant'];
            $_SESSION['motdepasse'] = $info['motdepasse'];
            $_SESSION['email'] = $info['email'];
            $_SESSION['avatar'] = $info['avatar'];

        }
}

?>

Une fois cela de fait, vous allez vous rendre dans vos fichiers créé hier (index.php, login.php, register.php) et rajouter​
PHP:
<?php

session_start();

require_once('includes/configuration.php');

?>

Donc, le session_start(); sert à initialiser et restaurer une session et le require_once(''); permet d'inclure un fichier, il est identique à require et include mis à part que PHP vérifie si le fichier a déjà été inclus, et si c'est le cas, ne l'inclut pas une deuxième fois.

Une fois cela fais, nous allons créer un base de données. Pour ma part je vais l'appeler rgtuto puis nous allons créer la table des membres.

C'est Navicat car je ne sais pas utiliser phpMyAdmin sans m'énerver :d:
4e5cff0dd9d0443497419fcffaeaf8f9.png


f742b017d3e6406d9051cc829c8a0084.png

Maintenant que nous avons notre base de données avec notre table membres, nous allons passer à la partie PHP

On se redirige dans le dossier includes puis on crée un nouveau dossier nommé php et dans ce dossier on crée un fichier login.code.php qui va comporter notre code PHP permettant la connexion.
PHP:
<?php


// Si l'utilisateur est déjà connecté, alors on le redigire sur l'index

if(isset($_SESSION['id']))
{
  header('Location: index');
exit();
}
else
{

// Sinon il peut utiliser le formulaire

  if(isset($_POST['connexion']))
  {
    $identifiant = htmlspecialchars($_POST['identifiant']); // Ce qui sert pour le name="identifiant"
    $motdepasse = md5(sha1($_POST['motdepasse'])); // Ce qui sert pour le name="motdepasse"

    if(!empty($identifiant) AND !empty($motdepasse))
    {

      $req = $bdd->prepare('SELECT * FROM membres WHERE identifiant = ? AND motdepasse = ?');
      $req->execute(array($identifiant, $motdepasse));
      $exist = $req->rowCount();

      if($exist == 1)
      {

        // On enregistre en cookie l'identifiant et le mot de passe

        if(isset($_POST['remember'])) {
                    setcookie('identifiant',$identifiant,time()+365*24*3600,null,null,false,true);
                    setcookie('motdepasse',$motdepasse,time()+365*24*3600,null,null,false,true);
                }

         // On ouvre les sessions

        $backup = $req->fetch();
        $_SESSION['id'] = $backup['id'];
        $_SESSION['identifiant'] = $backup['identifiant'];
        $_SESSION['motdepasse'] = $backup['motdepasse'];
        $_SESSION['avatar'] = $backup['avatar'];

        // On peut ici mettre ici -> $erreur = "Connexion réussi, redirection dans 3 secondes"; <- et modifier le header actuel par -> header("refresh:3;url=index"); <-

        header('Location: index');
exit();

      }
      else
      {

        // Erreur si l'utilisateur ou le mot de passe est incorrect

        $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Votre nom d'utilisateur ou mot de passe est incorrect.
                        </div>";

      }

    }
    else
    {

      // Erreur si tous les champs ne sont pas remplis, mais on peut utiliser un required dans notre code HTML mais il n'est pas prit en compte sur tous les navigateurs.

      $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Tous les champs ne sont pas remplis!
                        </div>";

    }

  }

}

?>

Je vous ai détaillé en bref ce que chaque ligne signifie.
Une fois ce code mit dans votre fichier login.code.php, vous enregistrez et nous allons nous rendre dans le fichier login.php situé à la racine et rajouter un autre require_once pour inclure notre fichier login.code.php avec le code PHP.

Ce qui doit vous donnez maintenant​
PHP:
<?php


session_start();

require_once('includes/configuration.php');
require_once('includes/php/login.code.php');

?>

Maintenant, nous allons faire en sorte que si il y a une erreur, elle s'affiche.
Donc on aura besoin de​
PHP:
<?php if(isset($erreur)) { ?>

<?php echo $erreur ?>
<?php } ?>

Vous le placez où vous voulez que l'erreur apparaisse.
ac50f62e766847eb8d246a694a0d3eaf.png

Normalement, si vous avez suivi correctement le tutoriel numéro 1, une erreur doit s'afficher si vous rentrez de fausse information.
Maintenant si vous voulez tester que tout fonctionne, il vous suffit de créer un utilisateur depuis votre base de données, pour le mot de passe, on va utiliser azerty, alors dans la colonne motdepasse, on va mettre 7b95dafa9ecb37dafa761f8bafc76b0a.

Si tout c'est bien passé, vous allez être redirigé sur l'index, et vous ne pourrez plus vous rendre sur le page login.php sans que vous soyez aussi redirigé sur l'index, on va donc créer un fichier logout.php permettant la déconnexion.

Je vous laisse faire le design de votre page de déconnexion :)
cf4cd7e890874044bc684c01f20be8c6.png

Normalement, vous avez que du HTML sur cette page, vous allez ajouter maintenant​
PHP:
<?php

session_start();
$_SESSION = array();
session_destroy();

?>

Pas besoin d'explication, il n'y a que 3 lignes :trollface:

Maintenant nous allons attaquer la partie inscription :)
On retourne dans le dossier php ce trouvant dans includes et nous créons le fichier register.code.php, et l'on colle ce code
PHP:
<?php

// Si l'utilisateur est déjà connecté, alors on le redigire sur l'index

if(isset($_SESSION['id']))
{
    header('Location: index');
exit();
}
else
{

// Sinon il peut utiliser le formulaire

    if(isset($_POST['inscription']))
    {
        $identifiant = htmlspecialchars($_POST['identifiant']); // Ce qui sert pour le name="identifiant"
        $email = htmlspecialchars($_POST['email']); // Ce qui sert pour le name="email"
        $motdepasse = md5(sha1($_POST['motdepasse'])); // Ce qui sert pour le name="motdepasse"
        $motdepasse_confirme = md5(sha1($_POST['motdepasse_confirme'])); // Ce qui sert pour le name="motdepasse_confirme"
        $avatar = htmlspecialchars("/images/1.jpg"); // Lien vers l'image que vous donnerez au utilisateur lors de l'inscription

        if(!empty($_POST['identifiant']) AND !empty($_POST['email']) AND !empty($_POST['motdepasse']) AND !empty($_POST['motdepasse_confirme'])) // Les champs qui seront obligatoire d'être remplis dans le formulaire
        {
            $l_peudo = strlen($identifiant);

            if($l_peudo > 25) // Longueur maximal d'un nom d'utilisateur
            {
                $erreur = "Identifiant trop long";
            }
            else
            {
                $req = $bdd->prepare("SELECT * FROM membres WHERE identifiant = ?");
                $req->execute(array($identifiant));
                $userexist = $req->rowCount();
                if($userexist == 0)
                {
                    if(filter_var($email, FILTER_VALIDATE_EMAIL))
                    {
                        if($motdepasse == $motdepasse_confirme) // On vérifie que le mot de passe est identique
                        {
                            $reqinsert = $bdd->prepare('INSERT INTO membres(identifiant, email, motdepasse, avatar) VALUES(?, ?, ?, ?)');
                            $reqinsert->execute(array($identifiant, $email, $motdepasse, $avatar));

                            // Si tout c'est bien passé, on affiche ce message
                            $erreur = "<div class=\"alert alert-success\">
                            <strong>Succès!</strong> Votre compte est maintenant créé.<br> Vous pouvez dès à présent vous connecter.
                        </div>";
                            header('Refresh: 3; login');
exit();
                        }
                        else
                        {
                            // Si les mots de passe ne sont pas identique
                            $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Les mots de passe ne sont pas identique.
                        </div>";
                        }
                    }
                    else
                    {
                        // Si l'email est invalide
                        $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Email invalide.
                        </div>";
                    }
                }
                else
                {
                    // Si l'identifiant est déjà utilisé
                    $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Ce identifiant est déjà utilisé.
                        </div>";
                }
            }
        }
        else
        {
            // Si tous les champs ne sont pas remplis
            $erreur = "<div class=\"alert alert-danger\"><strong>Erreur!</strong> Tous les champs ne sont pas remplis.
                        </div>";
        }

    }

}

Une fois cela de fait, vous enregistrez et on retourne dans register.php qui est à la racine.

Vous allez faire comme pour le login.php, vous allez placer un require_once allant chercher notre fichier register.code.php

Ce qui doit vous donner​
PHP:
<?php


session_start();

require_once('includes/configuration.php');
require_once('includes/php/register.code.php');

?>

Maintenant nous allons aussi rajouter le code permettant d'afficher les erreurs.​
PHP:
<?php if(isset($erreur)) { ?>

<?php echo $erreur ?>
<?php } ?>
À vous de le placer où vous le souhaitez :)

Normalement, si vous avez tout bien suivi, tout devrait marcher :)


BONUS


Maintenant nous allons utiliser les functions.
Question: Pourquoi ? Encore du code qui peut être tout simplement écrit pourtant...
Réponse: Oui mais c'est pour faciliter les modifications, par exemple, quand nous serons à la partie administration, même si c'est pas pour tout de suite :trollface:, tu pourras modifier le titre de ton site en 10 secondes!

Donc alors, nous allons nous rendre dans notre base de données et créer une table configuration comportant les colonnes : nom - description - auteur.

78531471550f466ba42e7ab8b44eed30.png

Une fois cela de fait, on se rend dans notre dossier includes puis on crée le dossier fonctions et on crée un fichier nommé configuration.fonction.php

Dans ce fichier vous allez mettre

PHP:
<?php

function Configuration($str)
{
    static $row;
    global $bdd;

    if (!$row)
    {
        $stm = $bdd->query("SELECT * FROM configuration");
        $row = $stm->fetch();
    }
    return $row[$str];
}

?>

En gros, on utilisera la fonction Configuration pour afficher les données dans la table configuration

Une fois cela de fait, vous allez ajouter un require_once qui inclura notre fichier configuration.fonction.php, vous pouvez le mettre dans tout nos fichiers de racine, comme ça, pas besoin de faire plusieurs modification, une seul suffira pour tout modifier :D

Le fonctionnement est simple, si vous voulez afficher le texte qu'il y a dans votre table nom, vous allez mettre
PHP:
<?php echo Configuration('nom'); ?>
Si vous voulez la description, alors à la place de nom, vous allez mettre description, c'est tout simple, et très utilise :)

N'hésitez pas à me dire si vous n'avez pas compris certaine chose :)
Bonne journée/soirée à vous :D

Télécharger le projet:

Nouveau fichier SQL:
 
Dernière édition:

Peaky Blinders

King Plex
Ancien staff
Inscription
27 Décembre 2012
Messages
12 668
Réactions
5 293
Points
26 663
Bon tutoriel pour ceux qui voudrait commencer le création de site web :D

Deux trois points : faut toujours mettre un exit(); après un header pour éviter d'envoyer le reste de la page au client. Et pour la partie bonus, ce n'est pas une class :x
 

Karrio SEC

Rédacteur
Rédacteur
Inscription
26 Janvier 2014
Messages
2 320
Réactions
2 093
Points
19 961
1a38d90afeed4241bacc2fe9baea2fa7.png


Bonjour, bonsoir,

Partie 1 -> Clique ici

Aujourd'hui, nous allons passer à la suite de la série du développement d'un espace membre assez complet.
Dans cette partie, nous allons faire le système de connexion et d'inscription, mais aussi quelque fonctions pour nous faciliter certaine chose.

Votre serveur Apache et MySQL est fonctionnel ? Alors on peut commencer!
Tout d'abord, nous allons créer un dossier includes à la racine de votre FTP (Je prends en compte que votre FTP est vide et que vous n'avez rien d'autre dedans)

c895080774824625a9be55b9f56aae31.png

Une fois celui-ci créé, vous allez vous rendre dedans et créer un fichier configuration.php
Dans ce fichier, nous allons mettre la connectivité avec PDO.
PHP:
<?php

try
{
    $hostname = "127.0.0.1"; //Hôte
    $dbname = "rgtuto"; //Base de données
    $user = "root"; // Utilisateur
    $password = ""; // Mot de passe

    $bdd = new PDO('mysql:host='.$hostname.';dbname='.$dbname.';charset=utf8', ''.$user.'', ''.$password.'', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} // Ne pas toucher

catch(Exception $e)
{
    die('<span style="color:red;"><b>Une erreur est survenue !</b></span> <br />'. $e->getMessage()); // Message d'erreur avec l'erreur rencontré, mettre juste die('Votre message d'erreur'); pour afficher simplement votre message d'erreur seul
}

?>

Et nous allons rajouter l'ouverture des sessions dans le fichier de configuration pour ne pas devoir se reconnecter à chaque modification dans la table des membres.

PHP:
if(isset($_SESSION['id']))
{
    $req = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
    $req->execute(array($_SESSION['id']));
    $info = $req->rowCount();
    if($info == 1)
        {
            $info = $req->fetch();
            $_SESSION['id'] = $info['id'];
            $_SESSION['identifiant'] = $info['identifiant'];
            $_SESSION['motdepasse'] = $info['motdepasse'];
            $_SESSION['email'] = $info['email'];
            $_SESSION['avatar'] = $info['avatar'];

        }
}

Ce qui donne

PHP:
<?php

try
{
    $hostname = "127.0.0.1";
    $dbname = "rgtuto";
    $user = "root";
    $password = "";

    $bdd = new PDO('mysql:host='.$hostname.';dbname='.$dbname.';charset=utf8', ''.$user.'', ''.$password.'', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}

catch(Exception $e)
{
    die('<span style="color:red;"><b>Une erreur est survenue !</b></span> <br />'. $e->getMessage());
}

if(isset($_SESSION['id']))
{
    $req = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
    $req->execute(array($_SESSION['id']));
    $info = $req->rowCount();
    if($info == 1)
        {
            $info = $req->fetch();
            $_SESSION['id'] = $info['id'];
            $_SESSION['identifiant'] = $info['identifiant'];
            $_SESSION['motdepasse'] = $info['motdepasse'];
            $_SESSION['email'] = $info['email'];
            $_SESSION['avatar'] = $info['avatar'];

        }
}

?>

Une fois cela de fait, vous allez vous rendre dans vos fichiers créé hier (index.php, login.php, register.php) et rajouter
PHP:
<?php

session_start();

require_once('includes/configuration.php');

?>

Donc, le session_start(); sert à initialiser et restaurer une session et le require_once(''); permet d'inclure un fichier, il est identique à require et include mis à part que PHP vérifie si le fichier a déjà été inclus, et si c'est le cas, ne l'inclut pas une deuxième fois.

Une fois cela fais, nous allons créer un base de données. Pour ma part je vais l'appeler rgtuto puis nous allons créer la table des membres.

C'est Navicat car je ne sais pas utiliser phpMyAdmin sans m'énerver :d:
4e5cff0dd9d0443497419fcffaeaf8f9.png


f742b017d3e6406d9051cc829c8a0084.png

Maintenant que nous avons notre base de données avec notre table membres, nous allons passer à la partie PHP

On se redirige dans le dossier includes puis on crée un nouveau dossier nommé php et dans ce dossier on crée un fichier login.code.php qui va comporter notre code PHP permettant la connexion.

PHP:
<?php


// Si l'utilisateur est déjà connecté, alors on le redigire sur l'index

if(isset($_SESSION['id']))
{
  header('Location: index');
}
else
{

// Sinon il peut utiliser le formulaire

  if(isset($_POST['connexion']))
  {
    $identifiant = htmlspecialchars($_POST['identifiant']); // Ce qui sert pour le name="identifiant"
    $motdepasse = md5(sha1($_POST['motdepasse'])); // Ce qui sert pour le name="motdepasse"

    if(!empty($identifiant) AND !empty($motdepasse))
    {

      $req = $bdd->prepare('SELECT * FROM membres WHERE identifiant = ? AND motdepasse = ?');
      $req->execute(array($identifiant, $motdepasse));
      $exist = $req->rowCount();

      if($exist == 1)
      {

        // On enregistre en cookie l'identifiant et le mot de passe

        if(isset($_POST['remember'])) {
                    setcookie('identifiant',$identifiant,time()+365*24*3600,null,null,false,true);
                    setcookie('motdepasse',$motdepasse,time()+365*24*3600,null,null,false,true);
                }

         // On ouvre les sessions

        $backup = $req->fetch();
        $_SESSION['id'] = $backup['id'];
        $_SESSION['identifiant'] = $backup['identifiant'];
        $_SESSION['motdepasse'] = $backup['motdepasse'];
        $_SESSION['avatar'] = $backup['avatar'];

        // On peut ici mettre ici -> $erreur = "Connexion réussi, redirection dans 3 secondes"; <- et modifier le header actuel par -> header("refresh:3;url=index"); <-

        header('Location: index');

      }
      else
      {

        // Erreur si l'utilisateur ou le mot de passe est incorrect

        $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Votre nom d'utilisateur ou mot de passe est incorrect.
                        </div>";

      }

    }
    else
    {

      // Erreur si tous les champs ne sont pas remplis, mais on peut utiliser un required dans notre code HTML mais il n'est pas prit en compte sur tous les navigateurs.

      $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Tous les champs ne sont pas remplis!
                        </div>";

    }

  }

}

?>

Je vous ai détaillé en bref ce que chaque ligne signifie.
Une fois ce code mit dans votre fichier login.code.php, vous enregistrez et nous allons nous rendre dans le fichier login.php situé à la racine et rajouter un autre require_once pour inclure notre fichier login.code.php avec le code PHP.

Ce qui doit vous donnez maintenant
PHP:
<?php


session_start();

require_once('includes/configuration.php');
require_once('includes/php/login.code.php');

?>

Maintenant, nous allons faire en sorte que si il y a une erreur, elle s'affiche.
Donc on aura besoin de
PHP:
<?php if(isset($erreur)) { ?>

<?php echo $erreur ?>
<?php } ?>

Vous le placez où vous voulez que l'erreur apparaisse.
ac50f62e766847eb8d246a694a0d3eaf.png

Normalement, si vous avez suivi correctement le tutoriel numéro 1, une erreur doit s'afficher si vous rentrez de fausse information.
Maintenant si vous voulez tester que tout fonctionne, il vous suffit de créer un utilisateur depuis votre base de données, pour le mot de passe, on va utiliser azerty, alors dans la colonne motdepasse, on va mettre 7b95dafa9ecb37dafa761f8bafc76b0a.

Si tout c'est bien passé, vous allez être redirigé sur l'index, et vous ne pourrez plus vous rendre sur le page login.php sans que vous soyez aussi redirigé sur l'index, on va donc créer un fichier logout.php permettant la déconnexion.

Je vous laisse faire le design de votre page de déconnexion :)
cf4cd7e890874044bc684c01f20be8c6.png

Normalement, vous avez que du HTML sur cette page, vous allez ajouter maintenant
PHP:
<?php

session_start();
$_SESSION = array();
session_destroy();

?>

Pas besoin d'explication, il n'y a que 3 lignes :trollface:

Maintenant nous allons attaquer la partie inscription :)
On retourne dans le dossier php ce trouvant dans includes et nous créons le fichier register.code.php, et l'on colle ce code

PHP:
<?php

// Si l'utilisateur est déjà connecté, alors on le redigire sur l'index

if(isset($_SESSION['id']))
{
    header('Location: index');
}
else
{

// Sinon il peut utiliser le formulaire

    if(isset($_POST['inscription']))
    {
        $identifiant = htmlspecialchars($_POST['identifiant']); // Ce qui sert pour le name="identifiant"
        $email = htmlspecialchars($_POST['email']); // Ce qui sert pour le name="email"
        $motdepasse = md5(sha1($_POST['motdepasse'])); // Ce qui sert pour le name="motdepasse"
        $motdepasse_confirme = md5(sha1($_POST['motdepasse_confirme'])); // Ce qui sert pour le name="motdepasse_confirme"
        $avatar = htmlspecialchars("/images/1.jpg"); // Lien vers l'image que vous donnerez au utilisateur lors de l'inscription

        if(!empty($_POST['identifiant']) AND !empty($_POST['email']) AND !empty($_POST['motdepasse']) AND !empty($_POST['motdepasse_confirme'])) // Les champs qui seront obligatoire d'être remplis dans le formulaire
        {
            $l_peudo = strlen($identifiant);

            if($l_peudo > 25) // Longueur maximal d'un nom d'utilisateur
            {
                $erreur = "Identifiant trop long";
            }
            else
            {
                $req = $bdd->prepare("SELECT * FROM membres WHERE identifiant = ?");
                $req->execute(array($identifiant));
                $userexist = $req->rowCount();
                if($userexist == 0)
                {
                    if(filter_var($email, FILTER_VALIDATE_EMAIL))
                    {
                        if($motdepasse == $motdepasse_confirme) // On vérifie que le mot de passe est identique
                        {
                            $reqinsert = $bdd->prepare('INSERT INTO membres(identifiant, email, motdepasse, avatar) VALUES(?, ?, ?, ?)');
                            $reqinsert->execute(array($identifiant, $email, $motdepasse, $avatar));

                            // Si tout c'est bien passé, on affiche ce message
                            $erreur = "<div class=\"alert alert-success\">
                            <strong>Succès!</strong> Votre compte est maintenant créé.<br> Vous pouvez dès à présent vous connecter.
                        </div>";
                            header('Refresh: 3; login');
                        }
                        else
                        {
                            // Si les mots de passe ne sont pas identique
                            $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Les mots de passe ne sont pas identique.
                        </div>";
                        }
                    }
                    else
                    {
                        // Si l'email est invalide
                        $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Email invalide.
                        </div>";
                    }
                }
                else
                {
                    // Si l'identifiant est déjà utilisé
                    $erreur = "<div class=\"alert alert-danger\">
                            <strong>Erreur!</strong> Ce identifiant est déjà utilisé.
                        </div>";
                }
            }
        }
        else
        {
            // Si tous les champs ne sont pas remplis
            $erreur = "<div class=\"alert alert-danger\"><strong>Erreur!</strong> Tous les champs ne sont pas remplis.
                        </div>";
        }

    }

}

Une fois cela de fait, vous enregistrez et on retourne dans register.php qui est à la racine.

Vous allez faire comme pour le login.php, vous allez placer un require_once allant chercher notre fichier register.code.php

Ce qui doit vous donner
PHP:
<?php


session_start();

require_once('includes/configuration.php');
require_once('includes/php/register.code.php');

?>

Maintenant nous allons aussi rajouter le code permettant d'afficher les erreurs.
PHP:
<?php if(isset($erreur)) { ?>

<?php echo $erreur ?>
<?php } ?>

À vous de le placer où vous le souhaitez :)

Normalement, si vous avez tout bien suivi, tout devrait marcher :)


BONUS


Maintenant nous allons utiliser les class.


Donc alors, nous allons nous rendre dans notre base de données et créer une table configuration comportant les colonnes : nom - description - auteur.

78531471550f466ba42e7ab8b44eed30.png

Une fois cela de fait, on se rend dans notre dossier includes puis on crée le dossier class et on crée un fichier nommé configuration.class.php

Dans ce fichier vous allez mettre


PHP:
<?php

function Configuration($str)
{
    static $row;
    global $bdd;

    if (!$row)
    {
        $stm = $bdd->query("SELECT * FROM configuration");
        $row = $stm->fetch();
    }
    return $row[$str];
}

?>

En gros, on utilisera la fonction Configuration pour afficher les données dans la table configuration

Une fois cela de fait, vous allez ajouter un require_once qui inclura notre fichier configuration.class.php, vous pouvez le mettre dans tout nos fichiers de racine, comme ça, pas besoin de faire plusieurs modification, une seul suffira pour tout modifier :D

Le fonctionnement est simple, si vous voulez afficher le texte qu'il y a dans votre table nom, vous allez mettre
PHP:
<?php echo Configuration('nom'); ?>
Si vous voulez la description, alors à la place de nom, vous allez mettre description, c'est tout simple, et très utilise :)

N'hésitez pas à me dire si vous n'avez pas compris certaine chose :)
Bonne journée/soirée à vous :D

Télécharger le projet:
WoW... :stupéfait: topic très très complet et qui aide vraiment ! Merci à toi pour ce topic :o
 

Iktus

Premium
Inscription
21 Octobre 2013
Messages
1 675
Réactions
374
Points
12 981
Bon tutoriel pour ceux qui voudrait commencer le création de site web :D

Deux trois points : faut toujours mettre un exit(); après un header pour éviter d'envoyer le reste de la page au client. Et pour la partie bonus, ce n'est pas une class :x
Merci :) D'accord je modifie et j'y penserai la prochaine fois :p Oui je me suis planté, c'est une function xD j'avais autre chose en tête entre le moment où j'écrivais, et que je faisais le code :trollface:

WoW... :stupéfait: topic très très complet et qui aide vraiment ! Merci à toi pour ce topic :o
De rien sa fait plaisir :)
 

Etho Beats

?
Premium
Inscription
21 Octobre 2014
Messages
567
Réactions
314
Points
8 005
Crypter ses mots de passe en md5 et sha1 c'est outdated, tu n'as pas une solution à me proposer pour crypter plus efficacement les mots de passe dans la base de données ?
 

Etho Beats

?
Premium
Inscription
21 Octobre 2014
Messages
567
Réactions
314
Points
8 005
tu dois t'inscrire et te connecte avec la même fonction ^^
Ouai bah c'est pas grave je suis revenu sur ton code ;)
Sinon j'ai un problème avec le message de connexion réussie (ou inscription réussie). Quand je clique pour me connecter, le refresh:3 me fait en fait attendre 3 secondes sur une page blanche et me redirige ensuite sur mon index (donc on ne voit pas le message réussi)
 

AstateGfx

Premium
Inscription
27 Janvier 2013
Messages
3 158
Réactions
176
Points
17 571
tu pourras essayé d'aléger la charge du serveur en ajoutant la fontion
ob_start , histoir d'enregistrer le flux html en temp apres tu l fais sortir ac ob_get_clean
 

MEKr

Banni
Inscription
8 Septembre 2019
Messages
80
Réactions
23
Points
3 666
Bojour er bravo.
A part que les tables sont importantes quand même et les créer en déchiffrant le code dans les requêtes aie aie :/
de toute facon faire du php sans framework y'a 0 intérêt tu vas te retrouver avec des failles dans tout les sens
 
Haut