Problème formulaire connection php

Résolu/Fermé
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 - 30 mai 2016 à 19:08
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 - 6 juin 2016 à 17:08
Bonjour, je suis en train de coder un site et ca fait très longtemps que je n'avais pas programmer, je faisait donc ma requete pdo pour me connecter car l'inscription marchais sans problème, mais j'ai toujours le $err = "Pseudo ou mot de passe incorrect";
Vu que je n'ai pas d'erreur ca doit etre car ma fonction est toujours fausse, voila mon code :
				<form method="post">
				<br>
					<label for="pseudo">Pseudo :</label>
					<br>
					<input type="text" name="pseudo_connect" id="pseudo">
					<br><br>
					<label for="password">Mot de passe :</label>
					<br>
					<input type="password" name="password_connect" id="password">
					<br><br>
					<input type="submit" name="submit_connect" value="Se connecter">
					<br><br>
					<a href="register.php">Pas encore de compte ?</a>
					<br>
					<a href="">Mot de passe oublié ?</a>
				</form>

<?php
if(isset($_POST['submit_connect']))
{
	$pseudo = htmlspecialchars($_POST['pseudo_connect']);
	$password = sha1($_POST['password_connect']);
	if(!empty($pseudo) && !empty($password))
	{
		$requser = $bdd->prepare('SELECT * FROM users WHERE pseudo = ? AND password = ?');
		$requser->execute(array($pseudo, $password));
		$userExist = $requser->rowCount();
		if($userExist == 1)
		{
			header('Location: index.php');
		}
		else
		{
			$err = "Pseudo ou mot de passe incorrect";
		}
	}
	else
	{
		$err = "Veuillez remplir tous les champs";
	}
}
?>





A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
31 mai 2016 à 00:56
Bonjour,
L'utilisation du rowCount est fortement déconseillée..
(voir la notice de php)

A la place, fais un FETCHALL du résultat de ta requête et un COUNT dessus.
Pour intercepter les éventuelles erreur php, il faut également penser à utiliser des bloc TRY/CATCH pour tes requêtes.

par exemple :
$sql = 'SELECT * FROM users WHERE pseudo = ? AND password = ?';
$datas = array($pseudo, $password);
try{
  $requser = $bdd->prepare($sql);
  $requser->execute($datas);
  $array_result = $requser->fetchAll();
}catch(Exception $e){
  echo "Erreur dans la requete. ".$e->getMessage();
}

$nb = count($array_result);

if($nb == 1 ){ //etc...



Et mettre en première ligne de tes pages php (pour afficher les erreurs php):
error_reporting(E_ALL);



NB : Par défaut, les erreurs PDO ne sont pas activées.
Dans le code de connexion à ta BDD tu dois ajouter ceci :

   $bdd= new PDO( /*...... */); //le code de connexion à ta bdd
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //options pour l'affichage des erreurs PDO

0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
31 mai 2016 à 18:42
ok merci beaucoup j'essaie tout ca apres mais pourquoi le rowCount est déconseillé ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
31 mai 2016 à 18:48
Ben... il suffit de lire la doc ....
Tu y lira :

Pour la plupart des bases de données, PDOStatement::rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
1 juin 2016 à 20:02
j'ai fait ce que tu m'as dit, j'ai demarrer la session dans le header.php que j'ai include, j'ai creer les variables de session, et quand a l'acceuil je fais echo $_SESSION['pseudo'] il n'y a rien... :/
merci bcp
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
1 juin 2016 à 20:44
Tu me montres ton code complet.
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
5 juin 2016 à 20:08
login.php:
	<?php include('includes/header.php') ?>
<?php include('php/php_bdd.php') ?>
<?php include('php/php_login.php') ?>
<?php include('includes/infos.php') ?>
<div class="content">
<div class="wrapper" style="background-color: #fff; padding-left: 5px;padding-right: 5px; padding-bottom: 20px;">
<div style="text-align: center">
<br>
<?php
if(isset($err))
{
?>
<div class="alert" style="padding: 10px; background-color: #46a2d9;">
<h2 style="color: #fff; font-weight: 400; text-transform: uppercase;"><?php echo $err ?></h2>
</div>
<?php
}
?>

<form method="post">
<br>
<label for="pseudo">Pseudo :</label>
<br>
<input type="text" name="pseudo_connect" id="pseudo">
<br><br>
<label for="password">Mot de passe :</label>
<br>
<input type="password" name="password_connect" id="password">
<br><br>
<input type="submit" name="submit_connect" value="Se connecter">
<br><br>
<a href="register.php">Pas encore de compte ?</a>
<br>
<a href="">Mot de passe oublié ?</a>
</form>
</div>
</div>
</div>
<?php include('includes/footer.php') ?>


login.php php:
<?php
if(isset($_POST['submit_connect']))
{
$pseudo = htmlspecialchars($_POST['pseudo_connect']);
$password = sha1($_POST['password_connect']);
$sql = 'SELECT * FROM users WHERE pseudo = ? AND password = ?';
$datas = array($pseudo, $password);
try
{
$requser = $bdd->prepare($sql);
$requser->execute($datas);
$array_result = $requser->fetchAll();
$userinfo = $requser->fetch();
}
catch(Exception $e)
{
echo "Erreur dans la requete. ".$e->getMessage();
}

$nb = count($array_result);

if($nb == 1 )
{
$_SESSION['id'] = $userinfo['id'];
$_SESSION['pseudo'] = $userinfo['pseudo'];
$_SESSION['password'] = $userinfo['password'];
$_SESSION['lastname'] = $userinfo['lastname'];
$_SESSION['firstname'] = $userinfo['firstname'];
$_SESSION['mail'] = $userinfo['mail'];
$_SESSION['grade'] = $userinfo['grade'];
$_SESSION['accept_mail'] = $userinfo['accept_mail'];
$_SESSION['date'] = $userinfo['date'];
header('Location: index.php');
}
else
{
$err = "Mauvais pseudo ou mot passe";
}
}
?>

bdd.php
<?php
try
{
$bdd = new PDO('mysql:host=127.0.0.1;dbname=zeelox', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 juin 2016 à 23:09
Tu as bien mis le démarrage des session également dans ton fichier index.php ? (ou du moins ton header.php y est chargé également ? )

Tu peux ajouter un
print_r($_SESSION);
au début de ton fichier index.php ?

Ajoutes également la ligne :
error_reporting(E_ALL);

au début de tes pages php. cela permet d'afficher les erreurs php.

Il faudrait aussi, avant le if nb==1 que tu ajoutes un petit
 print_r($array_result);

Histoire de voire ce que te retournes ta requête. ( penses à désactiver la redirection
header('Location: index.php');
pour pouvoir le voir à l'écran. )
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
6 juin 2016 à 17:07
alors j'espere avoir fait tout comme il fallait, j'ai deux messages :
-> Array ( )
-> des données sur mon compte un peu comme ca : Array ( [0] => Array ( [id] => 2 [0] =>

ca m'énerve d'être bloqué sur un simple formulaire de connexion...
0
zeelox Messages postés 119 Date d'inscription samedi 30 mai 2015 Statut Membre Dernière intervention 8 mars 2019
6 juin 2016 à 17:08
Array ( [id] => [pseudo] => [password] => [lastname] => [firstname] => [mail] => [grade] => [accept_mail] => [date] => ) quand je quitte la page
0