Login mail et pseudonyme

Résolu/Fermé
Utilisateur anonyme - 19 oct. 2017 à 20:58
 Utilisateur anonyme - 9 nov. 2017 à 16:44
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

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
19 oct. 2017 à 21:36
Bonjour,

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


Xavier
0
Utilisateur anonyme
7 nov. 2017 à 21:05
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
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 nov. 2017 à 08:56
Bonjour,

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

Xavier
0
Utilisateur anonyme > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
8 nov. 2017 à 12:27

$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
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Utilisateur anonyme
9 nov. 2017 à 12:12
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
Utilisateur anonyme > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
9 nov. 2017 à 16:44
C'est tout bon merci bien :-)
0