Parse error: syntax error, unexpected T_VARIABLE

Bonjour,

bonjour tout le monde pour information je suis encore debutant en php , dans mon code pour la modification du mot de passe ca bloque sur l'erreur suivante : Parse error: syntax error, unexpected T_VARIABLE on line 21
voila le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Changer le mot de passe</title>
</head>
<body>
<form method="post" action="">
<label>Mot de passe actuel : <input type="password" name="amdp" ></label><br></br>
<label>Nouveau mot de passe : <input type="password" name="nmdp" ></label><br></br>
<label>Verification mot de passe : <input type="password" name="vmdp" ></label><br></br>
<input type="submit" name="submit" value=" Envoyer ">
</form>
<?php
include("connexion.php");

$result=false;
if(isset($_POST['submit']))
?> { <?php

$amdp=$_POST['amdp'];
$nmdp=$_POST['nmdp'];
$vmdp=$_POST['vmdp'];
$login=$_SESSION['Etud_mat'];
if (($amdp!='')&&($nmdp!='')&&($vmdp!='')) {
if ($amdp==$_SESSION['password']){
if($nmdp==$vmdp){
$sql="UPDATE etudiant SET psw='$nmdp' WHERE Etud_mat='$login'";
$result=mysql_query($sql);
echo 'Modification du mot de passe effectuee avec succes';
$_SESSION['password']=$nmdp;
} else {
echo 'Erreur entre le nouveau mot de passe entré et la verification';
}
} else {
echo 'Le mot de passe actuel n\'est pas valide';
}
} else {
echo 'Veuillez remplir tous les champs';
}
}
else {
echo 'Page de modification de mot de passe - special VIP';
}

?>
</body>
</html>

merci d'avance pour votre aide !!

