Problème formulaire connection php
Résolu
zeelox
Messages postés
119
Date d'inscription
Statut
Membre
Dernière intervention
-
zeelox Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
zeelox Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
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 :
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:
- Problème formulaire connection php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Gmail connection - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
2 réponses
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 :
Et mettre en première ligne de tes pages php (pour afficher les erreurs php):
NB : Par défaut, les erreurs PDO ne sont pas activées.
Dans le code de connexion à ta BDD tu dois ajouter ceci :
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
login.php:
login.php php:
bdd.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());
}
?>
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
Ajoutes également la ligne :
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
Histoire de voire ce que te retournes ta requête. ( penses à désactiver la redirection
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. )
Tu y lira :
merci bcp