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 :

Porblème avec les guillemets et la fin du fichier php


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut Porblème avec les guillemets et la fin du fichier php
    Bonjour,

    Je rencontre un problème avec les guillemets en utilisant PHP. IE m'affiche l'erreur suivante:

    Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

    Voici le code de ma deuxième fonction:

    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
    function identifier($login,$mot_de_passe)
    	{
    		global $conn;
    		global $reorient;
    		global $operation;
    		global $message_piedepage;
     
    		$sql = "SELECT id FROM user WHERE login=" .  $conn->qstr($login) .  "AND mot_de_passe=" .  $conn->qstr($mot_de_passe);
    		$issue = $conn->Execute($sql);
     
    		if ($conn->ErrorNo() != 0)
    		{
    			return ($conn->ErrorMsg());
    		}
     
    		$nbr = $issue->RowCount("user");
     
    		if (($nbr) <> null)
    		{
    			$reorient = true;
    			$operation = "saisir";
    			$_SESSION["id_user"] = $issue->fields[0];
    		}
    		else
    		{
    			$reorient = true;
    			$operation = "identifier";
    			$message_piedepage = "Votre Nom d'utilisateur et/ou votre mot de passe est incorrect !";
    		}
    		return (null);
    	}
    L'erreur se trouve sur cette ligne:
    $_SESSION["id_user"] = $issue->fields[0];

    IE m'affiche également deux erreurs équivalentes à la première (meme type d'erreur) sur cette fonction suivante:

    Le code de la dernière fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    function identifier_switch($operation)
    	{
    		global $_REQUEST;
     
    		switch ($operation)
    		{
     
    			//**********************************************************************
    			case "identifier":
     
    			// On visualise le formulaire d'iendtification
    			$issue = identification_formulaire (isset($_REQUEST["ogin"]), isset($_REQUEST["mot_de_passe"]));
     
    			if ($issue[1] != null)
    			{
    				print error($issue[1]);
    			}
    			else
    			{
    				print ($issue[0]);
    			}
    			break;
     
    			//***********************************************************************
    			case "identifier.contrl":
    				// On contrôle le couple login/mot de passe
    				$issue = identifier($_REQUEST["login"],$_REQUEST["mot_de_passe"]);
     
    				if ($issue != null)
    				{
    					print error($issue);
    				}
    				break;
     
    			//***********************************************************************
    			default:
    				print error("OPERATION".$operation." pas definie");
    		}
    	}
     
    	?>
    Les deux erreurs se suituent sur ces deux lignes suivantes:

    $issue = identification_formulaire (isset($_REQUEST["login"]), isset($_REQUEST["mot_de_passe"]));

    $issue = identifier($_REQUEST["login"],$_REQUEST["mot_de_passe"]);

    J'ai essayé de supprimer les guillemets, les trois erreurs disparaissent, cependant, je rencontre une autre erreur:

    Parse error: syntax error, unexpected $end (cette erreur est indiquée à la dernière ligne de mon fichier)

    Mon fichier contient 3 fonctions dont voici le code de ma première fonction:

    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
    <?php
    function identification_formulaire ($login, $mot_de_passe)
    	{
    		$html = <<<END
    		
    		<BR><BR><BR>
    		
    		<H1>Veuillez compl&eacute;ter les champs suivants pour vous connecter :<H1>
    		
    		<FORM METHOD="POST">
    		<TABLE class="RESULTAT">
    			<TR>
    				<TD><INPUT TYPE="hidden" NAME="operation" VALUE="identifier.contrl"></TD>
    			<TR>
    			<TR>
    				<TD>Nom d'utilisateur</TD>
    				<TD><INPUT TYPE="text" SIZE="20" NAME="login"></TD>
    			</TR>
    			<TR>
    				<TD>Mot de passe</TD>
    				<TD><INPUT TYPE="password" SIZE="20" NAME="mot_de_passe"></TD>
    			</TR>
    		
    		</TABLE>
    		<BR><BR>
    		<INPUT TYPE="submit" VALUE="Se connecter">
    		</FORM>
    		
    	END;
     
    		return (array($html, null ) ) ;
    	}
    Si quelqu'un pourrait m'aider à résoudre mon problème. Je serais reconnaissant. Merci infiniment d'avance.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    <TD>Nom d'utilisateur</TD>


    l'apostrophe de nom d'utilisateur est considérée comme un guillement
    essaie avec Nom d\utilisateur

  3. #3
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut
    J'ai suivi ce que tu m'as dis, mais j'ai toujours le meme problème.

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Je ne vois pas d'erreur du type donné dans le code que tu nous fournis.
    PHP ne donne pas obligatoirement la ligne où se situe l'erreur quand c'est une faute de frappe, un oublie de parenthèse, de guillemet ou de point-virgule.
    Regarde plus haut dans ton code ou indique nous la totalité du code donnant l'erreur.

    Sinon, à part ça dans le 1er code, je ne vois juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM user WHERE login=" .  $conn->qstr($login) .  "AND mot_de_passe=" .  $conn->qstr($mot_de_passe);
    devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM user WHERE login='" .  $conn->qstr($login) .  "' AND mot_de_passe='" .  $conn->qstr($mot_de_passe)."'";
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Ok, je n'étais pas très familier avec la syntaxe HEREDOC avec PHP

    Apparemment, il ne faut pas que la "balise" fermante soit indentée. Or, il semble que ce soit le cas dans votre code.

    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
    function identification_formulaire ($login, $mot_de_passe)
    	{
    		$html = <<<END
     
    		<BR><BR><BR>
     
    		<H1>Veuillez compl&eacute;ter les champs suivants pour vous connecter :<H1>
     
    		<FORM METHOD="POST">
    		<TABLE class="RESULTAT">
    			<TR>
    				<TD><INPUT TYPE="hidden" NAME="operation" VALUE="identifier.contrl"></TD>
    			<TR>
    			<TR>
    				<TD>Nom d'utilisateur</TD>
    				<TD><INPUT TYPE="text" SIZE="20" NAME="login"></TD>
    			</TR>
    			<TR>
    				<TD>Mot de passe</TD>
    				<TD><INPUT TYPE="password" SIZE="20" NAME="mot_de_passe"></TD>
    			</TR>
     
    		</TABLE>
    		<BR><BR>
    		<INPUT TYPE="submit" VALUE="Se connecter">
    		</FORM>
     
    END; // fin du HEREDOC dans la colonne 1 !
     
    		return (array($html, null ) ) ;
    	}
    Pouvez-vous essayer et nous donner votre retour ?
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  6. #6
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut
    J'ai changé comme tu m'as indiqué, j'ai toujours le meme problème.

    Je vous ai fourni la totalité du code (3 fonctions) et je vous ai indiqué les 3 lignes qui produisent les erreurs. Il fallait bien lire les indications que j'ai écries. Maintenant, je vais afficher la totalité du code qui est composé de 3 fonctions avec les lignes qui génèrent les erreurs:

    Première fonction: dans cette fonction, j'ai pas d'erreur

    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
    <?php
    function identification_formulaire ($login, $mot_de_passe)
    	{
    		$html = <<<END
    		
    		<BR><BR><BR>
    		
    		<H1>Veuillez compl&eacute;ter les champs suivants pour vous connecter :<H1>
    		
    		<FORM METHOD="POST">
    		<TABLE class="RESULTAT">
    			<TR>
    				<TD><INPUT TYPE="hidden" NAME="operation" VALUE="identifier.contrl"></TD>
    			<TR>
    			<TR>
    				<TD>Nom d'utilisateur</TD>
    				<TD><INPUT TYPE="text" SIZE="20" NAME="login"></TD>
    			</TR>
    			<TR>
    				<TD>Mot de passe</TD>
    				<TD><INPUT TYPE="password" SIZE="20" NAME="mot_de_passe"></TD>
    			</TR>
    		
    		</TABLE>
    		<BR><BR>
    		<INPUT TYPE="submit" VALUE="Se connecter">
    		</FORM>
    		
    	END;
     
    		return (array($html, null ) ) ;
    	}
    Deuxième fonction: une erreur

    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
    function identifier($login,$mot_de_passe)
    	{
    		global $conn;
    		global $reorient;
    		global $operation;
    		global $message_piedepage;
     
    		$sql = "SELECT id FROM user WHERE login='" .  $conn->qstr($login) .  "'AND mot_de_passe='" .  $conn->qstr($mot_de_passe)."'";
    		$issue = $conn->Execute($sql);
     
    		if ($conn->ErrorNo() != 0)
    		{
    			return ($conn->ErrorMsg());
    		}
     
    		$nbr = $issue->RowCount("user");
     
    		if (($nbr) <> null)
    		{
    			$reorient = true;
    			$operation = "saisir";
    			$_SESSION["id_user"] = $issue->fields[0];
    		}
    		else
    		{
    			$reorient = true;
    			$operation = "identifier";
    			$message_piedepage = "Votre Nom d'utilisateur et/ou votre mot de passe est incorrect !";
    		}
    		return (null);
    	}
    L'erreur se produit sur cette ligne de la deuxième fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["id_user"] = $issue->fields[0];

    Troisième fonction: deux erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    function identifier_switch($operation)
    	{
    		global $_REQUEST;
     
    		switch ($operation)
    		{
     
    			//**********************************************************************
    			case "identifier":
     
    			// On visualise le formulaire d'iendtification
    			$issue = identification_formulaire (isset($_REQUEST["login"]), isset($_REQUEST["mot_de_passe"]));
     
    			if ($issue[1] != null)
    			{
    				print error($issue[1]);
    			}
    			else
    			{
    				print ($issue[0]);
    			}
    			break;
     
    			//***********************************************************************
    			case "identifier.contrl":
    				// On contrôle le couple login/mot de passe
    				$issue = identifier($_REQUEST["login"],$_REQUEST["mot_de_passe"]);
     
    				if ($issue != null)
    				{
    					print error($issue);
    				}
    				break;
     
    			//***********************************************************************
    			default:
    				print error("OPERATION".$operation." pas definie");
    		}
    	}
     
    	?>

    Une erreur se produit sur cette ligne sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $issue = identification_formulaire (isset($_REQUEST["login"]), isset($_REQUEST["mot_de_passe"]));
    Une erreur se produit sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $issue = identifier($_REQUEST["login"],$_REQUEST["mot_de_passe"]);

  7. #7
    Membre du Club Avatar de Gobelins
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 171
    Points : 60
    Points
    60
    Par défaut
    C'est bon, je n'ai pas indenté END; et maintenant, il n' y a pas d'erreurs dans ce fichier. Merci bcp pour votre aide. Mais maintenant, je suis entrain de compiler car j'ai bcp de fichiers, il y a d'autres erreurs dans d'autres fichiers.

    Pourquoi l'interpréteur PHP n'affiche pas l'erreur sur END; ? Il affiche sur une autre ligne

  8. #8
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    PHP n'est pas compilé mais interprété.
    La différence est que le/s script/s sont lus et interprété à la volée.
    S'il manque un guillemet, un ";" ou une parenthèse, il lui arrive de s'en rendre compte à la fin quand il s'avère manquer de quelque chose pour achever l'interprétation.

    Il se réfère donc souvent, soit à la fin du document, soit aux lignes précédentes à l'erreur.

    Pour le reste, la syntaxe HEREDOC est bien particulière (comme n'importe quelle syntaxe en informatique, elle a des règles.)
    Vous pouvez voir dans le lien que j'ai donné dans mon précédent post les différentes règles.
    Elle permet de garder les tabulations, les sauts de ligne, permet d'intégrer des variables et de les parser. Elle permet aussi de prendre en compte les guillemets simples et doubles sans échappement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $var = <<<END // toujours commencer par <<< et un autre mot collé. 
    blablabla
    	hahaa
    END; // toujours finir par le même mot à la colonne 1 du fichier puis point-virgule
    Le XML a ses règles, HEREDOC aussi c'est tout
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les guillemets
    Par Gobelins dans le forum Langage
    Réponses: 1
    Dernier message: 29/03/2011, 00h15
  2. Problème avec les guillemets français
    Par patatik dans le forum Mise en forme
    Réponses: 5
    Dernier message: 22/08/2007, 16h49
  3. Problème avec les guillemets
    Par domux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2007, 13h26
  4. [SQL] problème avec les guillemets et rawurldecode
    Par xenos dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/02/2007, 13h34
  5. Probleme avec les accents a partir d'un fichier
    Par doudoustephane dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2006, 16h26

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