Vérification de l'authenticité du compte
Résolu/Fermé
Utilisateur anonyme
-
21 avril 2017 à 09:16
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 15 mai 2017 à 17:12
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 15 mai 2017 à 17:12
A voir également:
- Vérification de l'authenticité du compte
- Supprimer compte instagram - Guide
- Compte facebook piraté - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Compte instagram piraté - Guide
4 réponses
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
Modifié le 21 avril 2017 à 09:43
Modifié le 21 avril 2017 à 09:43
Bonjour,
Une seule requête suffit ...
De là ... ta requête te retourne les infos (si le pseudo et le password sont bon.. ) de l'utilisateur.
Donc tu as directement les infos correspondantes à l'utilisateur :
- id
- pseudo
- mail
- confirme
- ban
NB: Comme indiqué dans la doc .. il faut éviter d'utiliser RowCOunt.
Il est préférable de faire un fetchAll de ta requête puis d'y faire un COUNT.
Pense également à activer la gestion des erreurs PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Cordialement,
Jordane
Une seule requête suffit ...
SELECT * FROM membres WHERE pseudo = ? AND pass = ?
De là ... ta requête te retourne les infos (si le pseudo et le password sont bon.. ) de l'utilisateur.
Donc tu as directement les infos correspondantes à l'utilisateur :
- id
- pseudo
- confirme
- ban
NB: Comme indiqué dans la doc .. il faut éviter d'utiliser RowCOunt.
Il est préférable de faire un fetchAll de ta requête puis d'y faire un COUNT.
$sql = "SELECT * FROM membres WHERE pseudo = ? AND pass = ?"; $datas = array($pseudoconnect, $passconnect); try{ $prep= $bdd->prepare($sql); $prep->execute($datas); $a_result = $prep->fetchAll(); $nbResult = !empty($a_result) ? count($a_result) : 0; }catch(Exception $e){ echo " Erreur : " . $e->getMessage(); } $userexist = $nbResult; if($userexist == 1) { $userinfo = $a_result[0]; $id = $userinfo['id']; $confirme= $userinfo['confirme']; $ban= $userinfo['ban']; $mail= $userinfo['mail']; if($ban == 1 ){ if($mail == 1 ){ $_SESSION['id'] = $id; $_SESSION['pseudo'] = $pseudoconnect $_SESSION['mail'] = $mail; header("Location: profil.php?id=".$id); exit(); }else{ $erreur = "L'email n'a pas été validé !"; } }else{ $erreur = "Votre compte à été bannis !"; } }else{ $erreur = "Mauvais identifiant inscrit !"; }
Pense également à activer la gestion des erreurs PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Cordialement,
Jordane
Utilisateur anonyme
15 mai 2017 à 11:40
15 mai 2017 à 11:40
Je ne comprends pas trop password_verify je ne suis pas un expert dans le php, c'est à dire le code actuel de ma page, tu veux dire tout le code?
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
15 mai 2017 à 11:44
15 mai 2017 à 11:44
Je ne comprends pas trop password_verify je ne suis pas un expert dans le php
C'est bien pour ça que je t'ai donné le lien vers la documentation ET un lien vers un exemple.
'est à dire le code actuel de ma page, tu veux dire tout le code?
Ben oui.... le code que tu as désormais suite aux modifications proposées dans les réponses précédentes.....
Utilisateur anonyme
Modifié le 15 mai 2017 à 13:17
Modifié le 15 mai 2017 à 13:17
<?php session_start(); include('../php/config.php'); if(isset($_POST['form_connexion'])) { $sql = "SELECT * FROM membres WHERE pseudo = ? AND pass = ?"; $datas = array($pseudoconnect, $passconnect); try{ $prep= $bdd->prepare($sql); $prep->execute($datas); $a_result = $prep->fetchAll(); $nbResult = !empty($a_result) ? count($a_result) : 0; }catch(Exception $e){ echo " Erreur : " . $e->getMessage(); } $userexist = $nbResult; if($userexist == 1) { $userinfo = $a_result[0]; $id = $userinfo['id']; $confirme= $userinfo['confirme']; $ban= $userinfo['ban']; $mail= $userinfo['mail']; if($ban == 1 ){ if($mail == 1 ){ $_SESSION['id'] = $id; $_SESSION['pseudo'] = $pseudoconnect; $_SESSION['mail'] = $mail; header("Location: profil.php?id=".$id); exit(); }else{ $erreur = "L'email n'a pas été validé !"; } }else{ $erreur = "Votre compte à été bannis !"; } }else{ $erreur = "Mauvais identifiant inscrit !"; } } ?>
<!DOCTYPE html> <html> <head> <title>Connexion</title> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Connexion PHP / CSS / HTML" /> <meta name="author" content="Amnexia" /> <meta name="google" content="notranslate" /> <link rel="shortcut icon" href="../asset/favicon.png" /> <link rel="stylesheet" type="text/css" href="../asset/css/style.css" /> <link rel="stylesheet" type="text/css" href="../asset/css/animate-custom.css" /> </head> <body background="../asset/img/bg.jpg"><br /><br /><br /><br /><br /><br /> <div id="container_demo" > <a class="hiddenanchor" id="tologin"></a> <div id="wrapper"> <div id="login" class="animate form"> <form method="POST" action=""> <h1> Connexion </h1> <p> <label for="pseudoconnect" class="uname" data-icon="u" > Pseudo : </label> <input id="pseudoconnect" autocomplete="off" name="pseudoconnect" required="Pseudo Requis /!\" type="text" placeholder="Pseudo"/> </p> <p> <label for="password" class="youpasswd" data-icon="p"> Mot de passe : </label> <input id="password" autocomplete="off" name="passconnect" required="Mot de passe Requis /!\" type="password" placeholder="Mot de passe" /> </p> <p class="login button"> <input type="submit" name="form_connexion" value="Se connecter" /> </p> <p class="change_link"> Pas encore inscrit ? <a href="inscription.php" rel="nofollow noopener noreferrer" target="_blank" class="to_register">Inscrit toi !</a><a href="recup.php" rel="nofollow noopener noreferrer" target="_blank" class="to_register">Mot de passe oublié ?</a> </p> </form> </div> </div> </div> <center> <?php if(isset($erreur)) { echo '<font color="red" size="5">'.$erreur.'</font>'; } ?> </center> </body> </html>
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
15 mai 2017 à 14:07
15 mai 2017 à 14:07
Et... dans ton code ... à quel moment initialises-tu tes variables $pseudoconnect et $passconnect ??
Tu as oublié non ?
NB : Le htmlspecialchar que tu avais mis (et que j'ai retiré) n'est utile qu'à l'AFFICHAGE ...
Tu as oublié non ?
$pseudoconnect = !empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL; $passconnect = !empty(_POST['passconnect']) ? hash("sha512",($_POST['passconnect'])) : NULL;
NB : Le htmlspecialchar que tu avais mis (et que j'ai retiré) n'est utile qu'à l'AFFICHAGE ...
Utilisateur anonyme
>
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
15 mai 2017 à 15:52
15 mai 2017 à 15:52
Merci, oui ça fonctionne largement mieux avec ça, cela passe les étapes comme convenu mais ça bug maintenant au niveau du mail valide ou pas peu importe 0 ou 1 c'est compté comme invalide ( " L'email n'a pas été validé ! " ).
Je te remet le code php.
Je te remet le code php.
session_start(); include('../php/config.php'); $pseudoconnect = !empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL; $passconnect = !empty($_POST['passconnect']) ? hash("sha512",($_POST['passconnect'])) : NULL; if(isset($_POST['form_connexion'])) { $sql = "SELECT * FROM membres WHERE pseudo = ? AND pass = ?"; $datas = array($pseudoconnect, $passconnect); try{ $prep= $bdd->prepare($sql); $prep->execute($datas); $a_result = $prep->fetchAll(); $nbResult = !empty($a_result) ? count($a_result) : 0; }catch(Exception $e){ echo " Erreur : " . $e->getMessage(); } $userexist = $nbResult; if($userexist == 1) { $userinfo = $a_result[0]; $id = $userinfo['id']; $confirme= $userinfo['confirme']; $ban= $userinfo['ban']; $mail= $userinfo['mail']; if($ban == 1 ) { if($mail == 1 ) { $_SESSION['id'] = $id; $_SESSION['pseudo'] = $pseudoconnect; $_SESSION['mail'] = $mail; header("Location: profil.php?id=".$id); exit(); } else { $erreur = "L'email n'a pas été validé !"; } } else { $erreur = "Votre compte à été bannis !"; } } else { $erreur = "Mauvais identifiant inscrit !"; } }
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
Utilisateur anonyme
15 mai 2017 à 16:15
15 mai 2017 à 16:15
ça bug maintenant au niveau du mail valide ou pas peu importe 0 ou 1 c'est compté comme invalide ( " L'email n'a pas été validé ! " ).
Tu mets le 0 ou 1 à quel endroit ? Dans ta BDD ?
Peux tu faire un
print_r( $a_result);
et nous dire ce que ça t'affiche.
Au passage .. il existe une "norme" pour l'écriture du code. Elle n'est pas obligatoire.. mais dans l'ensemble cela permet de rendre le code plus lisible (et homogène..) pour tout le monde.
Donc pour tes if/else... si tu pouvais en tenir compte.. merci.
https://www.php-fig.org/psr/psr-2/#if-elseif-else
Utilisateur anonyme
>
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
15 mai 2017 à 16:21
15 mai 2017 à 16:21
Voila ce que ça me donne :
Array ( [0] => Array ( [id] => 13 [0] => 13 [pseudo] => Amnexiaa [1] => Amnexiaa [pass] => *********** [mail] => ******@************ [3] => ******@************ [avatar] => 0.jpg [4] => 0.jpg [confirmkey] => 81087108134862199 [5] => 81087108134862199 [confirme] => 1 [6] => 1 [age] => 0 [7] => 0 [modo] => 1 [8] => 1 [ban] => 1 [9] => 1 [recup] => [10] => ) )
Array ( [0] => Array ( [id] => 13 [0] => 13 [pseudo] => Amnexiaa [1] => Amnexiaa [pass] => *********** [mail] => ******@************ [3] => ******@************ [avatar] => 0.jpg [4] => 0.jpg [confirmkey] => 81087108134862199 [5] => 81087108134862199 [confirme] => 1 [6] => 1 [age] => 0 [7] => 0 [modo] => 1 [8] => 1 [ban] => 1 [9] => 1 [recup] => [10] => ) )
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
>
Utilisateur anonyme
Modifié le 15 mai 2017 à 16:34
Modifié le 15 mai 2017 à 16:34
Donc ta variable mail .. est : [mail] => ******@************
Donc.. elle ne vaut pas 1 ....
Toi ça serait plutôt la vairable CONFIRME que tu veux utiliser non ?
[confirme] => 1
Donc.. elle ne vaut pas 1 ....
Toi ça serait plutôt la vairable CONFIRME que tu veux utiliser non ?
[confirme] => 1
if($mail == 1 ) {A remplacer donc par :
if($confirme== '1' ) {
Modifié le 15 mai 2017 à 10:03
Une erreur est apparu aussi à ta ligne 26 tu as oublié le signe " ; " x)
Et surtout quand j'arrive directement sur la page sans me logé j'ai par défault l'erreur mauvais identifiant.
15 mai 2017 à 10:35
ça arrive ... quand on code de tête ...
Il suffit de placer mon code dans ton premier IF
Ben je ne sais pas ... quel est le code actuel de ta page ?
Et puis... désormais pour vérifier les mots de pass en php il est conseillé d'utiliser la fonction password_verify
Voici un exemple :
https://forums.commentcamarche.net/forum/affich-34340900-login-password-php#7