Login - Password PHP
Résolu/Fermé
M_Tufux
Messages postés
70
Date d'inscription
dimanche 11 octobre 2015
Statut
Membre
Dernière intervention
6 juin 2017
-
6 févr. 2017 à 16:45
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 7 févr. 2017 à 18:33
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 7 févr. 2017 à 18:33
A voir également:
- Password_verify
- Winrar password unlocker - Télécharger - Récupération de données
- Easy php - Télécharger - Divers Web & Internet
- Password recovery - Télécharger - Récupération de données
- My.canalbox.africa/login ✓ - Forum Box et Streaming vidéo
- Facebook.com/login/identify en francais - Forum Facebook
2 réponses
jordane45
Messages postés
38136
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 avril 2024
4 649
6 févr. 2017 à 16:59
6 févr. 2017 à 16:59
Bonjour,
1 - Place le code de connexion à ta BDD à part ... pour ne pas avoir à la réécrire à chaque fois ...
2 - Active la gestion des erreurs PDO
voir ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
3 - Voici un petit exemple :
1 - Place le code de connexion à ta BDD à part ... pour ne pas avoir à la réécrire à chaque fois ...
2 - Active la gestion des erreurs PDO
voir ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
3 - Voici un petit exemple :
<?php // fichier de connexion à la bdd : cnxBdd.php function get_cnx(){ $bdd = NULL; try{ $bdd = new PDO('mysql:host=localhost;dbname=siteTest', $userdb, $passdb); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } return $bdd; }
jordane45
Messages postés
38136
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 avril 2024
4 649
Modifié par jordane45 le 7/02/2017 à 18:38
Modifié par jordane45 le 7/02/2017 à 18:38
Histoire d'améliorer un peu :
Index.php
Fichier de connexion à la bdd
Tes autres codes :
Index.php
<?php session_start(); include('head.php'); $error = ''; $bLogin = false; $bRegister = false; //VERIFIE SI FORMULAIRE ENVOYÉ OU PAS if(isset($_POST['deco'])){ session_destroy(); } // Récupération PROPRE des variables AVANT de les utiliser : $userName = !empty($_POST['userName']) ? $_POST['userName'] : NULL; $password = !empty($_POST['pass']) ? $_POST['pass'] : NULL; $user = isset($_SESSION['user']) ? $_SESSION['user'] : ""; if($userName && $pass)){ if(isset($_POST['valider'])){ $bLogin = Login ($userName, $password); if($bLogin == true){ $_SESSION['user'] = $userName; } else { echo "LOGIN OU MOT DE PASSE INVALIDE"; } } if(isset($_POST['register'])){ $bRegister = Register($userName, $password); if($bRegister == true){ $_SESSION['user'] = $userName; } } } else{ $error = 'Veuillez remplir tous le champs!'; } ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf8"> <title></title> </head> <body> <!-- FORMULAIRE AVEC LOGIN MDP --> <div id="divIndex1"> <form action="" method="POST"> <label class="login">Nom d'utilisateur</label><input class="inputLogin" type="text" name="userName" /><br/> <label class="login">Mot de passe</label><input class="inputLogin" type="password" name="pass"><br/> <label id="login-submit"><?php echo $error; ?></label><input class="inputLogin" type="submit" name="valider" value="valider"/> <input class="inputLogin" type="submit" name="register" value="s'enregistrer"/><br/> <?php echo $user;} ?> </form> <?php if(!empty($user)){ ?> <form action="" method="POST"> <input class="inputLogin" type="submit" name="deco" value="se déconnecter"/> </form> <?php } ?> </div> </body> <?php include('footer.php'); ?> </html>
Fichier de connexion à la bdd
<?php // fichier de connexion à la bdd : cnxBdd.php function get_cnx(){ $bdd = NULL; $userdb = 'root'; $passdb = ''; try{ $bdd = new PDO('mysql:host=localhost;dbname=siteTest', $userdb, $passdb); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } return $bdd; }
Tes autres codes :
<?php //Import fichier de connexion à la bdd require_once "cnxBdd.php"; /** * Foncion LOGIN */ function Login($user, $pass){ $cnn = get_cnx(); try{ $stmt = $cnn->prepare('SELECT UserName, Password FROM login WHERE UserName = :user'); $stmt->bindParam(':user', $user); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_OBJ); }catch(Exception $e){ echo "Error !" .$e->getMessage(); } //print $row->Password; return password_verify($pass, $row->Password) ? true : false ; } /** * Foncion REGISTER */ function Register($user, $pass){ $pass = password_hash($pass, PASSWORD_DEFAULT); $cnn = $cnn = get_cnx(); try{ $stmt = $cnn->prepare('INSERT INTO login (UserName, Password) VALUES (:user, :pass)'); $stmt->bindParam(':user', $user); $stmt->bindParam(':pass', $pass); $result = $stmt->execute(); }catch(Exception $e){ echo "Error !" .$e->getMessage(); $result = false; } return $result; }
6 févr. 2017 à 17:01
7 févr. 2017 à 09:39
7 févr. 2017 à 10:17
- As tu vérifié ce que contenait ta variable $row->Password ?
- Ton champ Password dans ta BDD est dimensionné à combien de caractères ?
- Tu as fais un echo du hash dans ta fonction register pour voir si la valeur en BDD est correctement stockée ?
- Tu as quelle version de php ?
7 févr. 2017 à 16:44
C'est bon j'ai trouvé. J'avais hashé le mot de passe avant de le mettre dans le verify.
Et il y a LARGEMENT moyen d'optimiser tout ça. Le but de ce test était justement de me remettre dans le bain. L'optimisation peut-être que je m'en occuperai plus tard.
Voici mon code en vrac:
<?php
function Login($user, $pass){
$userdb = 'root';
$passdb = '';
$cnn = new PDO('mysql:host=localhost;dbname=siteTest', $userdb, $passdb);
$stmt = $cnn->prepare('SELECT UserName, Password FROM login WHERE UserName = :user');
$stmt->bindParam(':user', $user);
$stmt -> execute();
$row = $stmt->fetch(PDO::FETCH_OBJ);
print $row->Password;
if (password_verify($pass, $row->Password)) {
return true;
} else {
return false;
}
}
function Register($user, $pass){
$pass = password_hash($pass, PASSWORD_DEFAULT);
$userdb = 'root';
$passdb = '';
$cnn = new PDO('mysql:host=localhost;dbname=siteTest', $userdb, $passdb);
$stmt = $cnn->prepare('INSERT INTO login (UserName, Password) VALUES (:user, :pass)');
$stmt->bindParam(':user', $user);
$stmt->bindParam(':pass', $pass);
$stmt -> execute();
return true;
}
?>
Encore merci pour ton aide Jordane45
Bonne soirée!