12 réponses

  1. Bonsoir,

    Normalement une erreur relevée par PHP comporte un numéro de ligne précédée du nom de fichier dans laquelle se trouve l'erreur: Parse error: syntax error, unexpected T_VARIABLE......
    A toi de jouer...
    Cordialement.
    1. ouii effectivement ReDLog , mais j'arrive pas a detecter le type de cette erreur , tout en sachant que j'ai bien decortiqué le code mais en vain
      1. Salut, je vois un truc bizzare :

        <?php
        include("connexion.php");
        
        $result=false;
        if(isset($_POST['submit']))
        ?>/*pouquoi fermer*/ { <?php // pour réouvrir ???
        
        $amdp=$_POST['amdp']; 
        


        ensuite c'est autre mais tu es injectable ....

        http://fr.openclassrooms.com/informatique/cours/eviter-les-injections-sql

        bonne journée
        ׺°"~'"°º×]|I{*------» LÖBÖTÖ «------*}I|[׺°"~'"°º×
        1. merciii lobotoFix !
          mais apres l'avoir corrigé il me lance :
          Parse error: syntax error, unexpected '{' in C:\wamp\www\TPE\changerMP.php on line 19
          j'arrive pas a detecter l'accolade manquante !
          1. Salut, à vu de nez (je peux me tromper)

            echo 'Erreur entre le nouveau mot de passe entré et la verification';
            }//p'etre là
            } else {
            echo 'Le mot de passe actuel n\'est pas valide';
            }// pt'etre là aaussi
            } else {
            echo 'Veuillez remplir tous les champs';
            }
            }  


            ׺°"~'"°º×]|I{*------» LÖBÖTÖ «------*}I|[׺°"~'"°º×
            1. merci pour la precision , mais celles que vs vennez de mettre en gras ferment d'autres accoalde en haut du if , je vois pas comment je vais les eliminer
              1. ha ouai tu as raison...je regarde dans la soirée
              2. mercii infiniment lobotoFix !!
            2. Salut,

              remet voir ton code modifier et celui de connexion.php (sans les identifiants)
              1. dac le voila :)

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                <html>
                <head>
                <title>Changer le mot de passe</title>
                </head>
                <body>
                <form method="post" action="">
                <label>Mot de passe actuel : <input type="password" name="amdp" ></label><br></br>
                <label>Nouveau mot de passe : <input type="password" name="nmdp" ></label><br></br>
                <label>Verification mot de passe : <input type="password" name="vmdp" ></label><br></br>
                <input type="submit" name="submit" value=" Envoyer ">
                </form>
                <?php
                include("connexion.php");

                $result=false;

                $amdp=$_POST['amdp'];
                $nmdp=$_POST['nmdp'];
                $vmdp=$_POST['vmdp'];
                $login=$_SESSION['Etud_mat'];
                if(isset($_POST['submit']))
                {

                if (($amdp!='') and ($nmdp!='')and ($vmdp!='')) {
                if ($amdp==$_SESSION['password']){
                if($nmdp==$vmdp){
                $sql="UPDATE etudiant SET psw='$nmdp' WHERE Etud_mat='$login'";
                $result=mysql_query($sql);
                echo 'Modification du mot de passe effectuee avec succes';
                $_SESSION['password']=$nmdp;
                } else {
                echo 'Erreur entre le nouveau mot de passe entré et la verification';
                }
                } else {
                echo 'Le mot de passe actuel n\'est pas valide';
                }
                }
                else { echo 'Veuillez remplir tous les champs';}
                }
                else {
                echo 'Page de modification de mot de passe - special VIP';
                }

                ?>
                </body>
                </html>

                et voila pour la connexion :

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
                <head>
                <?php
                try
                {
                $bdd = new PDO('mysql:host=localhost;dbname=tpe_bd', 'root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                }catch(Exception $e)
                {
                die('Erreur : '.$e->getMessage());
                }
                ?>
                </head>
                </html>
                1. Ton fichier connexion.php NE doit PAS contenir de code HTML, seulement du code PHP :
                  <?php
                  try {
                  	$bdd = new PDO('mysql:host=localhost;dbname=tpe_bd', 'root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                  } catch(Exception $e) {
                  	die('Erreur : '.$e->getMessage());
                  }
                  ?>

                  C'est ce qui fait buguer ton code au niveau des accolades lorsque tu inclus le fichier connexion.php dans le script de traitement.
                  Cordialement
                2. avec votre modification ReDLoG , je me suis retrouvé avec une autre erreur de type T_STRING

                  Parse error: syntax error, unexpected T_STRING in C:\wamp\www\TPE\changerMP.php on line 22

                  la ligne 22 c exactement ça : if(isset($_POST['submit']))

                  cordialement
              2. salut, ReDLoG a raison il ne faut pas de HTML.
                Ensuite, je pense que tu aura une erreur plus tard. En effet, tu utilise des sessions.

                En haut de chaque fichier avant tout code, tu dois les déclarées.

                <?php session_start();  ?>
                //puis tu met ta page normalement
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                /*
                 * bla bla bla
                 */
                


                Ensuite une fois ton code fonctionnel il faudra impérativeement que tu hash tout tes mots de passes et que tu corrige les risques d'injections. Je vois que pour te connecter tu utilise PDO. PDO cela permet de faire des requêtes préparées, pourquoi ne pas les utilisées...
                ׺°"~'"°º×]|I{*------» LÖBÖTÖ «------*}I|[׺°"~'"°º×
                1. salut, je viens de tester !

                  alors si tu remet comme avant ceci :

                  $amdp=$_POST['amdp'];
                  $nmdp=$_POST['nmdp'];
                  $vmdp=$_POST['vmdp'];
                  $login=$_SESSION['Etud_mat'];
                  if(isset($_POST['submit']))
                  { 
                  
                  // en
                  
                  
                  if(isset($_POST['submit'])) { 
                  $amdp=$_POST['amdp'];
                  $nmdp=$_POST['nmdp'];
                  $vmdp=$_POST['vmdp'];
                  $login=$_SESSION['Etud_mat'];
                  
                  


                  que tu enleve le code html de connexion.php

                  que tu démarre tes sessions en début de fichier et que tes sessions existe il n'y aura pas d'erreur de type php. Ensuite sql je sais pas...
                  1. merci bcp lobotoFix et ReDLoG pour votre aide , c'est toujours le meme probleme qui persiste , unexpected T_STRING ...
                    en tous cas merci encore une fois
                    1. Modérateur
                      johand@osiris: ~ $ cat parse_error.php
                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                      <html>
                      <head>
                      <title>Changer le mot de passe</title>
                      </head>
                      <body>
                      <form method="post" action="">
                      <label>Mot de passe actuel : <input type="password" name="amdp" ></label><br></br>
                      <label>Nouveau mot de passe : <input type="password" name="nmdp" ></label><br></br>
                      <label>Verification mot de passe : <input type="password" name="vmdp" ></label><br></br>
                      <input type="submit" name="submit" value=" Envoyer ">
                      </form>
                      <?php
                      include("connexion.php");

                      $result=false;
                      if(isset($_POST['submit']))
                      {

                      $amdp=$_POST['amdp'];
                      $nmdp=$_POST['nmdp'];
                      $vmdp=$_POST['vmdp'];
                      $login=$_SESSION['Etud_mat'];
                      if (($amdp!='')&&($nmdp!='')&&($vmdp!='')) {
                      if ($amdp==$_SESSION['password']){
                      if($nmdp==$vmdp){
                      $sql="UPDATE etudiant SET psw='$nmdp' WHERE Etud_mat='$login'";
                      $result=mysql_query($sql);
                      echo 'Modification du mot de passe effectuee avec succes';
                      $_SESSION['password']=$nmdp;
                      } else {
                      echo 'Erreur entre le nouveau mot de passe entré et la verification';
                      }
                      } else {
                      echo 'Le mot de passe actuel n\'est pas valide';
                      }
                      } else {
                      echo 'Veuillez remplir tous les champs';
                      }
                      }
                      else {
                      echo 'Page de modification de mot de passe - special VIP';
                      }

                      ?>
                      </body>
                      </html>
                      johand@osiris: ~ $ php -l parse_error.php
                      No syntax errors detected in parse_error.php

                      Ceci ne présage en rien du fonctionnemen correct du code !