TUTO PHP - Système de parrainage

PrimFX Boris ('PrimFX') Le 16 août 2015

Il existe différentes façons de mettre en place un système de parrainage sur un site internet. Je vous en propose donc une relativement simple qui vous donnera l'architecture de base en l'intégrant à un espace membre déjà créé ! Bien sûr, n'hésitez pas à ajuster le code en fonction de votre but, à créer des systèmes de rangs par points, etc.

  • inscription.php
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if(isset($_GET['p']) AND !empty($_GET['p'])){
   $parrain_uniqid = htmlspecialchars($_GET['p']);
   $req_parrain = $bdd->prepare('SELECT id FROM membres WHERE uniqid = ?');
   $req_parrain->execute(array($parrain_uniqid));
   $parrain_exist = $req_parrain->rowCount();
   if($parrain_exist == 1) {
      $id_parrain = $req_parrain->fetch();
      $id_parrain = $id_parrain['id'];
   }
}
if(isset($_POST['forminscription']))
{
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
   {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255)
      {
         if($mail == $mail2)
         {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL))
            {
               $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0)
               {
                  if($mdp == $mdp2)
                  {
                     $longueurKey = 15;
                     $key = "";
                     for($i=1;$i<$longueurKey;$i++) {
                        $key .= mt_rand(0,9);
                     }
                     $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, confirmkey, uniqid, id_parrain) VALUES(?, ?, ?, ?, ?, ?)");
                     if(isset($id_parrain) AND !empty($id_parrain)) {
                        $insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid(), $id_parrain));
                     } else {
                        $insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid(), 0));
                     }
                     $header="MIME-Version: 1.0\r\n";
                     $header.='From:"[VOUS]"<votremail@mail.com>'."\n";
                     $header.='Content-Type:text/html; charset="uft-8"'."\n";
                     $header.='Content-Transfer-Encoding: 8bit';
                     $message='
                     <html>
                        <body>
                           <div align="center">
                              <a href="http://127.0.0.1/Tutos%20PHP/%2314%20%28Espace%20membre%29/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
                           </div>
                        </body>
                     </html>
                     ';
                     mail($mail, "Confirmation de compte", $message, $header);
                     $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
                  }
                  else
                  {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               }
               else
               {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            }
            else
            {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         }
         else
         {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      }
      else
      {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   }
   else
   {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Inscription</h2>
         <br /><br />
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo">Pseudo :</label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail">Mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail2">Confirmation du mail :</label>
                  </td>
                  <td>
                     <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp">Mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2">Confirmation du mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         <?php
         if(isset($erreur))
         {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
  • profil.php
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
include_once('cookieconnect.php');
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Profil de <?php echo $userinfo['pseudo']; ?></h2>
         <br /><br />
         <?php
         if(!empty($userinfo['avatar']))
         {
         ?>
         <img src="membres/avatars/<?php echo $userinfo['avatar']; ?>" width="150" />
         <?php
         }
         ?>
         <br /><br />
         <?php
         if(isset($_SESSION['id']) AND $_SESSION['id'] != $getid) {
            $isfollowingornot = $bdd->prepare('SELECT * FROM follow WHERE id_follower = ? AND id_following = ?');
            $isfollowingornot->execute(array($_SESSION['id'],$getid));
            $isfollowingornot = $isfollowingornot->rowCount();
            if($isfollowingornot == 1) {
         ?>
         Vous suivez cette personne <a href="follow.php?followedid=<?php echo $getid; ?>">Ne plus suivre cette personne</a>
         <br /><br />
         <?php }else { ?>
         <a href="follow.php?followedid=<?php echo $getid; ?>">Suivre cette personne</a>
         <br /><br />
         <?php
            }
         }
         ?>
         Pseudo = <?php echo $userinfo['pseudo']; ?>
         <br />
         Mail = <?php echo $userinfo['mail']; ?>
         <br />
         <?php
            $parrainages = $bdd->prepare('SELECT id FROM membres WHERE id_parrain = ?');
            $parrainages->execute(array($getid));
            $parrainages = $parrainages->rowCount();
         ?>
         Nombre de parrainages = <?php echo $parrainages; ?>
         <br />
         <?php
         if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id'])
         {
         ?>
         <br />
         <u>Parrainer un ami:</u> inscription.php?p=<?php echo $userinfo['uniqid']; ?><br /><br />
         <a href="editionprofil.php">Editer mon profil</a>
         <a href="reception.php">Mes messages</a>
         <a href="deconnexion.php">Se déconnecter</a>
         <?php
         }
         ?>
      </div>
   </body>
</html>
<?php   
}
?>

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 20 ans et je suis passionné d'informatique et de technologie. Diplômé d'une Licence Informatique de l'Université de Strasbourg, j'ai co-fondé en 2019 l'entreprise Single Quote et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles sur PrimFX.com 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 6

  • marestkm Le 6 juin, à 05:53 | Répondre

    1- Bonsoir Primfx, dans le cas du système de parrainage Si nous voulons mettre le lien suivie de du pseudo de la personnes comment ça se passe ?
    2- comment fait Si je veux montrer le nombre des personnes inscrites dans le profile du parrain ?
    ensuite
    ex: il y a plusieurs parrain qui s’inscrivent des filleuls en même temps et cela fait par ordre d'arrivée. EX: Erci, alin , mathieu............. son sur la même lignée mais par ordre d’arrivée
    STP aide moi à comprend ça .

  • essai Le 3 janvier, à 17:09 | Répondre

    Bonjour,
    Dommage que la bdd ne soit pas à télécharger pour les essais !

  • Kasilon Le 30 juillet, à 22:19 | Répondre

    Bonjour, j'ai un site plus développé avec un design et tout et une sécurité optimal, je viens de représenter à peu prêt ce tuto, mais dans la page d'inscription, sa ne fonctionne pas, merci de me contacter sur fcb (seul moyen de contact) https://www.facebook.com/profile.php?id=100008373458183

  • Michima Le 11 avril, à 11:49 | Répondre

    Bonjour, Code très explicite. Merci pour ce tutoriel

  • Azok30 Le 20 mars, à 22:37 | Répondre

    @MSTC Oui, tu paye comme on la plus part de personnes respectueuses de travail bien fait.

  • MSTC Le 12 décembre, à 10:54 | Répondre

    Pourrais-je avoir le code ?