Formulaire enregistrement mot de passe
kmorel
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour les amis. je suis entrain de créer un site internet et dans un premier temps les membres doivent s'enregistrer et recevoir un lien dans leur mail qui doit ensuite les rediriger vers une page sur laquelle ils doivent créer un mot de passe. et la j'ai un petit problème avec l'écriture du code. voila un peu ce que j'ai farfouillé.
code du formulaire:
code de la page de traitement:
Merci d'avance pour votre aide!
code du formulaire:
<form method="post" action="traitement-creation_pass"> <legend>Se connecter</legend> <p><label for="mail">Votre adresse mail</label>:<br/><input type="email" name="mail"id="mail" autofocus required/> <p><label for="pass1">Choississez votre mot de passe</label>:<input type="password" name="pass1" id="pass1" required/> <p><label for="pass2">Confirmez votre mot de passe</label>:<input type="password" name="pass2" id="pass2" required/> <p><input type="submit" value="valider" class="envoi"/> </p><br/>
code de la page de traitement:
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);?> <?php try{ $bdd =new PDO('mysql:host=localhost; dbname=reveil; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage());}?> <?php // Hachage du mot de passe $mail= !empty($_POST['mail']) ? $_POST['mail'] : NULL; $pass_hache = sha1($_POST['pass1']); // Vérification des identifiants $sql ='SELECT id, Nom FROM info_membres WHERE Mail = :Mail'; $datas=array( ':Mail' => $mail); $resultat = $sql->fetch(); if (!$resultat){echo '<p>Mauvais mail!</p> <form method="post" action="verification"> <legend>Se connecter</legend> <p><label for="mail">Votre adresse mail</label>:<input type="email" name="mail"id="mail" required/> <p><label for="pass">Votre mot de passe</label>:<input type="password" name="pass" id="pass" required/> <p><input type="submit" value="valider" class="envoi"/> </p><br/> <P><a href="inscription">Inscription</a></p> </form>';} else{session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['nom'] = $resultat['Nom']; $sql= 'INSERT INTO info_membres (mot_de_passe) Values(:mot_de_passe) WHERE id='$_SESSION[id]'' ; $datas=array( ':mot_de_passe'=>$pass_hache; echo '<p>Vous êtes connecté</p>' ?> <?php try{ $req = $bdd->prepare($sql); $req->execute($datas); }catch(Exception $e){ echo "<br>ERREUR dans la requête ! " . $sql ."<br>" .$e->getMessage();} ?>
Merci d'avance pour votre aide!
A voir également:
- Formulaire enregistrement mot de passe
- Whatsapp formulaire opposition - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, quel est le petit problème?
à ta place, moi je ferais un UPDATE plutôt qu'un INSERT pour modifier un enregistrement dans une table.
par ailleurs, il est préférable d'utiliser password_hash pour hacher le mot de passe, et password_verify pour vérifier un mot de passe.
à ta place, moi je ferais un UPDATE plutôt qu'un INSERT pour modifier un enregistrement dans une table.
par ailleurs, il est préférable d'utiliser password_hash pour hacher le mot de passe, et password_verify pour vérifier un mot de passe.
et comme erreur ça me dit:
Fatal error: Call to a member function fetch() on string in C:\wamp64\www\Test\traitement-creation_pass.php on line 11
Call Stack
que dois-je faire svp?
https://www.php.net/manual/fr/pdostatement.fetch.php
tu n'y es pas encore, mais voici un exemple de SQL UPDATE:
par ailleurs, si je comprends ce que tu fais, chacun peut changer n'importe quel mot de passe. je pense que tu dois envoyer un secret avec l'email, et vérifier ce secret au retour du formulaire.
tu pourrais, au moment d'envoyer le mail, créer un texte au hasard, le joindre au mail et l'enregistrer dans la base de données, avec le moment de l'envoi du mail. quand le formulaire revient, vérifier que le secret est récent et correct, et accepter le nouveau mot de passe. si le secret renvoyé par formulaire est incorrect, effacer la date pour forcer à demander un nouveau secret.