Test sur Requette en php
Fermé
bidlag
Messages postés
19
Date d'inscription
lundi 22 juin 2015
Statut
Membre
Dernière intervention
25 novembre 2015
-
Modifié par bidlag le 23/06/2015 à 16:30
ElementW Messages postés 4764 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 23 juin 2015 à 18:21
ElementW Messages postés 4764 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 23 juin 2015 à 18:21
A voir également:
- Test sur Requette en php
- Test pc - Guide
- Alert php ✓ - Forum PHP
- Test ram - Guide
- Media test failure check cable - Astuces et Solutions
- Test config pc en ligne ✓ - Forum Matériel informatique
1 réponse
ElementW
Messages postés
4764
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 295
23 juin 2015 à 17:05
23 juin 2015 à 17:05
'lut
1. On utilise généralement pas
2. Tu as un risque d'injection SQL si tu n'as pas filtré le contenu de
3. PDOStatement::fetch() permet de récupérer les valeurs de la ligne actuelle sous forme d'un tableau avec
Corrigé, ça donnerait ça:
1. On utilise généralement pas
LIKEpour 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
$idet
$mdpauparavant. 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
falses'il n'y a pas ou plus de données. En l'occurrence,
falsevoudra 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 {
...
}
23 juin 2015 à 17:46
<?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>';
}
}
Modifié par gravgun le 23/06/2015 à 18:21
Ça va pas du tout. PDO est inutilisable avec les , 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.