Page 1 sur 1

Comment se connecter a mon site soit avec le pseudo ou soit l'adresse email

Posté : 09 nov. 2022, 18:52
par flexi2202
Bonjour a tous
pour 'instant j'a un formulaire de connexion qui me permet de me connecter a mon site
avec le mot de passe et le pseudo

Mais j'auais aimer laisser le choix a l'utilisateur afin qu'il puisse se connecter soit avec son pseudo ou alors son adresse email
j'ai essaye plusieurs choses
Mais rien ne fonctionne

Je vous donne mon code

Code : Tout sélectionner

<?php session_start(); error_reporting(E_ALL); ini_set('display_errors', true); ini_set('display_startup_errors', true); //on recupere le lien link pour la redirection vers les autres pages $link = !empty($_GET['link']) ? $_GET['link'] : NULL; require_once 'base.php'; if (!empty($_POST['pseudo']) && !empty($_POST['password'])) { $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(); //si le peusdo est bien dans la base alors on continue sinon on sort //$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)) //{header('Location: connexion-site.php?login_err=divers3'); // die();} if ($data['confirme'] !=1 and $row == 0 )//pseusdo pas bon {header('Location: connexion-site.php?login_err=divers2'); die();} //else if //($data['confirme'] !=0 and $row == 1)//psuedo bon //{header('Location: connexion-site.php?login_err=divers3'); // die();} if ($data['confirme'] !=0) { if ($row == 1) { //on verifie le pawword si il est ok on continue , sinon sortie if (password_verify($password, $data['password'])) { //on definit et on cree les variables sessions $_SESSION['user'] = array( 'id' => $data['id'], 'pseudo' => $data['pseudo'], 'email' => $data['email'], 'confirmkey' => $data['confirmkey'] ); $_SESSION['id'] = $data['id']; $_SESSION['pseudo'] = $data['pseudo']; $_SESSION['email'] = $data['email']; $_SESSION['confirmkey'] = $data['confirmkey']; //on test la variable link si elle est vide on va vers index if (empty($_SESSION['link'])) { header('Location: index.php?pseudo=' . $_SESSION['pseudo']); //header('Location: index.php?pseudo=' . $_SESSION['email']); //sinon on va faire la derniere page visitee } else { header('location: ' . $_SESSION['link']); } die(); } else { header('Location: connexion-site.php?login_err=password'); die(); } } else { header('Location: connexion-site.php?login_err=already'); die(); } } else { header('Location: connexion-site.php?login_err=divers'); die(); } } ?>

Re: Comment se connecter a mon site soit avec le pseudo ou soit l'adresse email

Posté : 10 nov. 2022, 14:37
par flexi2202
voici la solution

Code : Tout sélectionner

<?php session_start(); //on recupere le lien link pour la redirection vers les autres pages $link = !empty($_GET['link']) ? $_GET['link'] : NULL; require_once 'base.php'; //si le pseudo et le pawword ne sont pas vide if (!empty($_POST['pseudo']) && !empty($_POST['password'])) { //je recupere proprement des variables $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,$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(); //je teste si le pseudo ou l'email sont bon if (empty($data)) { header('Location: connexion-site.php?login_err=MailPseusdoMauvais'); die(); } //je teste pour savoir si ils sont bien confirme if ($data['confirme'] != '1') { header('Location: connexion-site.php?login_err=ComptePasActive'); die(); } // si il est confirme je continue les tests if ($data['confirme'] != 0) { //si l 'email ou le pseusdo sont bons on continue if (!empty($data)) { //on verifie le pawword si il est ok on continue , sinon sortie if (password_verify($password, $data['password'])) { //on definit et on cree les variables sessions $_SESSION['user'] = array( 'id' => $data['id'], 'pseudo' => $data['pseudo'], 'email' => $data['email'], 'confirmkey' => $data['confirmkey'] ); $_SESSION['id'] = $data['id']; $_SESSION['pseudo'] = $data['pseudo']; $_SESSION['email'] = $data['email']; $_SESSION['confirmkey'] = $data['confirmkey']; //on test la variable link si elle est vide on va vers index if (empty($_SESSION['link'])) { header('Location: ./index.php?pseudo=' . $_SESSION['pseudo']); //sinon on va faire la derniere page visitee } else { header('location: ' . $_SESSION['link']); } die(); } else { header('Location: connexion-site.php?login_err=password'); die(); } } else { header('Location: connexion-site.php?login_err=already'); die(); } } else { header('Location: connexion-site.php?login_err=ComptePasActive'); die(); } } ?>

Re: [RESOLU] Comment se connecter a mon site soit avec le pseudo ou soit l'adresse email

Posté : 10 nov. 2022, 15:35
par Spols
if (!empty($_POST['pseudo']) && !empty($_POST['password']))

ne faudrait il pas adapter cette condition aussi ?

Re: [RESOLU] Comment se connecter a mon site soit avec le pseudo ou soit l'adresse email

Posté : 26 nov. 2022, 19:35
par flexi2202
Merci pour la reponse oui en effet