[RESOLU] formulaire de connexion avec choix email ou login

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] formulaire de connexion avec choix email ou login

Re: [RESOLU] formulaire de connexion avec choix email ou login

par juvamine » 11 oct. 2016, 16:54

yep ça fonctionne bien comme ça aussi ;)
merci.

Re: [RESOLU] formulaire de connexion avec choix email ou login

par moogli » 11 oct. 2016, 16:00

il faut que tu penses que cela peut ne rien retourner (erreur pseu / email / mot de passe) et dans ce cas $data['rang'] n'existe pas :)
pour éviter cela test si $data === false => erreur sinon c'est que tu as des données et que donc tu peux tester les droits et autre.

tu peux aussi factoriser ton code la chose qui change c'est le header

un truc dans le genre
<?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;
@+

Re: [RESOLU] formulaire de connexion avec choix email ou login

par juvamine » 11 oct. 2016, 15:18

du coup j'ai fait comme ceci

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; ?>

Re: [RESOLU] formulaire de connexion avec choix email ou login

par moogli » 11 oct. 2016, 15:09

de rien :)

Re: [RESOLU] formulaire de connexion avec choix email ou login

par juvamine » 11 oct. 2016, 14:56

oui c'est tout bon j'ai compris le truc merci.

Re: [RESOLU] formulaire de connexion avec choix email ou login

par juvamine » 11 oct. 2016, 14:36

la req que tu m'as donné plus haut fonctionne pour le même input?

Re: [RESOLU] formulaire de connexion avec choix email ou login

par moogli » 10 oct. 2016, 17:20

de rien, la c'est facile pour le coup :=)~


après y a pleind 'autr epossibilités, tu peux te penser sur les sso avec les comptes fb, google et autres.
il existe aussi le projet openid http://openid.net/

mais ceci sort un peu de la question :)

@+

Re: formulaire de connexion avec choix email ou login

par juvamine » 10 oct. 2016, 15:50

yes cool merci moogli tu es au top toi tu répond du tac-au-tac ;)

Re: formulaire de connexion avec choix email ou login

par moogli » 10 oct. 2016, 15:44

salut,

c'est simple à faire
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.
tu as juste a adapter à ton mode de connexion au serveur sql ;)


@+

formulaire de connexion avec choix email ou login

par juvamine » 10 oct. 2016, 15:37

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