Acces direct

Petit nouveau ! | 2 Messages

13 déc. 2018, 03:33

Bonjour a tous
Je voudrais savoir comment faire un acces direct dans une base de donne en PHP je ne veux pas utiliser fetch()
$reponse = $bdd->query('select inscrit from inscription where email = "'.$_POST['email'].'"');
La ligne au dessus est un acces direct mais je ne sais pas faire un IF , a savoir si "inscrit" est un 1 ou un 0 ?
Est que quelqu'un peux m'aider.
Merci a l'avance :P

Avatar du membre
Administrateur PHPfrance
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

Code : Tout sélectionner

SELECT inscrit FROM inscription WHERE email = "[email protected]" AND 1=1 AND ''=''
. On appelle ça une injection SQL. Voici un cours qui t'en expliquera plus : https://websitebeaver.com/php-pdo-prepa ... -injection
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer