IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PDO et requête paramétrée


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut PDO et requête paramétrée
    Salam :
    page connexion nommée cbd.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Notice: Undefined index: ident in C:\wamp\www\s3g\codephp\valid.inc.php on line 37.
    j'ai vue la ligne 37:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 29
    Par défaut
    C'est "juste" un notice. Initialise ta variable en faisant :

    $data['ident'] = '';

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Merci ikki : voila on initialisant la variable avant le if j'ai plus le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .....
    $data['ident'] = ''; 
    if (($data['ident'] == $_POST['ident']) and ($data['pass'] == md5($_POST['pass'])))
    .....
    mais j'ai besoin du contenu , sachant avec l'echo le contenu de $ident s'affiche.
    de quel index il s'agit

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Après $data=$verifident->fetch(); fait un print_r($data);exit;Pour vérifier ce que contient $data après ton fetch()Allez je pense que ce qu'il faut c'est $data[0]['ident']

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Bonjour ; merci rawsrc ( en faite c'est quoi rawsrc)
    le print affiche :
    Array ( [acces] => utilisateur [0] => utilisateur [mpaccess] => essai [1] => essai )
    donc les paramètres sont bien transmis.
    est le code devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .......
    if (($data [0]['ident'] == $_POST['ident']) and ($data [1]['pass'] == md5($_POST['pass'])))
    maintenent j'ai plus ce message d'erreure.
    Merci rawsrc.

Discussions similaires

  1. [PDO] PDO requêtes paramétrées avec tableau de paramètres de taille variable
    Par disciplined dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2012, 08h41
  2. [PDO] PDO et exécution de requête paramétrée (aucun résultat ne s'affiche)
    Par babacan dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 01/03/2012, 17h22
  3. [PDO] PDO et requête paramétrée
    Par ToxiZz dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/05/2006, 13h19
  4. Requête paramétrée qui remplit une DBLookUpComboBox
    Par navis84 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/12/2004, 21h23
  5. VBA & Requête paramétrée
    Par gripoil dans le forum Access
    Réponses: 4
    Dernier message: 25/11/2004, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo