Administrateur PHPfrance |
13231 Messages
14 déc. 2018, 12:30
Bonjour,
Pour pouvoir répondre à ta question, il faudrait que tu nous dises ce qu'est
$bdd
.
C'est un objet PDO ?
Dans l'hypothèse où c'est le cas, $query te retourne un objet PDOStatement, que tu peux manipuler comme un tableau.
Tu pourrais commencer par t'assurer qu'il y a au moins un résultat, puis voir dans ce résultat quelle est la valeur du champ "inscrit".
$est_inscrit = false;
$reponse = $bdd->query('SELECT inscrit FROM inscrip]tion WHERE email = "'.$_POST['email'].'"');
if (count($response)) >= 1 {
// $est_inscrit faudra true si le premier résultat à un champ inscrit = 1, false sinon
$est_inscrit = ($reponse[0]['inscrit'] == 1);
}
Attention, ce code a plein de failles.
La première, c'est que si tu peux avoir plusieurs enregistrements avec le même email, tu vas uniquement regarder le premier résultat. Tu peux éviter ça en utilisant des index UNIQUE sur ta table "inscription" (
http://www.apsql.com/articles/IndexCont ... nique.html)
La seconde, c'est que tu prends la valeur POST telle qu'elle, et il est très facile de forcer ta requête à faire des trucs étranges. Par exemple, si l'email que je saisie pour toi est '
[email protected]" AND 1=1 AND '=', la requête exécutée sera
. On appelle ça une injection SQL. Voici un cours qui t'en expliquera plus :
https://websitebeaver.com/php-pdo-prepa ... -injection