Autoriser la connexion au site avec le pseudo ou adresse mai
Résolu/Ferméflexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - 10 nov. 2022 à 11:59
- Autoriser la connexion au site avec le pseudo ou adresse mai
- Rechercher ou entrer l'adresse - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Site de telechargement - Accueil - Outils
- Gmail connexion - Guide
- Darkino nouvelle adresse - Guide
4 réponses
10 nov. 2022 à 08:33
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 ...
9 nov. 2022 à 16:33
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();
9 nov. 2022 à 16:50
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).
9 nov. 2022 à 16:54
Bonjour
Merci pour l'aide
voici ce que contient cette variable
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
Mais le code que tu me donnes ne serais pas
$datas = array($pseudo,$email);
9 nov. 2022 à 16:57
Ce serait plus propre alors de faire deux requêtes, une quand le pseudo est entré, l'autre quand l'email est entré.
Modifié le 9 nov. 2022 à 17:06
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"; }
9 nov. 2022 à 18:21
Plutôt tester si l'utilisateur a rentré son pseudo ou son email, et, ensuite, utiliser uniquement le pseudo ou uniquement l'email.
9 nov. 2022 à 19:56
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 ...
9 nov. 2022 à 21:17
"tester si l'utilisateur a rentré son pseudo ou son email", cela signifie tester si l'utilisateur a rempli $_POST['pseudo'] ou bien si il a rempli $_POST['email']. SI aucun des deux ou les deux, refuser.
9 nov. 2022 à 22:14
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
9 nov. 2022 à 22:53
le seul moyen que j'ai trouve pour l'instant c'est comme tu l'avais suggere
serait de realiser deux requetes completes suivant si cest email ou pseudo qui est remplit
car j'ai fini par trouver comment les tester
if (empty($_POST['email']))
9 nov. 2022 à 20:51
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
Modifié le 10 nov. 2022 à 08:45
non.. celle du post 2 : https://forums.commentcamarche.net/forum/affich-37727230-autoriser-la-connexion-au-site-avec-le-pseudo-ou-adresse-mai#2
10 nov. 2022 à 08:51
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
10 nov. 2022 à 09:01
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
10 nov. 2022 à 09:27
En ligne 52, tu testes deux conditions. Teste les séparément, de façon à pouvoir déterminer laquelle provoque le message d'erreur.
10 nov. 2022 à 11:29
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.