Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement web
  4. PHP
  5. Créer un système de Connexion / Inscription en PHP

Créer un système de Connexion / Inscription en PHP

Planifié Épinglé Verrouillé Déplacé PHP
32 Messages 13 Publieurs 64.3k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • 4Spartan84 Hors-ligne
    4Spartan84 Hors-ligne
    4Spartan8
    a écrit sur dernière édition par
    #1

    Bonjour à tous !

    Aujourd'hui nous nous attaquons à un tutoriel assez long !

    Je vous préviens tout de suite ! Si vous n'avez pas de connaissance en PHP / HTML il est inutile de poursuivre ce tutoriel.

    Nous allons donc comme dit plus haut utilisé du PHP & du HTML pour réaliser ce tutoriel.

    1 - Système de connexion

    C'est partie ! On s'occupe en premier de la base de donnée :

    Nous allons donc créer un table nommer "membre" qui regroupera tous les membres du site.

    CREATE TABLE membre (
       id int(11) NOT NULL auto_increment,
       login varchar(8) NOT NULL,
       password varchar(8) NOT NULL,
       PRIMARY KEY (id),
       KEY ID_2 (id)
    );
    

    Ici on stocke : L'id, le Pseudo & le Password du membre.

    Ensuite on créer la page LOGIN.PHP & on insére formulaire HTML de connexion :

    <form method="post" action="">
    
        <legend>Connexion au Panel</legend>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Login</label>
          <div class="col-lg-10">
            <input type="text" class="form-control" name="login" placeholder="Login">
          </div>
        </div><br/><br/><br/>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Mot de passe</label>
          <div class="col-lg-10">
            <input type="password" class="form-control" name="password" placeholder="Mot de passe">
          </div>
        </div>
    
    <br/><br/><center><button type="submit" name="submit" class="btn btn-primary">Connexion</button></center>
    </form>
    

    Ensuite on créer le système qui vas vérifier & nous connecter :

    <?php
    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'login', 'password'); 
    mysql_select_db('nomdelabase',$db); 
    
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
    $_POST['password'] = hash("sha256", $_POST['password']);
      extract($_POST);
      // on recupére le password de la table qui correspond au login du visiteur
      $sql = "select password from membre where login='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
      $data = mysql_fetch_assoc($req);
    
      if($data['password'] != $password) {
        echo '<div class="alert alert-dismissable alert-danger">
      <button type="button" class="close" data-dismiss="alert">x</button>
      <strong>Oh Non !</strong> Mauvais login / password. Merci de recommencer !
    </div>';
      }
      
      else {
        session_start();
        $_SESSION['login'] = $login;
        
        echo '<div class="alert alert-dismissable alert-success">
      <button type="button" class="close" data-dismiss="alert">×</button>
      <strong>Yes !</strong> Vous etes bien logué, Redirection dans 5 secondes ! <meta http-equiv="refresh" content="5; URL=dashboard">
    </div>';
        // ici vous pouvez afficher un lien pour renvoyer
        // vers la page d'accueil de votre espace membres 
      }    
    }
    else {
      $champs = '<p><b>(Remplissez tous les champs pour vous connectez !)</b></p>';
    }
    
    ?>
    

    Ensuite nous modifions la ligne :

    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'login', 'password'); 
    mysql_select_db('nomdelabase',$db);
    

    Ici vous entrez les identifiants de connexion à la base de donnée.

    Voilà, la connexion est terminée. Maintenant nous passons au plus dur !

    2 - Système d'inscription

    Ici on créer une page REGISTER.PHP & on créer le système d'inscription.

    Enfaite ce n'est pas réellement le plus dur car ici nous nous servirons tout simplement d'un système de news en php mais nous le modifierons un petit peut !

    Alors go :

    On créer le formulaire d'inscription et on l'insère dans la page

    <form method="post" action="">
    
        <legend>S'inscrire sur le site</legend>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Login</label>
          <div class="col-lg-10">
            <input type="text" class="form-control" name="login" placeholder="Login">
          </div>
        </div><br/><br/><br/>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Mot de passe</label>
          <div class="col-lg-10">
            <input type="password" class="form-control" name="password" placeholder="Mot de passe">
          </div>
        </div>
    
    <br/><br/><center><button type="submit" name="submit" class="btn btn-primary">S'Inscrire</button></center>
    </form>
    

    Et on créer le système !

    IMPORTANT : Ici nous effectuons une connexion MYSQL PDO (beaucoup plus sécurisé) et tout à l'heure le système était fait de sorte à utiliser une connexion MYSQL BASIQUE qui bientôt disparaitra ...

    C'est partie :

    <?php
    //Connexion à la BDD
      try
      {
      
       $bdd = new PDO ('mysql:host=localhost;dbname=nomdelabase', 'login', 'password');
      
      }
      
      catch(Exception $e)
      {
       die('Erreur :'.$e->getMessage());
      }
      
        if(ISSET($_POST['submit']))
    {
    
    //On créer les variables
    $login =   $_POST['login'];
    $password = $_POST['password'];
    $password = hash("sha256", $password);
    
    $req = $bdd->prepare('INSERT INTO membre(login, password) VALUES (:login, :password)');
    
    $req->execute(array("login" => $login, "password" => $password));
    
    if(!empty($login) && !empty($password))
    {
    
    }else{
    ?>
    
    <b>Pseudo ou MDP vide !</b>
    
    <?php
    }
    
    if(empty($login) && empty($password))
    {
    
    }else{
    
    session_start();
    $_SESSION['login'] = $_POST['login'];
    header('Location: dashboard');
    
    }
    
    }
       
       ?>
    

    La connexion PDO est ici :

    <?php
    //Connexion à la BDD
      try
      {
      
       $bdd = new PDO ('mysql:host=localhost;dbname=nomdelabase', 'login', 'password');
      
      }
      
      catch(Exception $e)
      {
       die('Erreur :'.$e->getMessage());
      }[/php]
    
    Il ne vous reste plus qu'à changer :
    [php]('mysql:host=localhost;dbname=nomdelabase', 'login', 'password')[/php]
    
    Et ici aussi pour le lien de redirection une fois que la SESSION à démarrée :
    
    [php] session_start();
    $_SESSION['login'] = $_POST['login'];
    header('Location: LIEN-DE-REDIRECTION');
    

    3 - Système de vérification

    ICI nouveau problème : Si on essaye d'accèder à une page qui normalement doit être réservé au personne connectées, par exemple : panel.php. Et bien nous y avons quand même accès même déconnecté !

    Nous allons résoudre ce problème avec une page nommée vérif.php.

    On y inclue ce code :

    <?
    session_start();
    
    /* 
    si la variable de session login n'existe pas cela siginifie que le visiteur 
    n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
    acceder à l'espace membres
    */
    if(!isset($_SESSION['login'])) {
      echo '<h1>Vous n\'êtes pas connecté, accés interdit !</h1> <meta http-equiv="refresh" content="0; URL=index.php"> ';
    }
    ?> 
    

    Comme indiqué en haut, on regarde si la SESSION est démarrée, si elle ne l'est pas on interdit l'accès.

    Ensuite il ne vous reste plus qu'à include ce code sur toutes les pages que vous voulez :

    <?php include ('verif.php') ; ?>
    

    4 - Système de déconnexion

    Pour finir l'utilisateur doit bien ce déconnecter une fois qu'il à terminé.

    Pour ce faire nous créons  la page logout.php et on y inclue ce code :

    <?php
    session_start();
    session_unset();
    session_destroy();
    header('Location: login.php');
    ?>
    

    Ici on déconnecte l'utilisateur & on le redirige vers la page de login !

    Ce tutoriel est maintenant terminé !

    Attention : Je préviens à l'avance avant que tous le monde spam le topic 😛 :

    Le Topic ne sert en aucun cas de Support ! J'insiste bien la dessus. Vu que je ne suis pas méchant contactez mon plutôt par Mp sur le Forum, c'est quand même mieux !

    En espérant vous avoir aidez, à la prochaine !

    Cordialement, 4Spartan8 - Codeur PHP, JAVA, HTML, CSS

    1 réponse Dernière réponse
    3
    • AnaeriaA Hors-ligne
      AnaeriaA Hors-ligne
      Anaeria
      Membre d'honneur
      a écrit sur dernière édition par
      #2

      J'aime bien, c'est complet et ça fait une bonne base.

      Seul petit truc, personnellement pour la sécurité des mots de passe je préfère utiliser la fonction password_hash.

      Mon MMORTS par navigateur développé avec le MeliFramework : <http://www.h-wars.net>
      Client & serveur chat gratuit : <http://easychat.evade-multimedia.net>
      Site de mes romans d'héroïc fantasy :<http://www.worldofmoons.net> - Achetez le roman : Sur thebookedition.com ou sur Google Play
      Humour et blagues informatiques : <http://www.danstoncode.net>

      1 réponse Dernière réponse
      0
      • 4Spartan84 Hors-ligne
        4Spartan84 Hors-ligne
        4Spartan8
        a écrit sur dernière édition par
        #3

        Merci, oui effectivement tu peut aussi utilisé la fonction password_hash 🙂

        Cordialement, 4Spartan8 - Codeur PHP, JAVA, HTML, CSS

        1 réponse Dernière réponse
        0
        • vfrzV Hors-ligne
          vfrzV Hors-ligne
          vfrz
          a écrit sur dernière édition par
          #4

          Merci beaucoup pour ce tutoriel 😛

          hbY2yJ9.gif7CNtQh6.gif

          1 réponse Dernière réponse
          0
          • 4Spartan84 Hors-ligne
            4Spartan84 Hors-ligne
            4Spartan8
            a écrit sur dernière édition par
            #5

            Mais de rien ! 😄

            Cordialement, 4Spartan8 - Codeur PHP, JAVA, HTML, CSS

            1 réponse Dernière réponse
            0
            • AzadA Hors-ligne
              AzadA Hors-ligne
              Azad
              a écrit sur dernière édition par
              #6

              Très bon tutoriel, pour un premier message c'est du bon boulot. 😉

              +1 point de réputation.

              Administrateur du forum.

              Contactez-moi par message privé ou par mail.

              1 réponse Dernière réponse
              0
              • 4Spartan84 Hors-ligne
                4Spartan84 Hors-ligne
                4Spartan8
                a écrit sur dernière édition par
                #7

                Très bon tutoriel, pour un premier message c'est du bon boulot. 😉

                +1 point de réputation.

                Merci beaucoup 🙂

                Cordialement, 4Spartan8 - Codeur PHP, JAVA, HTML, CSS

                1 réponse Dernière réponse
                0
                • AbrahamA Hors-ligne
                  AbrahamA Hors-ligne
                  Abraham
                  a écrit sur dernière édition par
                  #8

                  Le session_start(); devrait être en tout début de page, à la première ligne du fichier, vraiment.

                  Sinon, bon tutoriel.

                  1 réponse Dernière réponse
                  0
                  • E Hors-ligne
                    E Hors-ligne
                    Emirates
                    a écrit sur dernière édition par
                    #9

                    Merci pour ce tutoriel très clair ! Je vais m'en servir pour ma prochaine réalisation !

                    1 réponse Dernière réponse
                    0
                    • F Hors-ligne
                      F Hors-ligne
                      FaKe77
                      a écrit sur dernière édition par
                      #10

                      Bon tutoriel, serait pas mal de faire le même en POO et sans Boostrap, pourquoi pas ajouté un système de vérification par mail ou key.

                      Sinon pour les requêtes SQL privilégie BindParam niveau sécu c'est mieux.

                      +1

                      fake77-final.png

                      76561198126683758.png

                      1 réponse Dernière réponse
                      0
                      • E Hors-ligne
                        E Hors-ligne
                        EyesGammer
                        a écrit sur dernière édition par
                        #11

                        Salut, je sais  que le sujet dois surement etre clos, mais j'ai besoin d'aide. Au niveau du script LOGIN.PHP j'ai un message d'erreur que je ne comprend pas:

                        Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u515460985/public_html/LOGIN.php on line 24

                        et voila le script qui correspond a cette erreur: $db = mysql_connect('#', 'u515460985_moi', '#');
                        mysql_select_db('#',$db);

                        Evidemment la ou il y a les # j'ai rempli les informations, quelque peut m'aider?

                        1 réponse Dernière réponse
                        0
                        • vfrzV Hors-ligne
                          vfrzV Hors-ligne
                          vfrz
                          a écrit sur dernière édition par
                          #12

                          Bon je ne code pas du tout en php, mais en gros en traduction ca dit que tu ne dois plus utiliser l'extension mysql car elle est obsolète mais plutôt mysqli ou PDO 😉

                          hbY2yJ9.gif7CNtQh6.gif

                          1 réponse Dernière réponse
                          0
                          • SoulalexS Hors-ligne
                            SoulalexS Hors-ligne
                            Soulalex
                            a écrit sur dernière édition par
                            #13

                            En effet et je te recommande d'utiliser le PDO 😉

                            http://php.net/manual/fr/book.pdo.php

                            https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql

                            Soulalex, Administrateur de Melinyel
                            + E-Mail : [[email protected]](mailto:[email protected] "Lien vers un courriel")
                            + GitHub : [https://github.com/Soualex](https://github.com/Soualex "Lien externe")

                            1 réponse Dernière réponse
                            0
                            • E Hors-ligne
                              E Hors-ligne
                              EyesGammer
                              a écrit sur dernière édition par
                              #14

                              A ok merci de l'aide 🙂 je vais essayer

                              1 réponse Dernière réponse
                              0
                              • E Hors-ligne
                                E Hors-ligne
                                EyesGammer
                                a écrit sur dernière édition par
                                #15

                                <?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); ?>

                                Je ne omprend  pas bien comment utiliser le $user et le $pass,

                                Vous pouver peut etre  m'aider?

                                1 réponse Dernière réponse
                                0
                                • vfrzV Hors-ligne
                                  vfrzV Hors-ligne
                                  vfrz
                                  a écrit sur dernière édition par
                                  #16

                                  Ben c'est des variables non ? Donc tu dois définir leurs valeurs au dessus. Si c'est ca la problème, il va falloir apprendre le php plus en profondeur avant de vouloir faire ce genre de chose 😉

                                  hbY2yJ9.gif7CNtQh6.gif

                                  1 réponse Dernière réponse
                                  0
                                  • E Hors-ligne
                                    E Hors-ligne
                                    EyesGammer
                                    a écrit sur dernière édition par
                                    #17

                                    Salut vfrz, en gros je fait:

                                    $user = '#';

                                    et a la place du # je met mes informations?

                                    Et pour te répondre  va  sur mon site voir ce que j'ai reussi a faire: http://eyesgammer.pe.hu/

                                    (Evidemment le site n'est pas fini)

                                    1 réponse Dernière réponse
                                    0
                                    • vfrzV Hors-ligne
                                      vfrzV Hors-ligne
                                      vfrz
                                      a écrit sur dernière édition par
                                      #18

                                      Il y a 11 heures, EyesGammer a dit :

                                      Salut vfrz, en gros je fait:

                                      $user = '#';

                                      et a la place du # je met mes informations?

                                      Et pour te répondre  va  sur mon site voir ce que j'ai reussi a faire: http://eyesgammer.pe.hu/

                                      (Evidemment le site n'est pas fini)

                                      Oui c'est ça, mais si tu ne sais pas comment fonctionne les variables c'est inquiétant, tu as suivis un cours php ?

                                      hbY2yJ9.gif7CNtQh6.gif

                                      1 réponse Dernière réponse
                                      0
                                      • E Hors-ligne
                                        E Hors-ligne
                                        EyesGammer
                                        a écrit sur dernière édition par
                                        #19

                                        Oui j'ai suivis des cours sur internet (gratuit) de plusieurs sites, mais je sais comment les variables fonctionne.

                                        Mais voila encore un probleme; j'ai essayé du coup comme il faut, et il y a encore plus de messages d'erreurs....

                                        Donc pourrai-tu me dire le "risque" si je laisse ma connection mysql comme je l'ai actuellement?

                                        1 réponse Dernière réponse
                                        0
                                        • F Hors-ligne
                                          F Hors-ligne
                                          Fyshi
                                          a écrit sur dernière édition par
                                          #20

                                          Hellow !

                                          Le risque que tu encours est que ton site ne fonctionne pas sous PHP 7.0, car cette fonction a était supprimer. Je vais te fait donc un petit cours de PDO. (Vraiment petit car c'est beaucoup plus subtil que ça)

                                          Pour te connecter à une base de données, la solution ta était donné plus haut, c'est bien:

                                          $dbh = new PDO('mysql:host=localhost;dbname=LeNomDeTaBaseDeDonnées', 'TonNomDeCompte', 'TonMotDePasse');
                                          

                                          Tu l'auras compris, tu dois modifier les "LeNomDeTaBaseDeDonnées", "TonNomDeCompte" et "TonMotDePasse" par ce qui est marqué.

                                          Ensuite, pour faire une requête dedans, rien de plus simple, on procède comme ça:

                                          $TaRequêteSql = $dbh->prepare('SELECT * FROM NomDeTaTable');
                                          $TaRequêteSql->execute();
                                          

                                          Tu peux modifier la requête sql par ce que tu veux, la j'ai mis un simple SELECT.

                                          Ensuite, si tu veux "manipuler" les données, tu dois faire:

                                          $TesDonnées = $TaRequêteSql->fetchAll();
                                          

                                          Enfin, je te renvoie à la documentation sur PDO pour le reste.

                                          http://php.net/manual/fr/book.pdo.php

                                          Et voici un très bon cours qui te permettras de comprendre PDO plus facilement:

                                          https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/lire-des-donnees-2

                                          Bonne chance. ^-^

                                          1 réponse Dernière réponse
                                          0

                                          Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

                                          Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

                                          Grâce à votre participation, ce message peut devenir encore meilleur 💗

                                          S'inscrire Se connecter
                                          Répondre
                                          • Répondre à l'aide d'un nouveau sujet
                                          Se connecter pour répondre
                                          • Du plus ancien au plus récent
                                          • Du plus récent au plus ancien
                                          • Les plus votés


                                          • Se connecter

                                          • Connectez-vous ou inscrivez-vous pour faire une recherche.
                                          Powered by NodeBB Contributors
                                          • Premier message
                                            Dernier message
                                          0
                                          • Catégories
                                          • Récent
                                          • Mots-clés
                                          • Populaire
                                          • Web
                                          • Utilisateurs
                                          • Groupes