Test sur Requette en php

bidlag Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je veux faire un teste sur une requette sql en php :
exemple :
$sel=$bdd->query("SELECT typea FROM inscription WHERE id_user LIKE ".$id." AND pass LIKE ".$mdp."");
Si($sel) est vrai {
}
si non
{}
cordialement,
A voir également:

1 réponse

ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'lut
1. On utilise généralement pas
LIKE
pour tester une égalité stricte, mais plutôt l'opérateur
=
.
2. Tu as un risque d'injection SQL si tu n'as pas filtré le contenu de
$id
et
$mdp
auparavant. Il faut utiliser les requêtes préparées, c'est plus simple.
3. PDOStatement::fetch() permet de récupérer les valeurs de la ligne actuelle sous forme d'un tableau avec
PDO::FETCH_ASSOC
, et renvoie
false
s'il n'y a pas ou plus de données. En l'occurrence,
false
voudra dire que le compte n'existe pas ou que le mot de passe est incorrect.
Corrigé, ça donnerait ça:
$req = $bdd->prepare("SELECT typea FROM inscription WHERE id_user = :id AND pass = :mdp");
$rep = $res->execute(array(
    ':id' => $id,
    ':mdp' => $mdp
));
$ligne = $rep->fetch(PDO::FETCH_ASSOC);
if ($ligne !== false) {
   ...
   $ligne['typea'] contient la valeur de la colonne "typea" du compte
   ...
} else {
   ...
} 
0
bidlag Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Voila le principe de l'authentification tu peux m'aider et merci
<?php
$bdd=new PDO('mysql:host=localhost;dbname=sao','root','');
if(!$bdd)
{
die("Impossible de se connecter a la base ou de selectionner la base !");
}/*
$db = mysql_select_db('sao',$connexion);
if(!$db)
{
die("Impossible de selectionner la base !");
}*/
$user = $_POST['user'];
$pass = $_POST['pass'];
$type= $_POST['type'];

if(empty($user) || empty($pass))
{
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="cnx.php"
</SCRIPT>';
}
else
{
$reponse=$bdd->query ("SELECT * FROM inscription WHERE login='$user'");
//$req = mysql_query($sql) or die("Erreur SQL");
while($data = $reponse->fetch())
{
$mdp = $data['pass'];
$id = $data['id_user'];
}
$student=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Student'");
$admin=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Admin'");
$local=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Local'");
$restau=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Restaurant'");
$housing=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Housing'");
$transport=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Transport'");
$materiel=$bdd->query("SELECT * FROM inscription WHERE typea LIKE 'Material'");

if($pass == $mdp && $typea=='Student' && $student!==false)
{
session_start();

$_SESSION['user']=$user;
$_SESSION['id'] = $id;

echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="user_student.php"
</SCRIPT>';
}
else if($pass==$mdp && $type=='Admin' && $admin!==false)
{
session_start();
$_SESSION['user']=$user;
$_SESSION['id']=$id;
echo'<script>document.location.href="user_admin.php"</script>';
}
else if($pass==$mdp && $type=='Local'&& $local!==false)
{
session_start();
$_SESSION['user']=$user;
$_SESSION['id']=$id;
echo'<script>document.location.href="user_local.php"</script>';
}
else if($pass==$mdp && $type=='Restaurant' && $restau!==false)
{
session_start();
$_SESSION['user']=$user;
$_SESSION['id']=$id;
echo'<script>document.location.href="user_restaurant.php"</script>';
}
else
{
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="cnx.php"
</SCRIPT>';
}
}
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223 > bidlag Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Utilises les balises < code > la prochaine fois.
Ça va pas du tout. PDO est inutilisable avec les
or die
, c'est purement incompatible car PDO utilise les exceptions.
À part ça, qu'est-ce qui cloche? Je ne vois rien de flagrant à part des injections SQL possibles.
0