Probleme php

Résolu
Olivia -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  • 1
  • 2
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 <?php, et de vérifier que include_once 'idents.php'; se trouve bien dans ce contexte sans caractères invalides.
D'autres conseils évoquent de supprimer les espaces insécables et de corriger d'éventuels points-virgules manquants ou erreurs de syntaxe sur les lignes adjacentes pour éviter que l'erreur ne se propage.
Dernière précision utile: une correction typique consiste à commencer le fichier par <?php et à placer les directives d'inclusion à l'intérieur, sans autre texte avant le tag.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Utilisateur anonyme
     
    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.
    2
    1. Olivia
       
      J'ai rectifier les espaces mais j'ai un probleme à la ligne 17:

      if($login_q->fetchColumn() > 0)
      0
    2. Utilisateur anonyme
       
      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.
      0
  2. Utilisateur anonyme
     
    Bonjour

    Il faudrait que tu donnes les quelques lignes qui précèdent, mais il y a gros à parier que tu as oublié le point virgule de la ligne précédente.
    0
    1. Olivia
       
      Non je ne pense pas regarde ma ligne precedente :

      <?php //ligne precedente

      include_once 'idents.php'; # Redirection
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Le message d'erreur indique .. que le souci .. se trouve sur le fichier
    connexion.php ... à la ligne 3

    C'est donc ce fichier qu'il faut nous montrer..

    0
    1. Olivia
       
      Oui pardon tiens,
      //connexion.php
      
      <?php
       
      include_once 'idents.php'; # Redirection (voici ou se trouve l'erreur)
       
      if(isset($_POST['login'], $_POST['mdp'])) # Si le formulaire est soumis
      {
       if (!empty($_POST['login']) && !empty($_POST['password']))
       {
       
       $login = $_POST['login']; # Protection des Injection SQL ect...
       $mdp = sha1($_POST['password']);
       
       $login_q = $bdd->prepare("SELECT * FROM users WHERE login = :login AND pass = :mdp AND valid = '1'");
       $login_q->execute(array(
          'login' => $login
          'password' => $mdp
       ));
       
       if($login_q->fetchColumn() > 0) # Si login pass et valid ok
       {
       $user = $login_q->fetch(PDO::FETCH_OBJ);
       
       $token = sha1(uniqid().$user->id.sha1(uniqid()));
       setcookie('token', $token, time()+3600); # Création des cookies
       $user_id = $user->id;
       $setToken_q = $bdd->prepare("UPDATE users SET token = :token, token_date = NOW() WHERE id = :user_id");
       $setToken_q->execute(array(
          'token' => $token,
          'user_id' => $user_id
       ));
       $token = null;
       $_SESSION['login'] = $user->login; # Création des sessions
       
       header('Location: ajout.php'); # Redirection
       
       exit();
       }
       else # Sinon
       {
       # Login ou Mot de passe incorrect 
       }
       }
      }
       
      ?>
      <!DOCTYPE html>
      <html lang="fr">
       <head>
       <meta charset="utf-8" />
       <title> Portail </title>
       
       <link rel="stylesheet" href="style.css" type="text/css" />
       
       <!--[if IE]>
       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
       <!--[if lte IE 8]>
       <link rel="stylesheet" type="text/css" media="all" href="ie8.css"/><! [endif]-->
       <!--[if lte IE 7]>
       <link rel="stylesheet" type="text/css" media="all" href="ie7.css"/>
       <script src="js/IE8.js" type="text/javascript"></script><![endif]-->
       
       </head>
       
       <body>
       
       <!--[if IE]><div id="fond_ie"><! [endif]-->
       <nav id="menu_top">
       <ul>
       <li><a href="#">Actualités</a></li>
       <li><a href="#">Pages</a></li>
       <li><a id="deco" href="logout.php">Se déconnecter</a></li>
       </ul>
       </nav>
       <div></div>
       
       <div>
       
       <header id="header_top">
       <a id="logo" href="#">
       <h1><img src="images/image_meudon.png" alt="Real Tea : société spécialisée dans le thé rare de qualité"/></h1>
       </a>
       
       </header>
       
       <section id="connexion">
       <form method="post" action="connexion.php">
       <label for="id">Identifiant</label>
       <input id="login" name="login" type="text" required /> <!-- Remplir ce champ est requis -->
       <br/>
       <label for="mdp">Mot de passe</label>
       <input id="mdp" name="mdp" type="password" required /> <!-- Remplir ce champ est requis -->
       <a href="#" id="pwd_oubli" >Mot de passe oublié ?</a>
       <input type="submit" value="Connexion">
       </form>
       </section>
       
       <div></div>
       
       <footer id="footer_site">
       <aside>
       <p>Retrouvez-nous aussi sur : </p><p style="float:left;"><a href="#"><img src="images/image_meudon.png" alt="Joignez-nous sur Facebook"/></a> <a href="#"><img src="images/twitter.png" alt="Joignez-nous sur Twitter"/></a></p>
       </aside>
       
       <p id="copyright">exemple de site  : <a href="http://www.livingtuts.com">www.livingtuts.com</a></p>
       
       <div></div>
       </footer>
       </div>
       <!--[if lte IE 8]></div> <! [endif]-->
       </body>
      </html>
      


      EDIT : 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.
      .
      0
  4. Utilisateur anonyme
     
    Si ce n'est pas le point virgule manquant, c'est probablement une espace insécable à la ligne 2.
    Efface la ligne 2 même si tu n'y vois aucun caractère.
    Si tu as recopié ce code à partir d'un site par copier-coller, il est probable que tu aies de nombreuses espaces insécables que tu vas devoir remplacer "à la main" par des espaces normales

    Retape aussi la ligne 1, l'espace insécable est peut-être après le <?php.
    Si tu peux regarder ton source avec un éditeur hexadécimal, tu verras le code A0. au lieu de 20. Tu peux mettre ton fichier sur cjoint.com (ou autre) si tu veux que je te montre ce code.
    0
    1. Olivia
       
      D'accord je vais essayer de rectifier.Merci
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Essayes comme ceci :
    <?php
    //connexion.php
    include_once 'idents.php'; # Redirection (voici ou se trouve l'erreur)
     
    

    0
    1. Olivia
       
      D'accord je vais essayer. Merci
      0
    2. Olivia
       
      Maintenant il me dise ca :
      Parse error: syntax error, unexpected '$login' (T_VARIABLE) in C:\wamp\www\exemple\connexion.php on line 8
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Olivia
       
      Tu n'as pas bien mis tes parenthèses
      if(isset($_POST['login']) && isset($_POST['mdp'])) 
      
      0
    4. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Si. La syntaxe if(isset($_POST['login'], $_POST['mdp'])) est parfaitement correcte, et ne provoquerait pas cette erreur.
      isset admet plusieurs paramètres.
      0
    5. Olivia
       
      c'est cette ligne qu'il faut rectifier enfet tu t'es tromper :

      $login = $_POST['login']; et je ne vois pas le probleme
      0
  7. Utilisateur anonyme
     
    Même problème probablement.
    Envoie ton fichier par cjoint.com pour que je le vérifie, ou remplace manuellement toutes les espaces de ton fichier.
    0
    1. Olivia
       
      Tiens je te l'es envoyer par cjoint.com : http://www.cjoint.com/c/EFsoGbysYCV
      0
  8. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    De toutes façons il y a aussi un souci dans l'écriture de la requête ... les variables ne correspondent pas à celles de l'array...

    Voici comment j'écririerai ton code :
    <?php
    //connexion.php (après les balises de code PHP ! )
    
     require_once 'idents.php'; # Redirection (voici ou se trouve l'erreur)
     
     //récupération des variables:
     $login = isset($_POST['login']) && !empty($_POST['login']) ? $_POST['login'] : NULL;
     $password = isset($_POST['password']) && !empty($_POST['password']) ? sha1($_POST['password']) : NULL;
     
     
    if($login && $password){
      $sql = "SELECT * FROM users WHERE login = :login AND pass = :mdp AND valid = '1'" ;
      $params = array(':login' => $login ,':mdp' => $mdp );
      $login_q = $bdd->prepare($sql);
      $login_q->execute($params);
    
      // le reste de ton code
    
    
    
    }//fin du IF login/password
    
    ?>
    


    Cordialement,
    Jordane
    0
    1. Olivia
       
      Et maintenant il m'affiche une erreur sur cette ligne :

      if($login_q->fetchColumn() > 0)
      0
  9. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    Et maintenant il m'affiche une erreur sur cette ligne :
    if($login_q->fetchColumn() > 0)


    ... alors que tu as retiré les espaces insécables ?

    Quel est le message d'erreur qui t'ai donné ??

    0
    1. Olivia
       
      voici le message d'erreur :

      Parse error: syntax error, unexpected 'if' (T_IF) in C:\wamp\www\exemple\connexion.php on line 17
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      reposte sur cijoint ton fichier ... pour voir si tu as correctement retiré TOUS les espaces insécables comme "le père" te l'a demandé...
      0
    3. Utilisateur anonyme
       
      Les espaces insécables sont toujours là, c'est à peu près sûr.
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
         
        y'a des chances....
        0
  10. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Essayes ce code là :

    <?php
     //connexion.php
     require_once 'idents.php'; 
     
     //récupération des variables:
     $login = isset($_POST['login']) && !empty($_POST['login']) ? $_POST['login'] : NULL;
     $password = isset($_POST['password']) && !empty($_POST['password']) ? sha1($_POST['password']) : NULL;
     
     //----------------------------------------------------------//
     //  FONCTIONS
     //----------------------------------------------------------//
     function getUser($login,$mdp ){
      $global $bdd;
      $sql = "SELECT * FROM users WHERE login = :login AND pass = :mdp AND valid = '1'" ;
      $params = array(':login' => $login ,':mdp' => $mdp );
      $login_q = $bdd->prepare($sql);
      $login_q->execute($params);
      return $login_q->fetchall(); 
     }
     
     function setToken($user_id){
      $global $bdd;
      $token = sha1(uniqid().$user_id.sha1(uniqid()));
      setcookie('token', $token, time()+3600); # Création des cookies
      $sql = "UPDATE users
              SET token = :token
                , token_date = NOW() 
        WHERE id = :user_id" ;
        
      $setToken_q = $bdd->prepare($sql);
      $params = array( ':token' => $token,
                      ':user_id' => $user_id
                    );
      $setToken_q->execute($params);   
     }
     
     //----------------------------------------------------------//
     // DEBUT du script 
     //----------------------------------------------------------//
    if($login && $password){
    
      // on récupère les infos du user 
      $user = getUser($login,$password);
      if(count($user)>0){
      $_SESSION['login'] = $login; # Création des sessions
      $user_id = $user['id']; # User ID
      
       // on créé le token
      setToken($user_id);
     
       header('Location: ajout.php'); # Redirection
      }else{
       # Login et/ou Mot de passe incorrect 
     }
    
    }//fin du IF login/password
    ?>
    <!-- LA SUITE DE TON CODE HTML  -->
    
    


    J'ai mis en "FONCTIONS" ce qui pouvait l'être...
    Je trouve que ça rend le code plus compréhensible.....
    A la limite.. tu pourrais même placer ces fonctions dans un fichier "fonctions_user.php" et en faire un INCLUDE dans ta page....
    Par la suite... tu pourras y ajouter d'autres fonctions si tu en as besoin.

    En quelques sortes.. c'est un premier pas vers la programmation de CLASS...

    Cordialement,
    Jordane
    0
    1. Utilisateur anonyme
       
      Tant qu'à ré-écrire, autant supprimer les isset qui font double emploi avec les empty (puisque empty teste si la variable existe) :
       $login =!empty($_POST['login']) ? $_POST['login'] : NULL;
       $password = !empty($_POST['password']) ? sha1($_POST['password']) : NULL;
      
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
         
        c'est pas faux ^^
        0
  11. Olivia
     
    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 ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Commence par nous poster le code actuel que tu utilises
      0
    2. Olivia
       
      Je n'arrive pas à mettre le code en couleur.
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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>
      0
  12. Olivia
     
    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>	
    
    0
  13. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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 ?
      0
    2. Olivia
       
      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) 
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Olivia
       
      et pour ta page index et sa balise <form ?
      0
    4. Olivia
       
      Oui c'est bon.
      Mais au niveau de mon formaulaire la redirection ne s'effectue pas.
      0
    5. Olivia
       
      Quand je tape mon login et mon mot de passe cela rafraichit la page.
      0
  14. Olivia
     
    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>	
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      C'est quoi ce bout de code ?
       <form .. id="img">
      
      0
    2. Olivia
       
      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?
      0
  15. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    0
    1. Olivia
       
      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
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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">
      
      
      0
    3. Olivia
       
      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 ++
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Olivia
       
      si si... (il y a un espace en trop devant le input en fait..)
      <input type="submit" value="connexion">
      
      0
    5. Olivia
       
      Ah oui merci, mais maintenant quand je clique dessus je ne tombe pas sur le formulaire mais sur le code du fichier inscription.php
      0
  16. Olivia
     
    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.
    .
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Cela ne change rien

      C'est à dire ???

      Tu as mis quoi dans ton index.html .. dans le FORM action ??
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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();
      
      0
    3. __Olivia. Messages postés 1 Statut Membre
       
      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.
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > __Olivia. Messages postés 1 Statut Membre
         

        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 ??
        0
  17. ___Olivia.
     
    Certes mais c'est le code de cette page qui s'affiche.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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 ?
      0
      1. ___Olivia. > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Non 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 ?
        0
  18. ___Olivia.
     
    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 />
    0
  19. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     

    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 !

    0
  20. ___Olivia.
     
    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
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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 !
      0
    2. ___Olivia.
       
      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.
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > ___Olivia.
         
        Le temps des tests .. désactive les redirections
        header('Location:

        ....
        0
    3. ___Olivia.
       
      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 ?
      0
  21. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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 ????

    0
    1. ___Olivia.
       
      D'accrord je vais reprendre, comment et ou definir un mdp et un login qui me permetteront de me connecter sur mon formulaire.
      0
    2. ___Olivia.
       
      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 />
      
      0
      1. ___Olivia. > ___Olivia.
         
        Exact, et maintenant ligne 66 alors que j'ai fermer mon accolade.
        0
    3. ___Olivia.
       
      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 ( )
      0
  • 1
  • 2