Signaler

Login mail et pseudonyme [Résolu]

Posez votre question Amnexia 62Messages postés samedi 19 novembre 2016Date d'inscription 9 novembre 2017 Dernière intervention - Dernière réponse le 9 nov. 2017 à 16:44 par Amnexia
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>
Utile
+0
plus moins
Bonjour,

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


Xavier
Amnexia 62Messages postés samedi 19 novembre 2016Date d'inscription 9 novembre 2017 Dernière intervention - 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
Répondre
Reivax962 3085Messages postés jeudi 16 juin 2005Date d'inscription 9 novembre 2017 Dernière intervention - 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
Répondre
Amnexia 62Messages postés samedi 19 novembre 2016Date d'inscription 9 novembre 2017 Dernière intervention - 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;

Répondre
Reivax962 3085Messages postés jeudi 16 juin 2005Date d'inscription 9 novembre 2017 Dernière intervention - 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
Répondre
Amnexia 62Messages postés samedi 19 novembre 2016Date d'inscription 9 novembre 2017 Dernière intervention - 9 nov. 2017 à 16:44
C'est tout bon merci bien :-)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !