Erreur incompréhensible

Fermé
xander18 Messages postés 68 Date d'inscription dimanche 24 février 2013 Statut Membre Dernière intervention 21 janvier 2015 - 21 janv. 2015 à 13:33
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 21 janv. 2015 à 16:15
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 janv. 2015 à 16:15
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