Creation de comptes - Envoie de messages prives

Suivre ce topic
Ce topic est suivi par : Senti
Senti

Senti Le 2 novembre 2017 à 13:08 (Édité le 25 janvier 2019 à 17:54)


Salut a tous (j'ai pas les accents sur mon ordi 😀), j'ai un soucis. J'ai suivi les tutos sur la creation d'un espace membre et sur l'envoie de messages privees. Tout marchait tres bien et un jour la creation de comptes ne marche plus alors que je n'avais fais aucune modif (je peut toujours me connecter aux comptes deja existant mais impossible d'en creer de nouveaux). J'ai essaye de copier le code de la video mais ca ne marche toujours pas et puis un peu apres c'est le systeme d'envoie de messages entre les membres qui fonctionne plus. Je peux encore me connecter et le chat marche toujours donc d'autres connexion a la bdd fonctionnent bien. Mais depuis un certain temps, en haut de phpmyadmin il n'y a plus marque server: Localhost mais server : MySQL:3306. Je vous met le code de la page de creation de code. PS : ca ne me met aucune erreur le script s'effectue jusq'au bout et me redirige sur la page de connexon comme si tout marchait.
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=pageweb', 'root', '');
if(isset($_POST['forminscription']))
{
  $pseudo = htmlspecialchars($_POST['pseudo']);
  $mail = htmlspecialchars($_POST['mail']);
  $mdp = sha1($_POST['mdp']);
  $mdp2 = sha1($_POST['mdp2']);
  if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
  {
    $pseudolength = strlen($pseudo);
    if($pseudolength <= 20)
      {
        $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo =?");
        $reqpseudo->execute(array($pseudo));
        $pseudoexist = $reqpseudo->rowCount();
        if($pseudoexist == 0)
        {
          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)
                {
                  $insertmbr = $bdd->prepare('INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)');
                  $insertmbr->execute(array($pseudo, $mail,$mdp));
                  header("Location: connexion.php");
                }
                else
                {
                  $erreur = "Vos mots de passes ne correspondent pas !";
                }
              }
              else {
                $erreur = "Adresse mail déja utilisée !";
              }
          }
          else
          {
            $erreur = "Votre adresse mail n'est pas valide !";
          }
        }
        else
        {
          $erreur = "Pseudo déjà utilisée !";
        }
      }
    else
    {
      $erreur = "Votre pseudo ne doit pas dépasser 20 charactÚres !";
    }
  }
  else
  {
    $erreur = "Tous les champs doivent être complétés !";
  }
}
?>
<html>
  <head>
    <meta charset="utf-8">
    <title>Menu</title>
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="jquery.mCustomScrollbar.min.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="jquery.mCustomScrollbar.concat.min.js"></script>
    <script>
    (function($){
        $(window).on("load",function(){
            $("body").mCustomScrollbar({
              theme:'minimal-dark'
            });
        });
    })(jQuery);
  </script>
  </head>
  <body>
    <header class="header_profil">
      <img class="radnik" src="images/z_radnik.gif" alt="">
      <a class="deja2" href="connexion.php"><h3>Se connecter</h3></a>
      <a href="accueil.php"><h1>Mon site</h1></a>
      <h2>Vous voici sur la page d'inscription</h2>
    </header>
    <section class="inscri">
    <div class="" align="center">
      <h3>Inscription</h3>
      <br><br>
      <form method="POST" action="" class="formu">
        <table>
          <tr>
            <td>
              <input class="basic user" type="text" placeholder="Votre Pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>"/>
            </td>
          </tr>
            <tr>
            <td>
              <input class="basic mail" type="email" placeholder="Votre E-mail" id="mail" name="mail"  value="<?php if(isset($mail)) { echo $mail; } ?>"/>
            </td>
        </tr>
    <tr>
    <td>
      <input class="basic pass" type="password" placeholder="Votre mot de passe" id="mdp" name="mdp"/>
    </td>
</tr>
<tr>
<td>
  <input class="basic pass" type="password" placeholder="Confirmez - Mot de passe" id="mdp2" name="mdp2"/>
