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. #21
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Dans ta condition where, il manque pas quelque chose dans le nom='$' ? Je connais ps trop cette syntaxe avec le sprintf, mais si c'est comme pour le passe il te manque le 's'.

    Sur la ligne 25, pour concaténer ta session, c'est un point et pas une virgule.

    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
     
    <?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='%s' 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'];
     
    ?>
    edit : Le session_start() doit se trouver sur ta première ligne en haut normalement
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  2. #22
    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 bob633 Voir le message
    Sur la ligne 25, pour concaténer ta session, c'est un point et pas une virgule.
    c'est bien, une virgule
    c'est mieux de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'toto', 'titi', 'tata';
    // que
    echo 'toto' . 'titi' . 'tata';

    Citation Envoyé par bob633 Voir le message
    edit : Le session_start() doit se trouver sur ta première ligne en haut normalement
    pas besoin si y'a aucune sortie

  3. #23
    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
    Au temps pour moi.

    Ca marche beaucoup mieux merci !

    Par contre, je ne vois pas d'erreur pour la BDD, mais apres avoir tenté de me connecter l'erreur suivante apparait :
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /homepages/25/d406655023/htdocs/connexion/connexion.php on line 16

    Si on met le $req entre guillemet ou parenthèse, c'est valable ?

  4. #24
    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
    sans doute que la requete est fausse, il faut active le trace_mode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);
    oublie pas de mettre aussi le mysql_set_charset

  5. #25
    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
    C'est bon j'ai trouvé la source de cette erreur.

  6. #26
    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 touche au but grace à vous, merci !

    Cependant je me pose la question si je doit, pour pouvoir utiliser les info contenues dans recopier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    $_SESSION = $data;
    dans un fichier, et le mettre en include sur les pages du site ?

    Voici le code de connexion, corrigé et fonctionnel dans le cas ou ça puisse servir à quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?
    // Connexion MYSQL
    mysql_connect("adresse_BDD", "login", "password");
    mysql_select_db("BDD");
     
    // Si validation sans identifiant
    if(empty($_POST['nom']) || empty($_POST['passe'])) {
       echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="../inscription.php" >ICI</a></p>';
       exit;
    }
    // Requete : Nom et prénom dans la table connexion
    $sql = sprintf("SELECT nom, prenom FROM connexion WHERE nom='%s' 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);
     
    // Si identifiants éronés
    if (!$data) {
        echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant à la page de <a href="/" >connexion</a>.</p>';
        exit;
    }
     
    // Ouverture de session avec les info de $data dedans prénom & nom
    session_start();
    $_SESSION = $data;
     
    // Message affiché lorsque la connexion est faite
    echo "Connexion &eacutetablie, ", $_SESSION['prenom'];
     
    // Aller vers la page d'accueil
    echo '</br></br><p><div style="text-align:center;"><a href="../accueil.php"> <img src="../images/entrer.gif" /> </a></div></p>';
     
    // Deconnexion de MYSQL
    mysql_close(); 
    ?>

    Et je remarque aussi que depuis que l'on a changé la connexion, le reste du site affiche les caractères censés avoir des accents en hieroglyphes. Exemple : Présentation.

    Je ne vais pas devoir réécrire des $eacute $ecirc etc sur tout le site ?

  7. #27
    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 stealth35 Voir le message
    oublie pas de mettre aussi le mysql_set_charset
    et c'est <?php pas <?
    pour le reste il bien suivre la chaine d'encodage tout en utf-8

  8. #28
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8');
    en dessous de la connexion à la BDD ?

    J'était en UTF-8 sans BOM car justement j'avais des problèmes d'accents lorsque j'ai commencé le site, et j'ai du mettre sans BOM. Maintenent je doit remettre en UTF-8. Comment ça se fait que cela change comme ça ?

  9. #29
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8');
    en dessous de la connexion à la BDD ?

    J'était en UTF-8 sans BOM car justement j'avais des problèmes d'accents lorsque j'ai commencé le site, et j'ai du mettre sans BOM. Maintenent je doit remettre en UTF-8. Comment ça se fait que cela change comme ça ?
    oui sous la connexion

    pour le reste il faut verifier quel es table soi en utf-8, que ton fichier aussi, et que ton serveur renvoie bien de l'utf-8

  10. #30
    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
    Oui la table est en UTF-8, et le serveur renvois la même chose.
    Parfait !

    Je ne sais pas si vous avez vu plus haut, mais j'aimerais que les données contenues dans le $data de la session soit transmises sur toutes les pages du site. Car sur la page de chat, je voudrais que le prenom se mette automatiquement sans qu'il ai à le mettre. C'est pour eviter les messages anonymes

    Je doit mettre quoi dans l'include présent sur toutes mes pages ?
    J'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php function session() {
    	session_start();
    	$_SESSION = $data;
    	if(!isset($_SESSION['$data']))
    		{
    		echo 'Vous n\'&ecirctes pas connect&eacute au site. Vous ne pouvez donc pas acceder &agrave cette page. 
    		Il faut vous <a href="../index.php" >identifier</a>.';
    		exit;
    	}
    	}
    ?>
    Mais ça ne fonctionne pas et ça me renvois à la connection.

  11. #31
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Points : 248
    Points
    248
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php 
    function session() {
    	session_start();
    	if(!isset($_SESSION['nom'])) {
    		echo 'Vous n\'&ecirctes pas connect&eacute au site. Vous ne pouvez donc pas acceder &agrave cette page. 
    		Il faut vous <a href="../index.php" >identifier</a>.';
    		exit;
    	}
    }
    ?>
    Tu ne re-rempli pas $_SESSION à chaque page il est rempli par ta fonction de check de connexion

    $_SESSION ne contient pas d'indice '$data' par contre comme tu y a affecté $data qui contenait des indices 'nom' et 'prénom' teste sur l'existence (et la validité) d'une de ces deux valeurs

  12. #32
    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
    Bonjour à vous, je n'ai plus du tout d'erreurs désormais.

    Cependant je n'arrive toujours pas à ce que l'utilisateur n'ai pas le choix et que sont nom se mette en auto dans le chat.

    Voici le formulaire suivis du codage servant à entrer les info dans la bdd.

    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
    <form action="minichat_post.php" method="post">
     
            <p>
            <label for="message">Message</label> :  
    <br />
    		<textarea name="message" rows="8" cols="45">
    <?php
    // On récupère les informations de date dans des variables
    $jour = date('d');
    $mois = date('m');
    $annee = date('Y');
    $heure = date('H');
    $minute = date('i');
    // Et on les affiche
    echo 'Le ' . $jour . '/' . $mois . '/' . $annee . ' à ' . $heure. ' h ' . $minute. ', '; ?>
    </textarea>
     
    		<br />
            <input type="submit" value="Envoyer" />	<input type="submit" value="Actualiser">
    		</p>
        </form>

    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
    <?php
    include("connexion/verification.php");?>
    <?php
    // Connexion BDD
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=xxx.db.xxx.com;dbname=xxx', xxx, xxx, $pdo_options);
     
    	// Insertion du message
        $req = $bdd->prepare('INSERT INTO minichat (prenom, message) VALUES("'.$_SESSION['prenom'].'", ?)');
        $req->execute(array($_POST['message']));
     
    	// Redirection vers la page du chat
        header('Location: comm.php');
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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