Probleme php

Résolu
Bonjour, moi j'ai un problème du même genre avec cette ligne :

include_once 'idents.php'; # Redirection

Et on m'affiche cela comme erreur :
Parse error: syntax error, unexpected 'include_once' (T_INCLUDE_ONCE) in C:\wamp\www\exemple\connexion.php on line 3

Help please :) !!

28 réponses

Résumé de la discussion

Le problème signale une erreur de syntaxe Parse error: syntax error, unexpected 'include_once' (T_INCLUDE_ONCE) à la ligne 3 de connexion.php lors de l'inclusion du fichier idents.php. Des solutions privilégient de placer le code à l'intérieur d'un bloc PHP, en ouvrant par

Bobot (l’IA à votre service)
  1. Il y a bien des espaces insécables partout.
    Il faut donc commencer par les éliminer avant de s'attaquer aux autres problèmes, car tant qu'on a des erreurs de syntaxe, il n'est pas question d'exécution.
    1. J'ai rectifier les espaces mais j'ai un probleme à la ligne 17:

      if($login_q->fetchColumn() > 0)
    2. J'ai rectifier les espaces
      Comment sais-tu que tu as rectifié ? Il y en a partout, ce sont toutes les espaces de ton fichier qu'il faut corriger.Enlève celle qu'il y a avant cette ligne, tu verras quu'il n'aura plus d'erreur ici mais qu'il y en aura plus loin.
  2. Modérateur
    Ok.
    Donc essayes ce code et dis moi ce qui s'affiche sur ton écran :

    <?php
     /* ----------------------------------------------------------------*/
     //    ==>> PAGE LOGIN.PHP <<==
     //  => Comprenant : Le formulaire HTML + Le traitement en PHP
     /* ----------------------------------------------------------------*/
    
    //------------------------------------------------------------------//
     // DEMARRAGE DES SESSIONS
     //------------------------------------------------------------------//
      if(session_id() == '') {
        session_start();
      }
    
     // Connexion à la BDD ( on fait un INCLUDE du fichier cnxBDD.php
     require_once("cnxBDD.php"); 
     
     //****************************************
     //   ----   Traitement du SUBMIT ----
     //****************************************
     
     //------------------------------------------------------------------// 
     // Récupération "propre" des variables POST !
     //------------------------------------------------------------------//
      $login = !empty($_POST['login']) ? $_POST['login'] : NULL;
      $pass = !empty($_POST['password']) ? $_POST['password'] : NULL;
     
      if($login && $pass){
      // Requete de recherche d'une correspondance login/pass
        $sql =   "SELECT *
                FROM les_membres
                WHERE login=:leLogin 
                AND pass=:lePass ";
       $params = array(":leLogin"=>$login,":lePass"=>$pass);
      
      try{
        $requete = $bdd->prepare($sql);
        $requete->execute();
          //on stocke le résultat dans un Array
          $array_Result = $requete->fetchall();
       
       //le temps des tests:
       echo "<br> Résultat de la requête :<br>";
       print_r($array_Result);
       
       }catch(Exception $e) {
        // en cas de PB dans la requete
          echo "<br><b>ERREUR !</b> ".$e->getMessage()."<br>";
          echo "<br>params : <br>";
          print_r($params);
       }
      
      
       $nbResult = $array_Result ? count($array_Result) : 0;
       if($nbResult == 1 ){
         $id_lien = $array_Result[0]['id_liens'];
        $droit = $array_Result[0]['droit'];
        // on stocke en SESSION
        $_SESSION['id']=$id_lien;
         $_SESSION['droit']=$droit;
        
       if($droit == "admin"){
         echo " <br> Le temps des tests : Droit = ADMIN ";
           //header('Location:script.html')
        }else{
         echo " <br> Le temps des tests : Droit != ADMIN ";
         // header('Location:login.php');
       }
       
      }else{
        $error[] = "<br>Erreur ! Il y a $nbResult résultats";
      }
      
      }else{
       $error[] = "<br>Merci de remplir les champs Login et Password.";
       //le temps des tests:
       echo "<br> Variables POST :<br>";
       print_r($_POST);
     }
     
    
    ?>
    
    <!-- Formulaire HTML -->
    <form method="post" action="">
    
        <legend>S'inscrire sur le site</legend>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Login</label>
          <div class="col-lg-10">
            <input type="text" class="form-control" name="login" placeholder="Login">
          </div>
        </div><br/><br/><br/>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Mot de passe</label>
          <div class="col-lg-10">
            <input type="password" class="form-control" name="password" placeholder="Mot de passe">
          </div>
        </div>
    
       <br/><br/><center><button type="submit" name="submit" class="btn btn-primary">S'Inscrire</button></center>
        <?php if(count($error)>0){
          foreach($error as $Err){
       echo "<div class='alert alert-danger' role='alert'>".$Err."</div>";
     }
     }?>
    </form>
    


    Cordialement,
    Jordane
    1. Non mais tout marche enfet c'est nikel. :)
      Enfet je fait un portail applicatif et j'aimerai que plusieurs personne puisse ce connecter et que quand il rentre leur login et leur mdp il n'est pas accées a la meme page.
      Peut tu m'aider ?
    2. Modérateur
      Non mais tout marche enfet c'est nikel. :)

      Donc ... question résolue.

      t j'aimerai que plusieurs personne puisse ce connecter et que quand il rentre leur login et leur mdp il n'est pas accées a la meme page.

      Ceci est une nouvelle question .... et donc.. doit être posée dans une nouvelle discussion sur le forum.
      Cela permet de faciliter la lecture des sujets et leurs éventuelles recherches par des internautes qui rencontreraient les mêmes difficultés que toi.

      Donc ....Si la question initiale de cette discussion est résolue..
      Merci de ne pas oublier de clôturer le sujet
      (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

      Cordialement,
      Jordane
  3. Oui elle porte bien le meme nom que ce qui est indiqué dans ma requête.

    Voici ce que comporte ma table les_membres :

    -- phpMyAdmin SQL Dump
    -- version 4.1.14
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Mer 24 Juin 2015 à 15:22
    -- Version du serveur :  5.6.17
    -- Version de PHP :  5.5.12
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- Base de données :  `membres`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Structure de la table `les_membres`
    --
    
    CREATE TABLE IF NOT EXISTS `les_membres` (
      `ID` int(11) NOT NULL AUTO_INCREMENT,
      `login` varchar(100) NOT NULL,
      `pass` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `date_enregistrement` datetime NOT NULL,
      PRIMARY KEY (`ID`),
      UNIQUE KEY `login` (`login`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    
    1. Modérateur
      Ok très bien.

      Donc.. dans le code que je t'ai donné ...
      Commente les REDIRECTIONS ( le temps qu'on fasse les tests )
      puis
      1 - Modifie la requête pour écrire le nom des champs EXACTEMENT de la même manière que ceux de ta table.
      (à savoir ... pass avec un "p" minuscule et non majuscule....)

      En gros:
          $sql =   "SELECT *
                  FROM les_membres
                  WHERE login=:leLogin 
                  AND pass=:lePass ";
      


      2- ajoutes en dessous de la ligne
        $array_Result = $requete->fetchall();
      

      Les lignes de code suivantes :

      echo "<br> Login : ".$login;
      echo "<br> Password : ".$pass;
      print_r(  $array_Result );
      

      Histoire de voir ce que ça nous retourne.
    2. @jordane45Login : Frenet
      Password : oliviaArray ( )

      S'identifier

      Login

      Mot de passe

      Erreur ! Il y a 0 résultats
    3. Modérateur
      @___Olivia.Tu peux tester ta requête en direct dans phpmyadmin ?

      SELECT *
      FROM les_membres
      WHERE login='Frenet'
         AND pass='Password'
      

      et me dire ce que ça te retourne ?
    4. @jordane45MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0000 sec)

      Voila ce que ça retourne.
  4. Modérateur
    Tout d'abord ... il faut sortir la connexion à ta BDD de ton script en le plaçant dans une page à part qu'il te suffira d'inclure lorsque tu en auras besoin :

    <?php
    //-------------------------------------------------------------------//
    // Fichier de connexion à la BDD
    // qu'il suffit d'inclure dans tes pages ...
    //-------------------------------------------------------------------//
     try{
       $bdd = new PDO('mysql:host=localhost;dbname=membres', 'root','');
        $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      }catch (PDOException $e) {
         echo "<br>ERREUR de connexion à la BDD !<br> ".$e->getMessage()."<br>";
      }
    	
    


    et Voici le code COMPLET de ta page login.php

    <?php
     /* ----------------------------------------------------------------*/
     //    ==>> PAGE LOGIN.PHP <<==
     //  => Comprenant : Le formulaire HTML + Le traitement en PHP
     /* ----------------------------------------------------------------*/
    ?>
    <?php
    
    //------------------------------------------------------------------//
     // DEMARRAGE DES SESSIONS
     //------------------------------------------------------------------//
      if(session_id() == '') {
        session_start();
      }
    
     // Connexion à la BDD ( on fait un INCLUDE du fichier cnxBDD.php
     require_once("cnxBDD.php");	
    	
     //****************************************
     //   ----   Traitement du SUBMIT ----
     //****************************************
     
     //------------------------------------------------------------------//	
    	// Récupération "propre" des variables POST !
    	//------------------------------------------------------------------//
    	 $login = !empty($_POST['login']) ? $_POST['login'] : NULL;
    	 $pass = !empty($_POST['password']) ? $_POST['password'] : NULL;
    	
      if($login && $pass){
    	 // Requete de recherche d'une correspondance login/pass
        $sql =   "SELECT *
                FROM les_membres
                WHERE login=:leLogin 
                AND Pass=:lePass ";
        $requete = $bdd->prepare($sql);
        $requete->bindParam(":leLogin",$login);
        $requete->bindParam(":lePass",$pass);
        $requete->execute();
        //on stocke le résultat dans un Array
        $array_Result = $requete->fetchall();
    	
    	  $nbResult = $array_Result ? count($array_Result) : 0;
    	  if($nbResult == 1 ){
    	    $id_lien = $array_Result['id_liens'];
    	  	$droit = $array_Result['droit'];
    		  // on stocke en SESSION
    		  $_SESSION['id']=$id_lien;
    	    $_SESSION['droit']=$droit;
    		  
    			if($droit == "admin"){
    			  echo " <br> Le temps des tests : Droit = ADMIN ";
    		     //header('Location:script.html')
    		  }else{
    			  echo " <br> Le temps des tests : Droit != ADMIN ";
    			  // header('Location:login.php');
    			}
    			 
    			 // Le temps des tests :
    			 print_r($array_Result);
    			 
    			 
    		}else{
    		  $error[] = "<br>Erreur ! Il y a $nbResult résultats";
    		}
    		
      }else{
    	  $error[] = "<br>Merci de remplir les champs Login et Password.";
    		
    	}
    	
    
    ?>
    
    <!-- Formulaire HTML -->
    <form method="post" action="">
    
        <legend>S'inscrire sur le site</legend>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Login</label>
          <div class="col-lg-10">
            <input type="text" class="form-control" name="login" placeholder="Login">
          </div>
        </div><br/><br/><br/>
    
        <div class="form-group">
          <label class="col-lg-2 control-label">Mot de passe</label>
          <div class="col-lg-10">
            <input type="password" class="form-control" name="password" placeholder="Mot de passe">
          </div>
        </div>
    
    <br/><br/><center><button type="submit" name="submit" class="btn btn-primary">S'Inscrire</button></center>
        <?php if(count($error)>0){
          foreach($error as $Err){
    	  echo "<div class='alert alert-danger' role='alert'>".$Err."</div>";
    	}
        }?>
    </form>
    


    NB : Le temps des tests.. les redirections sont désactivées ...et du debug a été ajouté.
    Si le résultat te semble correct tu pourras remettres les redirections et retirer les debug.

    1. C'est parfait tout marche, meme quand j'ai reactiver les redirections cependant j'ai un probleme a la ligne 53 de ma page login.php
    2. Modérateur
      @___Olivia.Tu dis ... j'ai un probleme ......
      ==>>> mais tu ne nous dis pas LEQUEL ........!!!!!

      Bon ... pour ce cas là .. c'est facile ... c'est juste un point-virguls Manquant ....à la ligne 52
      header('Location:script.html');
      

      Mais à l'avenir .. merci de nous donner le MESSAGE D'ERREUR COMPLET !!!!
    3. @jordane45D'accord désole.
      Maintenant quand je me connecte avec mes identifiants il me dise: "Erreur ! Il y a 0 résultats"
      Alors que j'ai bien preciser mon mdp et mon login dans la page login.php
    4. Modérateur
      ... et ..... tu as quelque-chose dans ta BDD ??
    5. @jordane45quelque-chose?
      Tu veux dire si j'ai bien definit mon mdp et mon login dans ma BDD?
      parceque j'ai créer une table membres qui contient un login, un pass et l'id. Donc je vois pas le probleme
  5. Et j'aimerai aussi savoir ou es-ce que je definis mon mdp et mon login pour que je puisse me connecter a mon formulaire ?
    1. Modérateur
      ....... houla... Je vois que tu débutes complètement ......

      Reprenons :

      1 - Tu as un formulaire HTML avec des INPUT pour que l'utilisateur puisse saisir ses identifiants
      2 - Tu as un script PHP qui valide les informations saisies ....
      => Pour ce qui est du login/mdp .... tu peux le stocker en BDD ... ou .. si tu n'en as qu'un seul .. le mettre directement dans ton script PHP.
      3 - ... tes autres pages ... accessibles une fois que l'utilisateur est connecté.

      Je t'invite à lire ceci :
      https://www.commentcamarche.net/contents/493-formulaires-html-cours-et-exemples

      Et ceci :
      https://www.commentcamarche.net/contents/793-php-recuperation-de-donnees
    2. @jordane45Oui voila je debute,
      Voici mon formulaire HTML avec des INPUT pour que l'utilisateur puisse saisir ses identifiants:

      <form method="post" action="">
      
          <legend>S'inscrire sur le site</legend>
      
          <div class="form-group">
            <label class="col-lg-2 control-label">Login</label>
            <div class="col-lg-10">
              <input type="text" class="form-control" name="login" placeholder="Login">
            </div>
          </div><br/><br/><br/>
      
          <div class="form-group">
            <label class="col-lg-2 control-label">Mot de passe</label>
            <div class="col-lg-10">
              <input type="password" class="form-control" name="password" placeholder="Mot de passe">
            </div>
          </div>
      
      <br/><br/><center><button type="submit" name="submit" class="btn btn-primary">S'Inscrire</button></center>
      </form>
    3. @___Olivia.Voici le script PHP qui valide mes informations saisies :

      <?php
      // on se connecte à MySQL 
      $db = mysql_connect('localhost', 'login', 'password'); 
      mysql_select_db('nomdelabase',$db); 
      
      if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
      $_POST['password'] = hash("sha256", $_POST['password']);
        extract($_POST);
        // on recupére le password de la table qui correspond au login du visiteur
        $sql = "select password from membre where login='".$login."'";
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      
        $data = mysql_fetch_assoc($req);
      
        if($data['password'] != $password) {
          echo '<div class="alert alert-dismissable alert-danger">
        <button type="button" class="close" data-dismiss="alert">x</button>
        <strong>Oh Non !</strong> Mauvais login / password. Merci de recommencer !
      </div>';
        }
        
        else {
          session_start();
          $_SESSION['login'] = $login;
          
          echo '<div class="alert alert-dismissable alert-success">
        <button type="button" class="close" data-dismiss="alert">×</button>
        <strong>Yes !</strong> Vous etes bien logué, Redirection dans 5 secondes ! <meta http-equiv="refresh" content="5; URL=dashboard">
      </div>';
          // ici vous pouvez afficher un lien pour renvoyer
          // vers la page d'accueil de votre espace membres 
        }    
      }
      else {
        $champs = '<p><b>(Remplissez tous les champs pour vous connectez !)</b></p>';
      }
      
      
      ?> 
  6. J'ai utiliser le code que tu m'as donné mais pour ma page login.php .
    Il faut d'abord que un formulaire s'affiche pour que je puisse me connecter non ?
    1. Modérateur
      Par contre ... je voudrais le code de ton FORMULAIRE HTML !
      Tu sais... le truc qui contient les INPUT dans lesquels l'utilisateur doit saisir ses identifiants !!!!!
  7. Modérateur
    ... tu peux nous faire voir ton formulaire html ?
    car là .. visiblement... tu n'envoies pas les données .......

    PS: Merci d'utiliser le bouton REPONDRE plutôt que de mettre tes "réponses" dans les zones de commentaire... ça sera plus simple pour suivre la conversation !

    1. tiens voici ma page login.php :

      <?php
       //------------------------------------------------------------------//
       // DEMARRAGE DES SESSIONS
       //------------------------------------------------------------------//
        if(session_id() == '') {
          session_start();
        }
      	
      	//------------------------------------------------------------------//
      	// connexion à la base
      	//------------------------------------------------------------------//
      	try{
      	  $maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
          $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
          $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      	}catch (PDOException $e) {
           echo "<br>ERREUR de connexion à la BDD !<br> ".$e->getMessage()."<br>";
      	}
      	
      	
      	//------------------------------------------------------------------//	
      	// Récupération "propre" des variables POST !
      	//------------------------------------------------------------------//
      	 $login = !empty($_POST['login']) ? $_POST['login'] : NULL;
      	 $pass = !empty($_POST['password']) ? $_POST['password'] : NULL;
      	
      
      	//------------------------------------------------------------------//
      	if($login && $pass){
      	 // Requete de recherche d'une correspondance login/pass
          $sql =   "SELECT *
                  FROM les_membres
                  WHERE login=:leLogin 
                  AND Pass=:lePass ";
          $requete = $maConnexion->prepare($sql);
          $requete->bindParam(":leLogin",$login);
          $requete->bindParam(":lePass",$pass);
          $requete->execute();
          //on stocke le résultat dans un Array
          $array_Result = $requete->fetchall();
      	
      	  $nbResult = $array_Result ? count($array_Result) : 0;
      	  if($nbResult == 1 ){
      	    $id_lien = $array_Result['id_liens'];
      	  	$droit = $array_Result['droit'];
      		  // on stocke en SESSION
      		  $_SESSION['id']=$id_lien;
      	    $_SESSION['droit']=$droit;
      		  
      			if($droit == "admin"){
      			  echo " <br> Le temps des tests : Droit = ADMIN ";
      		     //header('Location:script.html')
      		  }else{
      			  echo " <br> Le temps des tests : Droit != ADMIN ";
      			  // header('Location:login.php');
      			}
      			
      		}else{
      		  echo "<br> Erreur : Il y a $nbResult resultats !";
      			print_r($array_Result);
      		}
      		
        }else{
      	  echo "<br> Erreur !  Login ou Password Vide ou inconnu !<br>";
      		print_r($_POST);
      	}
    2. @___Olivia.Et tiens voici ma page formulaire.php

      <?php
      	// session pour stocker l'ID
      	session_start(); 
      	
      	// connexion à la base
      	$maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
          $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
          $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      	
      	// récupération du post dans des variables : 
      	// c'est plus simple à écrire ensuite
      	$login=print_r($_POST);
      	$pass=print_r($_POST);
      	
      
      	
      	// Requete de recherche d'une correspondance login/pass
      $sql =   "SELECT *
                       FROM les_membres
                      WHERE login=:leLogin 
                       AND Pass=:lePass ";
       $requete = $maConnexion->prepare($sql);
       $requete->bindParam(":leLogin",$login);
       $requete->bindParam(":lePass",$pass);
       $requete->execute();
      	
      
      	
      	if (count($resultat)==1) {
      		// une seule ligne, et $resultat est un tableau : 
      		// on récupère donc la ligne dans $resultat[0]
      		$ligne = $resultat[0];
      		
      	
      		// on stocke dans la session quelques informations qui nous intéressent : 
      		// - l'identifiant, qui permettra de contrôler l'accès aux pages privées
      		// - le nom, les droits, etc : on pourrait les retrouver par une requête
      		//	 à partir de l'identifiant, mais c'est plus rapide de les conserver
      		$_SESSION['id']=$ligne['id_liens'];
      		$_SESSION['droit']=$ligne['droit'];
      		
      		
      		// on choisit la page à charger ensuite : 
      		// - profil pour un visiteur
      		// - administration pour un admin
      		//if ($ligne['droit']=='admin') {
      			header('Location:script.php');
      		//}else{
      			header('Location:login.php');
      		}
      		
      	//}else{
      		// si on n'a pas trouvé de correspondance (ou s'il y en a plusieurs...)
      		// -> retour sur la page d'identification
      		header('Location:login.php');
      	//}
      	
      
      // fichier "pur php" : c'est une bonne pratique de ne pas fermer la balise />
    3. Modérateur
      Pourquoi n'utilises tu pas le code que je t'ai donné ???????
  8. Nickel, mais il m'affiche un probleme ligne 60:

    Voici l'erreur :

    Parse error: syntax error, unexpected 'print_r' (T_STRING), expecting ',' or ';' in C:\wamp\www\mon-projet\login.php on line 60
    1. Modérateur
      Ligne 59 ... il manque un point-virgule au bout de la ligne.
  9. Modérateur
    C'est cette partie du code qui pose problème
    else{
      // si on n'a pas trouvé de correspondance (ou s'il y en a plusieurs...)
      // -> retour sur la page d'identification
      header('Location:login.php');
    

    ... vu que tu as commenté le IF (tout en haut..) .. le else n'est plus rattaché à rien.

    De plus ...Ceci est totalement faux
    
     // récupération du post dans des variables : 
     // c'est plus simple à écrire ensuite
     /$login=print_r($_POST);
     $pass=print_r($_POST);  
    


    Essayes comme ça :
    <?php
     //------------------------------------------------------------------//
     // DEMARRAGE DES SESSIONS
     //------------------------------------------------------------------//
      if(session_id() == '') {
        session_start();
      }
     
     //------------------------------------------------------------------//
     // connexion à la base
     //------------------------------------------------------------------//
     try{
       $maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
        $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     }catch (PDOException $e) {
         echo "<br>ERREUR de connexion à la BDD !<br> ".$e->getMessage()."<br>";
     }
     
     
     //------------------------------------------------------------------// 
     // Récupération "propre" des variables POST !
     //------------------------------------------------------------------//
      $login = !empty($_POST['login']) ? $_POST['login'] : NULL;
      $pass = !empty($_POST['password']) ? $_POST['password'] : NULL;
     
    
     //------------------------------------------------------------------//
     if($login && $pass){
      // Requete de recherche d'une correspondance login/pass
        $sql =   "SELECT *
                FROM les_membres
                WHERE login=:leLogin 
                AND Pass=:lePass ";
        $requete = $maConnexion->prepare($sql);
        $requete->bindParam(":leLogin",$login);
        $requete->bindParam(":lePass",$pass);
        $requete->execute();
        //on stocke le résultat dans un Array
        $array_Result = $requete->fetchall();
     
       $nbResult = $array_Result ? count($array_Result) : 0;
       if($nbResult == 1 ){
         $id_lien = $array_Result['id_liens'];
        $droit = $array_Result['droit'];
        // on stocke en SESSION
        $_SESSION['id']=$id_lien;
         $_SESSION['droit']=$droit;
        
       if($droit == "admin"){
         echo " <br> Le temps des tests : Droit = ADMIN ";
           //header('Location:script.html')
        }else{
         echo " <br> Le temps des tests : Droit != ADMIN ";
         // header('Location:login.php');
       }
       
      }else{
        echo "<br> Erreur : Il y a $nbResult resultats !"
       print_r($array_Result);
      }
      
      }else{
       echo "<br> Erreur !  Login ou Password Vide ou inconnu !<br>";
      print_r($_POST);
     }
     
    
    1. Modérateur
      mais mon formulaire s'affiche meme avec les redirections

      Soit je ne suis pas bien réveillé .. soit tu t'exprimes réellement mal ....
      Pourrais tu être plus précise dans le souci rencontré ???

      Sachant que, nous somme d'accord...., tu as :
      - Une page : index.html qui contient ton formulaire
      - Une page : Login.php qui contient le code PHP à traiter lorsque tu valides ton formulaire

      => Une fois ton formulaire rempli et envoyé (via le bouton Submit).. tu es redirigée sur ta page login.php (qui ne contient AUCUN FORMULAIRE) ...
      Puis.. en fonction des droits de l'utilisateur (admin ou pas).. tu es redirigé sur l'une des pages :
      connexion.php ou affichage.php

      .... DONC .. peux-tu.. nous indiquer sur QUELLE PAGE tu es ( pour cela..regarde ta barre d'adresse ton navigateur.. ) lorsque tu nous dis que ça ne marche pas ????

      1. D'accrord je vais reprendre, comment et ou definir un mdp et un login qui me permetteront de me connecter sur mon formulaire.
      2. Bonjour,
        Peut tu verifier mon code s'il te plait car j'ai encore des erreurs notamment a la ligne 53 et je ne comprend pas .

        <?php
        	// session pour stocker l'ID
        
        	session_start(); 
        	
        	// connexion à la base
        	$maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
            $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        	
        	// récupération du post dans des variables : 
        	// c'est plus simple à écrire ensuite
        	$login=print_r($_POST);
        	$pass=print_r($_POST);
        	
        
        	
        	// Requete de recherche d'une correspondance login/pass
        $sql =   "SELECT *
                         FROM les_membres
                        WHERE login=:leLogin 
                         AND Pass=:lePass ";
         $requete = $maConnexion->prepare($sql);
         $requete->bindParam(":leLogin",$login);
         $requete->bindParam(":lePass",$pass);
         $requete->execute();
        	
        
        	
        	//if (count($resultat)==0){
        		// une seule ligne, et $resultat est un tableau : 
        		// on récupère donc la ligne dans $resultat[0]
        		//$ligne = $resultat[1];
        		
        	
        		// on stocke dans la session quelques informations qui nous intéressent : 
        		// - l'identifiant, qui permettra de contrôler l'accès aux pages privées
        		// - le nom, les droits, etc : on pourrait les retrouver par une requête
        		//	 à partir de l'identifiant, mais c'est plus rapide de les conserver
        		$_SESSION['id']=$ligne['id_liens'];
        		$_SESSION['droit']=$ligne['droit'];
        		
        		
        		// on choisit la page à charger ensuite : 
        		// - profil pour un visiteur
        		// - administration pour un admin
        		if ($ligne['droit']=='admin') {
        			//header('Location:script.html')
        		}else{
        			header('Location:index.html');
        		}
        		
        		else{
        		// si on n'a pas trouvé de correspondance (ou s'il y en a plusieurs...)
        		// -> retour sur la page d'identification
        		header('Location:login.php');
        	}
        	
        
        // fichier "pur php" : c'est une bonne pratique de ne pas fermer la balise />
        
      3. @___Olivia.Exact, et maintenant ligne 66 alors que j'ai fermer mon accolade.
      4. ah non c'est bon c'est que j'avais oublier un ';' .
        mais il m'affiche ca maintenant comme message :
        Erreur ! Login ou Password Vide ou inconnu !
        Array ( )
    2. Voici le message d'erreur de la ligne 12 :

      Notice: Undefined index: login in C:\wamp\www\mon-projet\login.php on line 12

      Voici le message d'erreur de la ligne 13 :

      Notice: Undefined index: pass in C:\wamp\www\mon-projet\login.php on line 13

      Puis voici les 2 messages d'erreur de la ligne 25:

      Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 La table 'membres.phplogin' n'existe pas' in C:\wamp\www\mon-projet\login.php on line 25

      PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 La table 'membres.phplogin' n'existe pas in C:\wamp\www\mon-projet\login.php on line 25
      1. Modérateur
        Pour les UNDEFINED .. c'est que visiblement .. les variables POST n'existent pas.
        Pour le savoir . il te suffit d'ajouter un
        print_r($_POST);
        


        Ensuite.. pour les messages d'erreur.. ligne 25 ... et bien le message est clair .... la TABLE que tu essaies d'utiliser dans la requête .... n'EXISTE PAS ( ou ne porte pas ce nom ! )
        Vérifie le nom de tes tables dans ta BDD.... à mon avis phplogin.. n'en fait pas parti !
      2. Ok tout marche mais quand je tape mon nom d'utilisateur et mon mdp cela ne me redirige pas mais sa rafraichit seulement la page.
      3. Modérateur
        @___Olivia.Le temps des tests .. désactive les redirections
        header('Location:

        ....
      4. Ok c'est bon mais mon formulaire s'affiche meme avec les redirections
        Peur etre que je me suis tromper en definissant le pass et le login ?
    3. Modérateur

      il me dise que j'ai un probleme a la ligne 12,13 et 25 de ma page login.php que je ne comprends vraiment pas

      Et tu penses que SANS NOUS MONTRER les messages d'erreurs ... on va réussi à deviner et à t'aider ??

      Merci de nous copier/coller les messages d'erreurs indiqués !

      1. Voici le code de ma page login.php

        <?php
        	// session pour stocker l'ID
        	session_start(); 
        	
        	// connexion à la base
        	$maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
            $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        	
        	// récupération du post dans des variables : 
        	// c'est plus simple à écrire ensuite
        	$login=$_POST['login'];
        	$pass=$_POST['pass'];
        	
        
        	
        	// Requete de recherche d'une correspondance login/pass
        $sql =   "SELECT *
                         FROM phplogin
                        WHERE login=:leLogin 
                         AND Pass=:lePass ";
         $requete = $maConnexion->prepare($sql);
         $requete->bindParam(":leLogin",$login);
         $requete->bindParam(":lePass",$pass);
         $requete->execute();
        	
        
        	
        	if (count($resultat)==1) {
        		// une seule ligne, et $resultat est un tableau : 
        		// on récupère donc la ligne dans $resultat[0]
        		$ligne = $resultat[0];
        		
        	
        		// on stocke dans la session quelques informations qui nous intéressent : 
        		// - l'identifiant, qui permettra de contrôler l'accès aux pages privées
        		// - le nom, les droits, etc : on pourrait les retrouver par une requête
        		//	 à partir de l'identifiant, mais c'est plus rapide de les conserver
        		$_SESSION['id']=$ligne['id_liens'];
        		$_SESSION['droit']=$ligne['droit'];
        		
        		
        		// on choisit la page à charger ensuite : 
        		// - profil pour un visiteur
        		// - administration pour un admin
        		if ($ligne['droit']=='admin') {
        			header('Location:connexion.php');
        		}else{
        			header('Location:affichage.php');
        		}
        		
        	}else{
        		// si on n'a pas trouvé de correspondance (ou s'il y en a plusieurs...)
        		// -> retour sur la page d'identification
        		header('Location:identification.html');
        	}
        	
        
        // fichier "pur php" : c'est une bonne pratique de ne pas fermer la balise />
        1. Certes mais c'est le code de cette page qui s'affiche.
          1. Modérateur
            Quand tu dis : C'est le code ... qui s'affiche .... tu veux dire quoi exactement ???
            Tu peux aussi nous indiquer ce que tu as dans la barre d'adresse de ton navigateur ?
          2. @jordane45Non c'est bon cependant, il me dise que j'ai un probleme a la ligne 12,13 et 25 de ma page login.php que je ne comprends vraiment pas. Pouvez vous m'aider ?
        2. Cela ne change rien, tiens je te montre ma page login.php

          <?php
           // session pour stocker l'ID
           session_start(); 
           
           // connexion à la base
           $maConnexion = new PDO('mysql:host=localhost;dbname=membres', 'root','');
              $maConnexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
              $maConnexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
           
           // récupération du post dans des variables : 
           // c'est plus simple à écrire ensuite
           $login=$_POST['login'];
           $pass=$_POST['pass'];
           
          
           
           // Requete de recherche d'une correspondance login/pass
           $requete = $maConnexion->prepare(
             "SELECT COUNT(*) FROM phplogin
            WHERE login='$login' AND Pass='$pass'"
          
             
             );
           $requete->bindParam(":leLogin",$login);
           $requete->bindParam(":lePass",$pass);
           $requete->execute();
           
           $resultat = $requete->fetchAll();
           
          
           
           if (count($resultat)==1) {
            // une seule ligne, et $resultat est un tableau : 
            // on récupère donc la ligne dans $resultat[0]
            $ligne = $resultat[0];
            
           
            // on stocke dans la session quelques informations qui nous intéressent : 
            // - l'identifiant, qui permettra de contrôler l'accès aux pages privées
            // - le nom, les droits, etc : on pourrait les retrouver par une requête
            //  à partir de l'identifiant, mais c'est plus rapide de les conserver
            $_SESSION['id']=$ligne['id_liens'];
            $_SESSION['droit']=$ligne['droit'];
            
            
            // on choisit la page à charger ensuite : 
            // - profil pour un visiteur
            // - administration pour un admin
            if ($ligne['droit']=='admin') {
             header('Location:connexion.php');
            }else{
             header('Location:affichage.php');
            }
            
           }else{
            // si on n'a pas trouvé de correspondance (ou s'il y en a plusieurs...)
            // -> retour sur la page d'identification
            header('Location:identification.html');
           }
           


          // fichier "pur php" : c'est une bonne pratique de ne pas fermer la balise />

          EDIT ( ENCORE !!!!! ) : Ajout des balises de code (la coloration syntaxique).
          Explications disponibles ici :
          https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

          Merci d'y penser dans tes prochains messages.
          .
          1. Modérateur
            Cela ne change rien

            C'est à dire ???

            Tu as mis quoi dans ton index.html .. dans le FORM action ??
          2. Modérateur
            Et puis... tu n'utilises qu'à moitié les requêtes préparées... si bien que ce que tu écris est totalement faux !
             // Requete de recherche d'une correspondance login/pass
             $requete = $maConnexion->prepare(
               "SELECT COUNT(*) FROM phplogin
              WHERE login='$login' AND Pass='$pass'"
            
               
               );
             $requete->bindParam(":leLogin",$login);
             $requete->bindParam(":lePass",$pass);
             $requete->execute();
            

            A changer par :
             // Requete de recherche d'une correspondance login/pass
            $sql =   "SELECT *
                             FROM phplogin
                            WHERE login=:leLogin 
                             AND Pass=:lePass ";
             $requete = $maConnexion->prepare($sql);
             $requete->bindParam(":leLogin",$login);
             $requete->bindParam(":lePass",$pass);
             $requete->execute();
            
          3. Dans mon index.html dans le form action j'ai mis "login.php" cependant quand j'appuie sur le bouton connexion cela me redirige vers le code de la page login.php et non vers un formulaire.
          4. Modérateur
            @__Olivia.

            cela me redirige vers le code de la page login.php et non vers un formulaire.

            Ce qui me semble normal ... vers quel FORMULAIRE devrais tu (selon toi...) être redirigée ??
        3. Modérateur
          index.html
          <!DOCTYPE html>
          <html lang="FR">
          <head>
          
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
          	<title></title>
          </head>
          <body>
          <P align="center">
           <img src="image_meudon.png"></img>
           <link rel="stylesheet" href="css.css" type="text/css">
           
           <form method="post" action="inscription.php"> 
            <table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
             <tr>
             <td class="row1" align="center">
              <table border="0" cellspacing="0" cellpadding="2">
               <tr><td>
                <div id="global">
                  <a href='#'><div id="gauche">connexion</div></a> 
                  <a href='#'><div id="droite">connexion avec un autre utilisateur</div></a>
                </div>
               </td></tr>
              </table>
              </td>
             </tr>
            </table>
           </form>	
          </p>
          </body>
          </html>
          


          PS: N'oublie pas (si ce n'est pas déjà fait....)de renommer ton fichier inscription.html en inscription.php
          1. Merci, mais avec le code que tu viens de m'envoyer quand j'appuie sur le bouton "connexion" ou meme sur le bouton "connexion avec un autre utilisateur" cela ne me redirige plus vers la page inscription.php
          2. Modérateur
            Oui désolé...
            Ton souci vient du fait .. que ce ne sont pas des boutons ... mais des liens que tu as mis...
            remplaces
             <a href='#'><div id="gauche">connexion</div></a> 
            
            

            par :
            < input type="submit"  value="connexion">
            
            
          3. Merci , mais je ne pense pas que ce code soit un code html car il ne s'affiche pas en couleur mais en noir sur notepad ++
          4. Modérateur
            @Oliviasi si... (il y a un espace en trop devant le input en fait..)
            <input type="submit" value="connexion">
            
          5. Ah oui merci, mais maintenant quand je clique dessus je ne tombe pas sur le formulaire mais sur le code du fichier inscription.php
        4. oui tiens mon index.html

          <!doctype html>
          
          <html lang="FR">
          
          <P align="center">
          	<IMG src="image_meudon.png" />
           <link rel="stylesheet" href="css.css" type="text/css" />
           <form .. id="img">
           
          <form method="post" action="inscription.php"> 
          <table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
          
          <tr>
          <td class="row1" align="center">
          
          <table border="0" cellspacing="0" cellpadding="2">
          
          <div id="global">
          
           <a href='inscription.html'><div id="gauche">connexion</div></a> 
          <a href='inscription.html'><div id="droite">connexion avec un autre utilisateur</div></a>
          </div>
          
          
          </tr>
          </table></td>
          </tr>
          </table>
          </form>	
          </form>	
          
          1. Modérateur
            C'est quoi ce bout de code ?
             <form .. id="img">
            
          2. Enfet j'ai pris ce debut de code sur une page index.html que j'avais deja faite pourquoi ce bout de code empeche quelque chose?
        5. Modérateur
          Bonjour,
          Merci.

          Déjà.. premier petit souci visiblement.... dans ta page index..
          <form method="post" 
          

          .... tu ne fermes pas la balise form ... et il manque l'attribut "action"

          Par exemple
          <form method="post"  action="inscription.php">
          


          NB : Ton fichier inscription ... n'est pas .html ... mais .php ...
          Vérifies bien que ton fichier a bien la bonne extension
          1. Modérateur
            Et dans ta page inscription...
            tu es sûr que ces lignes sont bonnes ??
            $login = Frenet($_POST['login']); // mise en variable du nom d'utilisateur 
            $pass = olivia(md5($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5 (I love md5) 
            
            

            Que viennent faire ton nom et prénom dans ces lignes de code ?
          2. Ah oui c'etais une erreur de ma part, je remplace par login et pass du coup comme ceci :

            <HTML>
            <?php
            require_once('connexion.php');
            /* 
            ----------------------------------- 
            ------ SCRIPT DE PROTECTION ------- 
            DBProtect V1.2 
            ----------------------------------- 
            */ 
            
            session_start(); // début de session 
            
            if (isset($_POST['login'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe) 
            $login = login($_POST['login']); // mise en variable du nom d'utilisateur 
            $pass = pass(md5($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5 (I love md5) 
          3. Modérateur
            @Oliviaet pour ta page index et sa balise <form ?
          4. Oui c'est bon.
            Mais au niveau de mon formaulaire la redirection ne s'effectue pas.
          5. Quand je tape mon login et mon mot de passe cela rafraichit la page.
        6. Voici ma page index.html

          <!doctype html>
          
          <html lang="FR">
          
          <P align="center">
          	<IMG src="image_meudon.png" />
           <link rel="stylesheet" href="css.css" type="text/css" />
           <form .. id="img">
           
          <form method="post" 
          <table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
          
          <tr>
          <td class="row1" align="center">
          
          <table border="0" cellspacing="0" cellpadding="2">
          
          <div id="global">
          
           <a href='inscription.html'><div id="gauche">connexion</div></a> 
          <a href='inscription.html'><div id="droite">connexion avec un autre utilisateur</div></a>
          </div>
          
          
          </tr>
          </table></td>
          </tr>
          </table>
          </form>	
          </form>	
          
          1. Re j'ai un autre probleme quand je me connecte sur mon formulaire avec mes identifiant je n'arrive pas à etre rediriger vers une autre page mais sa rafraichit juste la page.

            Pouvez-vous encore m'aider please ?
            1. Modérateur
              Commence par nous poster le code actuel que tu utilises
            2. Je n'arrive pas à mettre le code en couleur.
            3. Modérateur
              Tu as lu le lien que je t'ai donné ??
              Il te suffit d'utiliser l'icône qui se trouve à droite de la fenêtre ( le petit triangle vers le bas) ...
              de choisir PHP .... puis de coller ton code ENTRE les balises
              <code php>
              // ici ton code
              <
              /code>
          • 1
          • 2