Autoriser la connexion au site avec le pseudo ou adresse mai
Résoluflexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
- Autoriser la connexion au site avec le pseudo ou adresse mai
- Gmail connexion - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Darkino nouvelle adresse - Guide
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
4 réponses
Bonjour,
dans mon formulaire de connexion
il n'y a que deux champs le premier qui acceuil le pseudo pour l'instant
Dans ce cas, tu n'as qu'une seule variable POST correspondant à ce champ du formulaire....
On en revient donc à la réponse 2 de yg_be ...
j'ai modifie ma requete de la sorte mais il refuse de prendre l'adresse email
$sql = 'SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ? OR email = ?'; //$datas = [$pseudo]; $datas = array($pseudo,$email); //Execution de la requete try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } $data = $requete->fetch(); $row = $requete->rowCount(); $userexit=$requete->fetch();
bonjour,
Que contient la variable $email?
Tu ne nous montres pas le formulaire utilisé.
Si l'utilisateur peut rentrer son email dans la zone pseudo, alors plutôt:
$datas = array($pseudo,$pseudo);
Fais attention alors à vérifier que personne n'utilise comme pseudo l'email d'un autre utilisateur (à l'inscription).
Merci pour l'aide oui c'est ce a quoi j'avais pense
cela pourrait etre ceci alors ?
$sql = 'SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ? OR email = ?'; $datas = [$pseudo]; //Execution de la requete try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } $data = $requete->fetch(); $row = $requete->rowCount(); $userexit=$requete->fetch(); if ($data['confirme'] !=1 and $row == 0 )//pseusdo pas bon { echo "pseudo existe"; } else { echo "pseudo n'existe pas"; } //requete 2 pour le mail $datasmail = [$email]; //exécution de la requête try{ $stmt = $bdd->prepare($sql); $stmt->execute($datasmail); $user = $stmt->fetch(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datasmail); } if (!empty($user)) { echo "email existe"; } else { echo "email n'existe pas"; }
oui c'est exactement ce a quoi je pensais a l'instant
Mais au niveau des conditions je m'y perds un peu
car si cela est une adresse email
je dois la tester et si elle est dans la base de donnee
je continue mes conditions
Mais pareil pour le pseudo
je dois voir si il est dans la base de donnee
si oui je continue mes conditions
J'essaye de mettre cela sur papier ...
oui c'est vrai que jn'y avait pas pense
mais j'ai un petit soucis
pour ma connexion j'ai deux pages la premiere pour la gestion du formulaire et des erreurs qui est donc le code ici plus haut soit connexion.php
la deuxieme page pour afficher les erreurs connexion-site.php
j'ai donc cree deux variable de session avec $_POST['email'] et $_POST['pseudo'] sur connexion.php
ensuite je les appelles connexion-site.php
Lorsque je rentre une adresse email sur connexion.php et que je valide
aussi bien les var_dump de email et de pseudo m'affiche l'adresse email
ce qui est logique
Donc du coup comment je pourrais savoir celle qui a ete remplie lorsqu'il valide le formulaire
je viens d'essayer ce code
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $password = !empty($_POST['password']) ? $_POST['password'] : NULL; $email = !empty($_POST['email']) ? $_POST['email'] : NULL; //préparation de la requête et des variables //$sql = 'SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ?'; $sql = 'SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ? OR email = ?'; $datas = [$pseudo]; //$datas = array($pseudo,$email); //Execution de la requete try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } $data = $requete->fetch(); $row = $requete->rowCount(); $userexit=$requete->fetch(); if($data['confirme'] !=1 and filter_var($email, FILTER_VALIDATE_EMAIL) ){ $datasmail = [$email]; //exécution de la requête try{ $stmt = $pdo->prepare($sql); $stmt->execute($datas); $user = $stmt->fetch(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datasmail); } if (empty($user)) {header('Location: connexion-site.php?login_err=divers3'); die();} } else if ($data['confirme'] !=1 and $row == 0 )//pseusdo pas bon {header('Location: connexion-site.php?login_err=divers2'); die();}
mais lorsque je rentre le bon pseudo et bon mot de passe j'ai l'erreur divers2
idem si je rentre la bonne adresse emil avec le bon mot de passe
non.. celle du post 2 : https://forums.commentcamarche.net/forum/affich-37727230-autoriser-la-connexion-au-site-avec-le-pseudo-ou-adresse-mai#2
Sachant que dans ton code de départ, tu as d'autres soucis...
Pour commencer.. la méthode rowCount ne doit pas s'utiliser sur une requête de type SELECT (comme c'est indiqué dans la documentation officielle de php ! )
Et ta condition n'est pas bonne
Merci Jordane pour la correction
Une chance que tu sois la
voici donc mon code corrigé
Mais lorsque je rentre un bon pseudo et un bon mot de passe il m'affiche l'erreur divers de la ligne 53
pourtant le pseudo est bien confirme et il existe bien
En ligne 52, tu testes deux conditions. Teste les séparément, de façon à pouvoir déterminer laquelle provoque le message d'erreur.
Dans la requête, tu as deux points d'interrogation:
Tu utilises ensuite "array($pseudo,$pseudo)" pour préciser quelles données doivent se substituer au point d'interrogation.