Erreur incompréhensible

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

  1. 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