bonjour,
je cherche à créer un formulaire de connexion avec choix de mettre login ou email en id.
si vous avez un tuto ou un site qui l'explique bien je suis preneur.
merci
select les,infos from table utilisateur where pseudo = 'la saisie' or email = 'la saisie';
tu peux faire un peu mieux en validant l'entrée
<?php
$sql = 'select les,infos from table utilisateur where ';
if (!empty($_POST['login_value']) && filter_var($_POST['login_value'], FILTER_VALIDATE_EMAIL)) {
$sql .= ' email=\''.$_POST['login_value'].'\'';
} else {
$sql .= ' pseudo=\''.$_POST['login_value'].'\'';
}
// exec
c'est pas à utiliser telquel parce que c'est une belle faille xss.
Code : Tout sélectionner
<?php
case "connexion":
echo'<form method="POST" action="./connexion.php?action=co">
<table>
<tr><td>Login:</td><td><input type="text" name="ident"></td></tr>
<tr><td>Mot de passe:</td><td><input type="password" name="pwd"></td></tr>
<tr><td>Se souvenir de moi ?</td><td><input type="checkbox" name="souvenir"></td></tr>
</table>
<input type="submit" value="ok">
</form>';
break;
case "co":
if (empty($_POST['ident']) || empty($_POST['pwd']))
{
echo'<p>Vous devez remplir tous les champs</p>';
header ("Refresh: 1;URL=./connexion.php?action=connexion");
}
else //On check le mot de passe
{
$query=$db->prepare('SELECT * FROM utilisateur WHERE login=:login OR email=:email');
$query->bindValue(':login',$_POST['ident'], PDO::PARAM_STR);
$query->bindValue(':email',$_POST['ident'], PDO::PARAM_STR);
$query->execute();
$data=$query->fetch();
if($data['rang']==2)
{
if ($data['pwd'] == md5($_POST['pwd']))
{
$_SESSION['id'] = $data['id'];
$_SESSION['login'] = $data['login'];
$_SESSION['rang'] = $data['rang'];
header ("Location:../participant/index.php");
if (isset($_POST['souvenir']))
{
$expire = time() + 365*24*3600;
setcookie('id', $_SESSION['id'], $expire);
}
}
}
else
{
if ($data['pwd'] == md5($_POST['pwd']))
{
$_SESSION['id'] = $data['id'];
$_SESSION['login'] = $data['login'];
$_SESSION['rang'] = $data['rang'];
header ("Location:../admin/index.php");
if (isset($_POST['souvenir']))
{
$expire = time() + 365*24*3600;
setcookie('id', $_SESSION['id'], $expire);
}
}
}
}
break;
?>
<?php
case "connexion":
echo'<form method="POST" action="./connexion.php?action=co">
<table>
<tr><td>Login:</td><td><input type="text" name="ident"></td></tr>
<tr><td>Mot de passe:</td><td><input type="password" name="pwd"></td></tr>
<tr><td>Se souvenir de moi ?</td><td><input type="checkbox" name="souvenir"></td></tr>
</table>
<input type="submit" value="ok">
</form>';
break;
case "co":
if (empty($_POST['ident']) || empty($_POST['pwd']))
{
echo'<p>Vous devez remplir tous les champs</p>';
header ("Refresh: 1;URL=./connexion.php?action=connexion");
}
else //On check le mot de passe
{
$query=$db->prepare('SELECT * FROM utilisateur WHERE login=:login OR email=:email');
$query->bindValue(':login',$_POST['ident'], PDO::PARAM_STR);
$query->bindValue(':email',$_POST['ident'], PDO::PARAM_STR);
$query->execute();
$data=$query->fetch();
if($data !== false)
{
if ($data['pwd'] == md5($_POST['pwd']))
{
$_SESSION['id'] = $data['id'];
$_SESSION['login'] = $data['login'];
$_SESSION['rang'] = $data['rang'];
if (isset($_POST['souvenir']))
{
$expire = time() + 365*24*3600;
setcookie('id', $_SESSION['id'], $expire);
}
$url = '../participant/index.php';
// bon la il vaut mieux tester le code rang pour admin :-)
if($data['rang']!=2){
$url = '../admin/index.php'
}
header ('Location: '.$url);
}
}else {
// Utilisateur ou mot de passe érronée (ne pas donner plus d'info)
}
}
break;
@+