[RESOLU] inscription / connexion a un site web

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] inscription / connexion a un site web

Re: inscription / connexion a un site web

par Event789 » 25 sept. 2019, 18:06

j'ai trouvé mon erreur à la ligne du if($user_exist == 1)
il faut mettre sans le tirer du 8 donc ça : " if($userexist == 1) "

mais la partie verdier mot de passe je ne sais pas sil elle fonctionne. car elle quand on fait un

Code : Tout sélectionner

echo "mdp :". $_SESSION['password'];
cela n'affiche rien. donc je suppose que mon tableau est vide. donc ca viendrait du fetch :?

Code : Tout sélectionner

$requser = $bdd->prepare("SELECT * FROM Membres WHERE Email = ?"); $requser->execute(array($mailconnect)); $userexist = $requser->rowCount(); // if($userexist == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['nom'] = $userinfo['nom']; $_SESSION['prenom'] = $userinfo['prenom']; $_SESSION['Telephone'] = $userinfo['Telephone']; $_SESSION['Email'] = $userinfo['Email']; $_SESSION['password'] = $userinfo['password']; echo "mdp1 :". $userinfo['password']. "</br>"; echo "mdp :". $_SESSION['password']; if (password_verify($mdp, $_SESSION['password'])) { header("Location: profil.php?id=".$_SESSION['id']); } else { $erreur1 = "Mauvais mot de passe !"; }

Re: inscription / connexion a un site web

par @rthur » 25 sept. 2019, 00:23

si vous avez des idées d'ou peut venir le problème je suis preneur
Difficile de relire tout ton code.
Repars des exemples de la doc dans une page vierge déjà pour voir si cela fonctionne bien.

Re: inscription / connexion a un site web

par Event789 » 24 sept. 2019, 19:54

si vous avez des idées d'ou peut venir le problème je suis preneur

Re: [RESOLU] inscription / connexion a un site web

par Event789 » 23 sept. 2019, 22:34

J'ai fait ca, je verifie si tous les champs sont remplis puis je fais une requête avec l'adresse mail. si le mail est stocké en BDD alors je test si le mdp est le meme mais ca ne fonctionne pas :?

Code : Tout sélectionner

