Login mail et pseudonyme

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Voila je voudrai pouvoir me connecter soit en mettant mon email ou bien mon pseudo, actuellement je le fais qu'avec mon pseudo mais je n'arrive pas à incruster la connexion avec le mail en supplément.

$pseudoconnect = !empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL;
$passconnect = !empty($_POST['passconnect']) ? hash("sha512",($_POST['passconnect'])) : NULL;

if(isset($_POST['form_connexion']))
{
	$sql = "SELECT * FROM membres WHERE pseudo = ? AND pass = ?";
	$datas = array($pseudoconnect,$passconnect);
	try{
	   $prep= $bdd->prepare($sql);
	   $prep->execute($datas);
	   $a_result = $prep->fetchAll();
	   $nbResult =  !empty($a_result) ? count($a_result) : 0;
	}catch(Exception $e){
	  echo " Erreur : " . $e->getMessage();
	}
	$userexist = $nbResult;

	if($userexist == 1)
	{
		$userinfo = $a_result[0];
		$id = $userinfo['id'];
		$confirme = $userinfo['confirme'];
		$ban = $userinfo['ban'];
		$mail = $userinfo['mail'];
		$language = $userinfo['language'];



<form method="POST" action="">
<h1> Connexion </h1> 
<p>
<label for="pseudoconnect" class="uname" data-icon="u" > Pseudo : </label>
<input id="pseudoconnect" autocomplete="off" name="pseudoconnect" required="Pseudo Requis /!\" type="text" placeholder="Pseudo"></input>
</p>
<p>
<label for="password" class="youpasswd" data-icon="p"> Mot de passe : </label>
<input id="password" autocomplete="off" name="passconnect" required="Mot de passe Requis /!\" type="password" placeholder="Mot de passe"></input>
</p>
<p class="login button">
<input type="submit" name="form_connexion" value="Se connecter"></input> 
</p>
<p class="change_link">Pas encore inscrit ?
<a href="create_account.php" rel="nofollow noopener noreferrer" target="_blank" class="to_register">Inscrit toi !</a><a href="recup.php" rel="nofollow noopener noreferrer" target="_blank" class="to_register">Mot de passe oublié ?</a>
</p>
</form>

1 réponse

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Remplace juste ta requête par celle-ci :
    $sql = "SELECT * FROM membres WHERE ? IN (pseudo, mail) AND pass = ?";


    Xavier
    0
    1. Utilisateur anonyme
       
      Salut, et merci de ton aide, cela m'affiche cette erreur :

      Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
      0
    2. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Bonjour,

      A priori, ça veut dire que dans ton ->execute tu ne passes pas un tableau de taille 2 ?
      Remontre ton code ?

      Xavier
      0
      1. Utilisateur anonyme > Reivax962 Messages postés 3742 Statut Membre
         
        
        $pseudoconnect = htmlspecialchars(!empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL);
        $passconnect = htmlspecialchars(!empty($_POST['passconnect']) ? hash("sha512",($_POST['passconnect'])) : NULL);
        $mailconnect = htmlspecialchars(!empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL);
        
        
        $sql = "SELECT * FROM membres WHERE ? IN (pseudo, mail) AND pass = ?";
        $datas = array($pseudoconnect,$mailconnect,$passconnect);
        try{
           $prep= $bdd->prepare($sql);
           $prep->execute($datas);
           $a_result = $prep->fetchAll();
           $nbResult =  !empty($a_result) ? count($a_result) : 0;
        }catch(Exception $e){
          echo " Erreur : " . $e->getMessage();
        }
        $userexist = $nbResult;
        
        
        0
      2. Reivax962 Messages postés 3742 Statut Membre 1 011 > Utilisateur anonyme
         
        Bonjour;

        Tu n'as pas besoin de redéfinir $mailconnect qui est identique à $pseudoconnect.
        Essaie ça :
        $pseudoconnect = htmlspecialchars(!empty($_POST['pseudoconnect']) ? $_POST['pseudoconnect'] : NULL);
        $passconnect = htmlspecialchars(!empty($_POST['passconnect']) ? hash("sha512", ($_POST['passconnect'])) : NULL);
        
        $sql = "SELECT * FROM membres WHERE ? IN (pseudo, mail) AND pass = ?";
        $datas = array($pseudoconnect, $passconnect);


        Xavier
        0
      3. Utilisateur anonyme > Reivax962 Messages postés 3742 Statut Membre
         
        C'est tout bon merci bien :-)
        0