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 :

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';'


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';'
    Salut,

    Voici le code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<script language="JavaScript">alert("le mot de passe de '$_POST['identifiant']', est incorrect");document.location.href = "formulaire.html";</script>';

    L'erreur est dans le titre.

    Le problème est que j'ai un enchevêtrement de ' et de ". Ca ne marche pas.

    Avez-vous des astuces ?

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonsoir,

    Ne serait-ce pas simplement une erreur de syntaxe PHP dans la concaténation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' . $_POST['identifiant'] . '
    En tout cas, dans la balise script vous ne devez pas mettre :

    Mais bien :


  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Salut,

    tu aurais dû poster dans la section PHP.

    Ton problème est essentiellement un problème d’organisation. Normalement, tu n’as pas besoin de générer du JavaScript avec PHP. De plus, renvoyer directement des variables $_POST ou $_GET sans les nettoyer est une potentielle faille de sécurité, bien connue d’ailleurs.

    Dans ton cas précis, tu devrais déjà proposer un site entièrement fonctionnel sans l’aide de Javascript, puis inclure des scripts dans des fichiers externes, qui améliorent le fonctionnement du site. C’est un principe connu sous le nom d’amélioration progressive, et ça te permet également de faire du JavaScript non intrusif.

    Séparer les différentes couches d’application est le meilleur moyen d’éviter les enchevêtrements de ce genre
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut compréhension du script
    Finalement sous cette forme ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script type='text/javascript'>alert('".$_POST['identifiant'].", vous n\'êtes pas membre de Hitman Legend \nVeuillez vous inscrire pour accèder à la suite.');document.location.href = 'formulaire.html';</script>";
    Mais si je met $id à la place de $_POST['identifiant'] (bien sur $id a été affecté), il ne veut rien savoir et me dit que cette variable n'a pas été défini.

    Pourquoi ne puis je pas mettre $id à la place de $_POST['identifiant'] ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Voici un bout de code, j'ai pris au mieux pour voir l'ensemble qui est lié.
    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
    try
    				{
    					// On se connecte à MySQL
    					$bdd = new PDO('mysql:host=localhost;dbname=comptesHitman', 'root', '');
    				}
    				catch(Exception $e)
    				{
    					// En cas d'erreur, on affiche un message et on arrête tout
    					die('Erreur : '.$e->getMessage());
    				}
    				$id=$_POST["identifiant"];
    				$mdp=$_POST["mot_de_passe"];
    				$requete = $bdd->query("INSERT INTO `comptes` VALUES('$id','$mdp')");
     
    				//les informations saisies en plus dans le formulaire
    				if ($_POST['civilite']!=="")
    				{
    					$requete1 = $bdd->query("UPDATE `comptes` SET `civilité`='$_POST['civilite']' WHERE identifiant='$id'");
    				}
    Le problème est:
    "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\Hitman Legend\inscription.php on line 25"

    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete1 = $bdd->query("UPDATE `comptes` SET `civilité`='$_POST['civilite']' WHERE identifiant='$id'");

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    PHP fournit des tas de manières pour écrire le code tout en préservant la lisbilité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        echo 
    <<<HTML
    <script type="text/javascript">alert("{$_POST['identifiant']}, vous n'êtes pas membre de Hitman Legend\nVeuillez vous inscrire pour accèder à la suite.");document.location.href="formulaire.html";</script>
    HTML;
    Et dans ta chaine de mise à jour, vu que tu ne concatènes pas, il faut mettre des accolades aux variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete1 = $bdd->query("UPDATE `comptes` SET `civilité`='{$_POST['civilite']}' WHERE identifiant = '$id'");
    Un peu de lecture ici sur l'écriture du code en PHP

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    J'ai ajouté les accolades..Merci il comprend mieux le code et cela fonctionne.

    Mais quand on s'inscrit et que l'on rempli tout les champs il n'y a que identifiant(la clé primaire) le mot de passe, la civilité et l'age qui fonctionne sachant que age et civilité sont dans des balises select!

    pourquoi les autres champs ne fonctionne pas ?

    exp dans Page_Inscription.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <br><input type="text" name="nom" size="40" maxlength="256">
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?php
    	if ($_POST['identifiant']!=="")
    	{	
    		if ($_POST['mot_de_passe']!=="")
    		{				
    			if ($_POST['mot_de_passe']==$_POST['mot_de_passeRE'])
    			{
    				try
    				{
    					// On se connecte à MySQL
    					$bdd = new PDO('mysql:host=localhost;dbname=comptesHitman', 'root', '');
    				}
    				catch(Exception $e)
    				{
    					// En cas d'erreur, on affiche un message et on arrête tout
    					die('Erreur : '.$e->getMessage());
    				}
    				$id=$_POST["identifiant"];
    				$mdp=$_POST["mot_de_passe"];
    				$requete = $bdd->query("INSERT INTO `comptes`(`identifiant`, `mot de passe`) VALUES('{$id}','{$mdp}')");
     
    				//les informations saisies en plus dans le formulaire
    				if (isset($_POST['civilite'])!==FALSE)
    				{
    					$civ=$_POST['civilite'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `civilité`='{$civ}' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['nom'])!==FALSE)
    				{
    					$nom=$_POST['nom'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `nom`='{$nom}' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['prenom'])!==FALSE)
    				{
    					$prenom=$_POST['prenom'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `prenom`='{$prenom}' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['age'])!==FALSE)
    				{
    					$age=$_POST['age'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `age`='{$age}' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['adresse'])!==FALSE)
    				{
    					$adresse=$_POST['adresse'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `adresse`='{$adresse} ' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['ville'])!==FALSE)
    				{
    					$ville=$_POST['ville'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `ville`='{$ville} ' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['departement'])!==FALSE)
    				{
    					$departement=$_POST['departement'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `departement`='{$departement} ' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['pays'])!==FALSE)
    				{
    					$pays=$_POST['pays'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `pays`='{$pays} ' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['code postal'])!==FALSE)
    				{
    					$codePostal=$_POST['code postal'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `codePostal`='{$codePostal} ' WHERE identifiant='{$id}'");
    				}
    				if (isset($_POST['telephone'])!==FALSE)
    				{
    					$telephone=$_POST['telephone'];
    					$requete1 = $bdd->query("UPDATE `comptes` SET `telephone`='{$telephone} ' WHERE identifiant='{$id}'");
    				}
    				if ((isset($_POST['email'])!==FALSE)&(isset($_POST['conformationEmail'])!==FALSE))
    				{
    					if ($_POST['email']==$_POST['conformationEmail'])
    					{
    						$email=$_POST['email'];
    						$requete1 = $bdd->query("UPDATE `comptes` SET `email`='{$email} ' WHERE identifiant='{$id}'");
    					}
    				}
    				$bdd = null;
    				//header("Location:formulaire.html");
    			}
    			else
    			{
    				echo "<script type='text/javascript'>alert('le mot de passe n'est pas identique à la confirmation!\nVeuillez resaisir!');document.location.href = 'Page_Inscription.html'</script>";
    			}
    		}
    		else
    		{
    			echo "<script type='text/javascript'>alert('Entrer un mot de passe!');document.location.href = 'Page_Inscription.html'</script>";
    		}
    	}
    	else
    	{	
    		echo "<script type='text/javascript'>alert('Entrer un identifiant dans le champs correspondant');document.location.href = 'Page_Inscription.html'</script>";
    	}
    ?>

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    il va falloir bouquiner un peu parce que là comme t'es parti t'es pas sorti de l'auberge :
    Tu ne le sais peut-être pas mais tu peux mettre à jour plusieurs champs en même temps, si , si je t'assure regarde la syntaxe ici

    Ensuite, utiliser PDO avec ton code ne sert strictement à rien, tu ne fais pas appel au mécanisme d'échappement des données fourni avec PDO. Lis surtout PDO::prepare() et tous les liens connexes.

    Bref, reprends ton code pas à pas en t'inspirant des exemples et après ça devrait être acquis, tu n'auras plus besoin d'y revenir.

    Bon courage jeune padawan

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Ca fait un moment que je suis pas revenu mais je peux dire que ça marche parfaitement maintenant.

    Merci pour les méthodes rawsrc.
    Merci Watilin pour des informations qu'on apprend pas à l'école.
    et merci vermine pour ta lucidité.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/06/2015, 13h08
  2. Réponses: 1
    Dernier message: 20/10/2013, 22h18
  3. Réponses: 2
    Dernier message: 10/09/2011, 15h29
  4. Parse error: syntax error, unexpected T_VARIABLE ?
    Par blanchonvincent dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2007, 08h17
  5. Réponses: 2
    Dernier message: 26/06/2007, 23h49

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