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

Langage PHP Discussion :

Syntax Error T_ENCAPSED_AND_WHITESPACE [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Syntax Error T_ENCAPSED_AND_WHITESPACE
    Bonjour à vous,

    Dans un premier temps, j'espère avoir posté dans la bonne catégorie.

    L'objet de ce sujet sont les erreurs dans un de mes fichier.
    J'ai eu beaucoup d'erreurs de syntaxes que j'ai corrigées, mais à chaque fois cela m'en entraine une autre.

    Cette fois ci je ne trouve pas la solution, voici ce qu'elle me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /homepages/25/d40542423/htdocs/connexion/connexion.php on line 24.
    Voici mon code, j'ai mis la ligne 24 en gras :

    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
    <?php
    mysql_connect("XXXXX", "XXXXX", "XXXXX");
    mysql_select_db("XXXXX");
    
    if(isset($_POST) && !empty($_POST['nom']) && !empty($_POST['passe'])) {
      extract($_POST);
      // recup du password de la table qui correspond au nom du visiteur
      $sql = "select passe from connexion where nom='".$nom."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
    
      if($data['passe'] != sha1($passe)) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant &agrave la page de <a href="http://XXXXX.fr" >connexion</a>.</p>';
        exit;
      }
      else {
      session_start();
      $nom = $_POST['nom'];
      $_SESSION['nom'] = $nom;
      extract($_POST);
      $sql = "select prenom from connexion where nom='".$nom."'";
      $prenom = $_POST['prenom'];
      $_SESSION['prenom'] = $prenom;
      echo "Vous &ecirctes bien identifi&eacute,\".\"$_SESSION['prenom']";
     
        // renvois vers la page d'accueil du site
    	echo '</br></br><p><div style="text-align:center;"><a href="../accueil.php"> <img src="../images/entrer.gif" /> </a></div></p>';
      }
    }
    else {
      echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       include('login.htm'); 
       // On inclut le formulaire d'identification
       exit;
    }
    ?>

    Donc, sur cette ligne 24, j'ai placé des antislash car sans ça il y avais une autre erreur, corrigés elle m'en apporte une autre que j'ai citée plus haut.

    Petit historique de cette page : Elle sert à se connecter, et par la même occasion, récupérer le prénom associé au nom de connexion. Ce prénom je voudrais le placer dans une variable de session pour pouvoir m'en servir dans les autres pages du site.

    Si vous voyez d'autres éléments qui pourraient être améliorés, n'hésitez pas à me le dire, je suis encore novice en la matière.

    Pouvez-vous m'aider s'il vous plait ?

    Merci par avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise sprintf

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ou alors concatènes ta variable à ta chaine au lieu de la laisser dedans... Mais sprintf serait plus propre (ou printf, vu que c'est pour un affichage direct)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    utilise sprintf
    Je viens de l'utiliser mais ça ne fonctionne pas, ou en tout cas je n'y arrive pas. J'ai essayé diverses manières...

    Je vais essayer le printf.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    Bonjour,
    même si ce n'est pas le plus propre (?), pourquoi ne pas tout concaténer dans une seule chaîne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Vous &ecirctes bien identifi&eacute, ".$_SESSION['prenom'];

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Hayaou Voir le message
    Je viens de l'utiliser mais ça ne fonctionne pas, ou en tout cas je n'y arrive pas. J'ai essayé diverses manières...

    Je vais essayer le printf.
    montre ce que t'as esssaye

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf('Vous &ecirctes bien identifi&eacute, %s', $_SESSION['prenom']);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Excusez mon temps de réponse, je suis au travail

    Alors j'ai utilisé :

    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Connexion établie, ".$_SESSION['prenom'];
    (Oui j'ai changé de phrase simplement pour une question d'orthographe. Si c'est une femme qui se connecte il faudrais que je trouve un code pour mettre un "e" au bout de "identifié")

    La fonction printf je l'avais mal utilisée car j'avais mal compris les differentes façons de l'utiliser et par conséquent je n'avais pas mis %s mais autre chose, puis je l'ai corrigée en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf('Vous &ecirctes bien identifi&eacute, %s', $_SESSION['prenom']);
    Mais maintenent, la connexion ne se fait même plus ... Ca commence à m'embrouiller, j'ai l'impression d'avoir saccagé mon code de connexion

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi tu met des &ecirctes et des &eacute, si ton encodage est correct t'as pas besoin de faire ça

    pour le reste quel est l'erreur ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    J'avais mis des &ecirctes et des &eacute car ça me mettait des caractères spéciaux à la place des accents, mais depuis je n'ai pas réessayé.

    Justement pour la connexion, ça ne me marque pas d'erreur puisque avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else {
      echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       include('login.htm'); // On inclut le formulaire d'identification
       exit;
    je suis renvoyé directement à la page de connexion.

    Je ne me trompe ni de mot de passe ni d'identifiant.

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    montre ton dernier code

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Le dernier code de connexion, j'ai enlevé une partie qui servais à extraire de la BDD le prénom correspondant au nom car je ne sais pas si ça fonctionne. :

    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
    <?
    mysql_connect("xxx", "xxx", "xxx");
    mysql_select_db("xxx");
     
    if(isset($_POST) && !empty($_POST['nom']) && !empty($_POST['passe'])) {
      extract($_POST);
      // on recupère le password de la table qui correspond au nom du visiteur
      $sql = "select passe from connexion where nom='".$nom."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
      $data = mysql_fetch_assoc($req);
     
      if($data['passe'] != sha1($passe)) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant à la page de <a href="../index.php" >connexion</a>.</p>';
        exit;
      }
      else {
        session_start();
        $_SESSION['nom'] = $nom;
     
    	echo "Connexion établie, ".$_SESSION['nom'];
        // ici vous pouvez afficher un lien pour renvoyer
        // vers la page d'accueil de votre site
    echo '</br></br><p><div style="text-align:center;"><a href="../accueil.php"> <img src="../images/entrer.gif" /> </a></div></p>';
     
     
      }    
    }
    else {
      echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       include('login.htm'); // On inclut le formulaire d'identification
       exit;
    }
     
     
    ?>

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Voici avec le code essayant d'extraire le prénom de la BDD (désolé j'encombre un peu) :

    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
    <?php
    mysql_connect("xxx", "xxx", "xxx");
    mysql_select_db("xxx");
     
    if(isset($_POST) && !empty($_POST['nom']) && !empty($_POST['passe'])) {
      extract($_POST);
      // on recupère le password de la table qui correspond au nom du visiteur
      $sql = "select passe from connexion where nom='".$nom."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
     
      if($data['passe'] != sha1($passe)) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant &agrave la page de <a href="http://nrc-13.fr" >connexion</a>.</p>';
        exit;
      }
      else {
      session_start();
      $nom = $_POST['nom'];
      $_SESSION['nom'] = $nom;
      extract($_POST);
      $sql = "select prenom from connexion where nom='".$nom."'";
      $prenom = $_POST['prenom'];
      $_SESSION['prenom'] = $prenom;
    echo "Connexion établie, ".$_SESSION['prenom'];
        // ici vous pouvez afficher un lien pour renvoyer
        // vers la page d'accueil de votre site
    	echo '</br></br><p><div style="text-align:center;"><a href="../accueil.php"> <img src="../images/entrer.gif" /> </a></div></p>';
      }
    }
    else {
      echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       include('login.htm'); 
       // On inclut le formulaire d'identification
       exit;
    }
    ?>

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a trop de blabla dans ton code, et ton HTML est incorrect
    $_POST existe toujours, tes requêtes ne sont pas sécurisé
    pas la peine de faire un extract si c'est pour mettre les variable après
    Nettoie ton code, et test bien tes valeurs (avec un var_dump)

    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
    if(empty($_POST['nom']) || empty($_POST['passe'])) {
       echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       exit;
    }
     
    $sql = sprintf("SELECT nom, prenom FROM connexion WHERE nom='%' AND passe = '%s'",
        mysql_real_escape_string($_POST['nom']),
        mysql_real_escape_string(sha1($_POST['passe'])),
    );
     
    $req = mysql_query($sql);
    $data = mysql_fetch_assoc($req);
     
    if (!$data) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant à la page de <a href="/" >connexion</a>.</p>';
        exit;
    }
     
    session_start();
    $_SESSION = $data;
     
    echo "Connexion établie, ", $_SESSION['prenom'];

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    D'accord, je travail tout ça et je reposte quand ce sera plus propre.

    Merci.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Je suis en train de tout revoir, même les pages autres que celle-là, avec les tutos disponibles sur votre site. J'ai envie de bien tout assimiler, donc je prend le temps de bien comprendre.

    Le code que tu m'as passé, je te remercie, pose une erreur à la ligne 13. Voici l'erreur et mon interpretation, Olé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: syntax error, unexpected ')' in /homepages/25/xxx/htdocs/connexion/connexion.php on line 13
    Donc cela dit qu'il y a un problème de parenthèse à la ligne 13, pourtant elle ferme celle que tu as ouverte à la ligne 10 juste après le sprintf... J'ai essayé diverses solutions, en vain.

    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
    <?php
    mysql_connect("XXX", "XXX", "XXX");
    mysql_select_db("XXX");
     
    if(empty($_POST['nom']) || empty($_POST['passe'])) {
       echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       exit;
    }
     
    $sql = sprintf("SELECT nom, prenom FROM connexion WHERE nom='%' AND passe = '%s'",
        mysql_real_escape_string($_POST['nom']),
        mysql_real_escape_string(sha1($_POST['passe'])),
    );
     
    $req = mysql_query($sql);
    $data = mysql_fetch_assoc($req);
     
    if (!$data) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant à la page de <a href="/" >connexion</a>.</p>';
        exit;
    }
     
    session_start();
    $_SESSION = $data;
     
    echo "Connexion établie, ", $_SESSION['prenom'];
     
    ?>
    Qu'en penses tu ormis le fait que je soit pas très callé en la matière ?

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    désolé y'a la virgule en trop (fin de la ligne 12)

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ah je ne l'avais pas vu celle-là. Merci à toi.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Hum, la parenthèse que j'ai enlevée ne devrait pas l'être en fait car elle est avec celle juste avant le sha1, non ?

    Lorsque je l'enlève, voici l'erreur :
    Parse error: syntax error, unexpected ')' in /homepages/25/d406655023/htdocs/connexion/connexion.php on line 13
    J'ai essayer d'autre possibilités en changeant le code...

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est la virgule qui était en trop

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 03/08/2014, 00h47
  2. [MySQL] Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE
    Par Denis Placé dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2013, 10h44
  3. Réponses: 2
    Dernier message: 10/09/2011, 15h29
  4. Syntax Error / Questions
    Par kedare dans le forum Général Python
    Réponses: 15
    Dernier message: 12/09/2005, 14h05
  5. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21

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