PDO et requête paramétrée
Salam :
page connexion nommée cbd.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
<?php
// On se connecte à la bdd
try
{
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_nom_bd='grip'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
// connexion marche trés bien avec affichage de msg erreure
// Options de connection
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" , // indiquer à MySQL que echanger nos données en UTF8.
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$cbd = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe , $options );
}
catch(PDOException $e)
{
echo 'Une erreur de connexion est survenue !'; $e->getMessage();
die();
}
$cnx = null; // Fermeture de la connexion
?> |
page de traitement de données nommée valid.inc.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
<?php
header('Content-type: text/html; charset=UTF-8');
include('./mod/cbd.php');
// Traitements/vérifications
$erreurs_msg = array();
// on verifi que l'utilisateur a cliquer sur le bouton connexion
if (isset($_POST['sident']))
{
// On vérifie que les élément sont valides
if (empty($_POST['ident'] ))
{
$erreurs_msg['ident'] = 'Veuillez saisir votre Identifiant SVP.';
}
elseif (empty($_POST['pass']))
{
$erreurs_msg['pass'] = 'Veuillez saisir votre mot de passe SVP.';
}
//on verifie si aucun champs n'est vide donc <>"" (différent de vide)
elseif(($_POST['ident'] <> "") AND ($_POST['pass'] <> ""))
{
// on affecte les variables aprés leurs traitement
$ident = trim(htmlspecialchars(stripslashes($_POST['ident'])));
$pass = trim(htmlspecialchars(stripslashes($_POST['pass'])));
// connexion a la bdd et verrification de la validité de l'identifiant et le mot de passe
$verifident=$cbd->prepare('SELECT acces ,mpaccess FROM etab WHERE acces =:ident and mpaccess=:pass');
try
{
$verifident->bindParam(':ident', $_POST['ident'], PDO::PARAM_STR);
$verifident->bindParam(':pass', $_POST['pass'], PDO::PARAM_STR);
$verifident->execute();
$data=$verifident->fetch();
if (($data['ident'] == $_POST['ident']) and ($data['pass'] == md5($_POST['pass'])))
{ // création de session
$_SESSION['ident'] = $data['acces'];
$_SESSION['pass'] = $data['pass'];
$_SESSION['id'] = $data['cdet'];
$verifident->closeCursor();
$verifident = NULL;
header ('location: ./interfaces/tab.php');
}
else
{
echo $ident;
// header ('location: index.php');
}
}
catch( Exception $e )
{
echo 'Erreur de requète : ', $e->getMessage();
}
} // fin elseif
}
?> |
c'est code concerne une page d'identification d’utilisateur ; une fois la requête lancée j'ai un message d'erreur :
Citation:
Notice: Undefined index: ident in C:\wamp\www\s3g\codephp\valid.inc.php on line 37.
j'ai vue la ligne 37:
Code:
1 2
|
if (($data['ident'] == $_POST['ident']) and ($data['pass'] == md5($_POST['pass']))) |
à j'ai pas compris malgré que l'echo de la variable $ident affiche bien le contenu.