</td>
</tr>
</table>
<br>
<input type="submit" name="forminscription" value="Je m'inscris">
      </form>
      <?php
      if(isset($erreur))
      {
        echo "<font color='red'>" .$erreur."</font><br>";
      }
       ?>
       <a  class="deja" href="connexion.php">Vous avez déjà un compte ? Connectez-vous ici !</a>
    </div>
    </section>
  </body>
</html>

SkaalZealot

SkaalZealot Le 3 novembre 2017 à 04:45

Tu peut t'inspiré de mon propre code si tu veut 😀

Mais j'ai des fonctions plus avancer qu'il n'a pas tu a juste a les supprimer

Tu enlève le :

  • checkCsrf();
  • les erreur remplace les par les tienne 
  • la fonction setFlash
  • et redirect(); tu le remplace le header('Location') que tu a ligne 30
  • $db remplace le par $bdd
Il faut aussi faire attention les
[]; 
sont égal a
array();
alors ne les supprime pas ou remplace les par
array();
si son code n'est pas compatible avec les nouvel version de PHP et bien sur remplace le nom des POST
  if(!empty($_POST)){
        $username = strip_tags(trim($_POST['username']));
        $pass = trim($_POST['password']); 
        $password_confirm = trim($_POST['password_confirm']); 
        checkCsrf();//on vérifie tout de meme les failles csrf
        $error = '';
            if(empty($username) || !preg_match('/^[a-zA-Z0-9_]+$/', $username)){
                $error .= errors(["Votre pseudo n'est pas valide selement des minuscules/majuscule et underscore (_)"]);
            }if((strlen($username) < 3) || (strlen($username) > 30)){
                $error .= errors(['le titre doit contenir au moins 4 caractèreset et être inférieure a 10']);
            }if(empty($error)){
                $req = $db->prepare('SELECT id FROM users WHERE username = ?');
                $req->execute([$username]);
                $user = $req->fetch();
                if($user){
                   $error .= errors(["Pseudo est déjà utiliser"]);
                }
            }if(empty(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
                $error .= errors(["Votre email n'est pas valide"]);
            }
            if(!empty($_POST['captcha'] != $_SESSION['captcha'])){
                $error .= errors(["Le captcha n'est pas valide"]);
            }if(empty($_POST['captcha'])){
                $error .= errors(["Le captcha est obligatoire"]);
            }
            if(empty($error)){
                $req = $db->prepare('SELECT id FROM users WHERE email = ?');
                $req->execute([$_POST['email']]);
                $email = $req->fetch();
                if($email){
                    $error .= errors(["Email est déjà utiliser"]);
                }
            }if(!empty($pass != $password_confirm)){
                    $error .= errors(["Vos mots de pass sont diférent"]);
                }if((strlen($pass) < 6) || (strlen($pass) > 100)){
                    $error .= errors(["Le mots de pass est trop court 6 mini et maxi 100 caractères"]);
                }if(empty($error)){
                    $req = $db->prepare("INSERT INTO users SET username = ?, password = ?, email = ?, confirmed_token = ?, date_inscription = now()");
                    $password = password_hash($pass, PASSWORD_BCRYPT);
                    $token = str_random(60);
                    $req->execute([$username,  $password, $_POST['email'], $token]);
                    $user_id = $db->lastInsertId();
                    
                    $header="MIME-Version: 1.0\r\n";
                    $header.='From:"'.$_SERVER['HTTP_HOST'].'"<support@'.$_SERVER['HTTP_HOST'].'.com>'."\n";
                    $header.='Content-Type:text/html; charset="uft-8"'."\n";
                    $header.='Content-Transfer-Encoding: 8bit';
                
                    $message = '
                    <html>
                        <body>
                            <div align="center">
                            
                                Votre mots de pass : '. $_POST['password'] .'
                            
                                Pour valider votre compte merci de cliquer sur ce >> <a href="http://'.$_SERVER['HTTP_HOST'].'/confirm/'.urlencode($username).'/'.$token.'" target="_blank" >LIEN</a> <<
                            </div>
                        </body>
                    </html>
                    ';
                
                    mail($_POST['email'], 'Confirmation de votre inscription',$message,$header);
                    setFlash('<strong>Super !</strong> Vous êtes bien inscrit reste a valider votre compte ! par Email');
                    redirect('home');
                }  
        }




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