php - How to log in with your email address or nickname on a login form
How to log in with your email address or username
I have a login form that works great The user must enter his username and password to connect to my site But I would like to modify the code so that he can connect with his email address as well as with his nickname.
How could I fix this
Thanks for the help
<?php
session_start();
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;
$sql =
"SELECT pseudo, email,id,confirme, password,confirmkey FROM utilisateurs WHERE pseudo = ?";
$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();
//si le peusdo est bien dans la base alors on continue sinon on sort
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) {
if (password_verify($password, $data["password"])) {
if (empty($_SESSION["link"])) {
header("Location: index.php?pseudo=" . $_SESSION["pseudo"]);
} 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();
}
}
?>
Answer
Solution:
<?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();
}
}
?>
Source