Erreur sur else

Résolu
ludo -  
 ludo -
Bonjour,

j'ai fait ma page de connexion

voilà

<?php
session_start();
$titre="Connexion";
include("includes/identifiants.php");
include("includes/debut.php");
include("includes/menu.php");
echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
?>
<?php
echo '<h1>Connexion</h1>';
if ($id!=0) erreur(ERR_IS_CO);
?>
<?php
if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
{
	echo '<form method="post" action="connexion.php">
	<fieldset>
	<legend>Connexion</legend>
	<p>
	<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
	<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
	</p>
	</fieldset>
	<p><input type="submit" value="Connexion" /></p></form>
	<a href="./register.php">Pas encore inscrit ?</a>
	 
	</div>
	</body>
	</html>';
}
?>
<?php
//On reprend la suite du code
else
{
    $message='';
    if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
    {
        $message = '<p>une erreur s\'est produite pendant votre identification.
	Vous devez remplir tous les champs</p>
	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
    }
    else //On check le mot de passe
    {
        $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
        FROM forum_membres WHERE membre_pseudo = :pseudo');
        $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
        $query->execute();
        $data=$query->fetch();
	if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
	{
	    $_SESSION['pseudo'] = $data['membre_pseudo'];
	    $_SESSION['level'] = $data['membre_rang'];
	    $_SESSION['id'] = $data['membre_id'];
	    $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
			vous êtes maintenant connecté!</p>
			<p>Cliquez <a href="./index.php">ici</a> 
			pour revenir à la page d accueil</p>';  
	}
	else // Acces pas OK !
	{
	    $message = '<p>Une erreur s\'est produite 
	    pendant votre identification.<br /> Le mot de passe ou le pseudo 
            entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
	    pour revenir à la page précédente
	    <br /><br />Cliquez <a href="./index.php">ici</a> 
	    pour revenir à la page d accueil</p>';
	}
    $query->CloseCursor();
    }
    echo $message.'</div></body></html>';

}
?>


il me dit
Parse error: syntax error, unexpected 'else' (T_ELSE), expecting end of file in /var/www/ludo.org/users/ludo/www/V1/connexion/connexion.php on line 34

je sais que c'est else mais je ne vois pas ou est l'erreur

Configuration: Windows / Chrome 73.0.3683.103

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    - Déjà, commence par activer l'affichage des erreurs php au début de ton script

    - Evite d'ouvrir/fermer inutilement les balises PHP. Tout le code que tu nous montres tiens entre <?php et ?> sans avoir besoin de fermer puis réouvrir tes balises....

    - Essaye également d'écrire tes blocks IF/ELSE en suivant la norme PSR-2 https://www.php-fig.org/psr/psr-2/
    <?php
    if ($expr1) {
        // if body
    } elseif ($expr2) {
        // elseif body
    } else {
        // else body;
    }
    


    - Vérifie que ton fichier est bien encodé en utf8 sans bom (voir chapitre 1 de ce lien https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8 )

    Je t'invite également à lire et à appliquer le contenu de ces deux liens :
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Si le souci persiste malgré cela, reviens nous voir avec le code modifié et indique nous à quelle ligne cela correspond.
    Ce genre de message est souvent lié à un oublie de point virgule à la ligne précédente ou à une quote ou une parenthèse fermante oubliée.

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Je te signale au passage que la protection des password ne se fait plus en md5 (ni en sha1) mais qu'il est fortement conseillé, pour des raisons de sécurité, d'utiliser les fonctions passowrd_hash et password_verify
      0
    2. ludo
       
      merci, je laisse tomber
      0
    3. ludo
       
      j'ai suivie ce tuto

      https://openclassrooms.com/fr/courses/1401411-creer-son-forum-de-toutes-pieces/1401751-inscription-et-connexion

      il me dit ca

      Fatal error: Cannot redeclare erreur() (previously declared in /var/www/legtux.org/users/ludo/www/tester/forum-tester/connexion.php:14) in /var/www/legtux.org/users/ludo/www/V1/tester/includes/functions.php on line 7


      le code
      <?php
      function erreur($err='')
      {
         $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
         exit('<p>'.$mess.'</p>
         <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
      }
      ?>
      


      suite a ce changement dans ce code

      <?php
      session_start();
      $titre="Connexion";
      include("includes/identifiants.php");
      include("includes/debut.php");
      include("includes/menu.php");
      echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
      
      
      echo '<h1>Connexion</h1>';
      if ($id!=0) erreur(ERR_IS_CO);
      
      
      function erreur($err='')
      {
         $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
         exit('<p>'.$mess.'</p>
         <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
      }
      
      
      
      
      if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
      {
      	echo '<form method="post" action="connexion.php">
      	<fieldset>
      	<legend>Connexion</legend>
      	<p>
      	<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
      	<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
      	</p>
      	</fieldset>
      	<p><input type="submit" value="Connexion" /></p></form>
      	<a href="./register.php">Pas encore inscrit ?</a>
      	 
      	</div>
      	</body>
      	</html>';
      }
      
      
      
      
      //On reprend la suite du code
      else
      {
          $message='';
          if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
          {
              $message = '<p>une erreur s\'est produite pendant votre identification.
      	Vous devez remplir tous les champs</p>
      	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
          }
          else //On check le mot de passe
          {
              $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
              FROM forum_membres WHERE membre_pseudo = :pseudo');
              $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
              $query->execute();
              $data=$query->fetch();
      	if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
      	{
      	    $_SESSION['pseudo'] = $data['membre_pseudo'];
      	    $_SESSION['level'] = $data['membre_rang'];
      	    $_SESSION['id'] = $data['membre_id'];
      	    $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
      			vous êtes maintenant connecté!</p>
      			<p>Cliquez <a href="./index.php">ici</a> 
      			pour revenir à la page d accueil</p>';  
      	}
      	else // Acces pas OK !
      	{
      	    $message = '<p>Une erreur s\'est produite 
      	    pendant votre identification.<br /> Le mot de passe ou le pseudo 
                  entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
      	    pour revenir à la page précédente
      	    <br /><br />Cliquez <a href="./index.php">ici</a> 
      	    pour revenir à la page d accueil</p>';
      	}
          $query->CloseCursor();
          }
          echo $message.'</div></body></html>';
      
      }
      
      ?>


      merci
      0