Erreur incompréhensible

xander18 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai créer un formulaire de connexion hors j'obtiens tj la même erreur sur ma requete et je vois pas d'ou cela pourrais venir merci de votre aide.

form connexion :

<form action="connexion.php" method="post">
<label for="" style="color: #fff;">Identifiant</label>
<div class="form-group">
<input class="form-control" type="text" name="username" placeholder="Identifiant" required>
</div>
<label for="" style="color: #fff;">Mot de passe</label>
<div class="form-group">
<input class="form-control" type="password" name="pass" placeholder="Mot de passe" required>
</div>
<div class="form-group">
<button class="btn btn-primary" type="submit"><i class="fa fa-power-off"></i> Se connecter</button>
</div>
</form>


traitement php :

<?php
$username = $_POST['username'];
$password = md5($_POST['pass']);

$db = new PDO('mysql:host=localhost;dbname=conferences', 'root', '');

if(!empty($username) && !empty($password) ){
$q = $db->query("SELECT * FROM users WHERE username = $username AND pass = $password");
$data = $q->fetch(PDO::FETCH_ASSOC);

var_dump($data);
exit();
if(!$data){
$_SESSION['notification'] = "Merci de bien vouloir vérifier votre identifiant ou votre mot de passe";
header('Location: auth.php');
}else{
session_start();
$_SESSION['id'] = $data['id'];
$_SESSION['username'] = $data['username'];
header('Location: dashboard.php');
}
}else{
$_SESSION['notification'] = "Merci de bien remplir les champs demandées";
header('Location: auth.php');
}
?>


merci de votre aide


1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Tu dois ajouter des quotes autour des valeurs utilisées dans une requête sql.

Dans l'idéal, il faudrait également éviter les injections sql en échappant les caractères sql. Pour cela deux solutions :
- soit utiliser une requête préparée avec des paramètres nommés
- soit utiliser la méthode quote() de PDO

Un exemple en utilisant la méthode quote() :
$q = $db->query('SELECT * FROM users WHERE username = ' . $db->quote($username) . ' AND pass = ' . $db->quote($password));


Bonne journée
0