<?php session_start(); $bdd = new PDO('mysql:host=*;dbname=*;charset=utf8', '*', '*'); if(isset($_POST['formconnexion'])) { $mailconnect = htmlspecialchars($_POST['EM']); $mdp = htmlspecialchars($_POST['pass1']); if( !empty($mailconnect) AND !empty($mdpconnect) ){ $requser = $bdd->prepare("SELECT * FROM Membres WHERE Email = ? "); $requser->execute(array($mailconnect)); $userexist = $requser->rowCount(); // if($user_exist == 1) { $userinfo = $requser->fetch(); $_SESSION['password'] = $userinfo['password']; if (password_verify($_POST['pass1'], $_SESSION['password'])) { echo "salut"; } else { echo "coucou"; } $_SESSION['id'] = $userinfo['id']; $_SESSION['nom'] = $userinfo['nom']; $_SESSION['prenom'] = $userinfo['prenom']; $_SESSION['mail'] = $userinfo['mail']; header("Location: profil.php?id=".$_SESSION['id']); } else { $erreur1 = "Mauvais mail ou mot de passe !"; } }else{ $erreur1 = "Tous les champs doivent être complétés !"; } } ?> <form method="post" action="" name="Co" id="Form-Connexion"> <section id="infoperso1"> <section id="info-Co"> <input type="email" name="EM" placeholder="Identifiant" id="EM" value="<?php if(isset($mailconnect)) {echo $mailconnect;} ?>"/> <input type="password" name="pass1" placeholder="Mot de passe" id="Pass"/> <h3> Votre identifiant est votre l’adresse mail. </h3> </section> <section id="Boutons"> <p> <input type="submit" name="formconnexion" value="Connexion" id="envoi"> </p> </section> </section> </form>

Re: [RESOLU] inscription / connexion a un site web

par @rthur » 23 sept. 2019, 21:40

Bonjour,

En utilisant la fonction password_verify()
https://php.net/password_verify

Re: [RESOLU] inscription / connexion a un site web

par Event789 » 23 sept. 2019, 21:01

Bonsoir, j'ai une question comment je peux comparer le mot de passe que rentre l’utilisateur quand il se connecte. Avec le mot de passe stocker dans la BDD vue que la fonction 'password_hash' crée une chaîne de caractère différente a chaque fois.

exemple pour le mdp : 123
le password_hash peut renvoyer : $2y$10$wtJbpxpBr79qnSyomh.MlOD9QkGiSO4/T7GKW5XYlZ.l1izZUvfMK
ou ca : $2y$10$HCo71ts/OfFT82AJPa/kuOeJRmqK3diep0Y1knz1P5d4Junjk447W

Re: inscription / connexion a un site web

par Event789 » 22 sept. 2019, 20:51

Ca marche merci.

Re: inscription / connexion a un site web

par or 1 » 22 sept. 2019, 20:02

if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
possible que cela ne passe plus le filtre avec des balises.

$requser = $bdd->prepare("SELECT * FROM Membres WHERE Email = ? AND Password = ?");
et si cela passe le filtre, c'est utilisé dans une requête préparée où la balise est inoffensive.

Re: inscription / connexion a un site web

par Event789 » 22 sept. 2019, 19:12

Merci je n'avais pas vue le $mail ça m'apprendra a copié mes anciens code ...
htmlspecialchars sert pour être sure que l'on envoie pas de balise non ?

Re: inscription / connexion a un site web

par or 1 » 22 sept. 2019, 18:50

$mailconnect = htmlspecialchars($_POST['EM']);
if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {

il faudrait vous mettre d'accord sur les noms.

htmlspecialchars est à utiliser quand on affiche une variable dans une page web, là cela peut poser problème.

inscription / connexion a un site web

par Event789 » 22 sept. 2019, 18:42

bonjour, je voudrais créer un système d'inscription et de connexion sur mon site internet. j'ai déjà crée une base de donnée SQL avec des tables qui sont remplis par ma page inscription. Jusque la tous fonctionne !
Mais la partie connexion de fonctionne pas :

Code : Tout sélectionner

<body> <?php session_start(); $bdd = new PDO('mysql:host=****;dbname=****;charset=utf8', '****', '****'); if(isset($_POST['formconnexion'])) { $mailconnect = htmlspecialchars($_POST['EM']); $mdpconnect = password_hash($_POST['pass1'], PASSWORD_DEFAULT); if( !empty($mailconnect) AND !empty($mdpconnect) ) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { // $mdp_hash_connect = password_hash($_POST['pass1'], PASSWORD_DEFAULT); /* $req_mail_pass = $bdd->prepare("SELECT * FROM Membres WHERE Email = ? AND Password = ?"); $req_mail_pass->execute(array($mailconnect, $mdp_hash_connect)); $user_exist = $req_mail_pass->rowCount(); */ $requser = $bdd->prepare("SELECT * FROM Membres WHERE Email = ? AND Password = ?"); $requser->execute(array($mailconnect, $mdp_hash_connect)); $userexist = $requser->rowCount(); if($user_exist == 1) { $userinfo = $requser->fetch(); $_SESSION['IdMembres'] = $userinfo['IdMembres']; $_SESSION['nom'] = $userinfo['nom']; $_SESSION['prenom'] = $userinfo['prenom']; $_SESSION['mail'] = $userinfo['mail']; // header("Location: /profil.php?id=".$_SESSION['IdMembres']); header('location: ../index.php'); } else { $erreur1 = "Mauvais mail ou mot de passe !"; header('location: ../prix.php'); } } }else { $erreur1 = "Tous les champs doivent être complétés !"; } } ?> <div class="titre"> <h1>Connectez - Vous</h1> </div> <section id="Container-Connexion"> <form method="post" action="" name="Co" id="Form-Connexion"> <section id="infoperso1"> <section id="info-Co"> <input type="email" name="EM" placeholder="Identifiant" id="EM" value="<?php if(isset($mailconnect)) {echo $mailconnect;} ?>"/> <input type="password" name="pass1" placeholder="Mot de passe" id="Pass"/> <h3> Votre identifiant est votre l’adresse mail. </h3> </section> <section id="Boutons"> <p> <input type="submit" name="formconnexion" value="Connexion" id="envoi"> </p> </section> </section> </form> <div id="info-supp"> <a href="#" class="A-Deco"> <h2> Identifiant ou mot de passe oublié ? </h2> </a> <a href="/inscription.php" class="A-Deco"> <h2> Vous n’avez pas encore crée votre compte ? Créez-en un maintenant. </h2> </a> </div> <?php if(isset($erreur1)) { echo '<p>'.$erreur1.'</p>'; } ?> </section> </body>
si on remplit pas tout les champs il y a bien un message qui s'affiche mais si on fait le bon MDP ou le mauvais rien ne se passe -_-
merci d'avance pour votre aide. :D