Formaulaire de login PHP + Session

Résolu
Bonjour, j'ai un soucis avec un formulaire de login PHP.
Voici le code (je l'est trouvé à l'adresse suivante : http://www.phpdebutant.org/article47.php

Fichier HTML :

<form action="login.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="password"name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form> 


Fichier PHP :

<?
$serveur = "localhost";
$nom_base = "utilisateur";
$login = "root"; 
$pwd =""; 

mysql_connect ($serveur,$login,$pwd) or die ("ERREUR " . mysql_error());
mysql_select_db ($nom_base) or die ("ERREUR " . mysql_error());

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) 
{
  extract($_POST);
  $sql = "SELECT pwd FROM tbl_user where login=\"$login\";";
  echo $sql;
  $req = mysql_query($sql) or die("Erreur SQL !<br>" . $sql . "<br>" . mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['pwd'] != $pass) 
  {
    echo "<p>Mauvais login / password. Merci de recommencer</p>";
    include('login.html'); 
    exit;
  }
  else 
  {
    session_start();
    $_SESSION['login'] = $login;
    echo "Vous etes bien logué";
  }   
}
else 
{
  echo "<p>Vous avez oublié de remplir un champ.</p>";
   include('login.html'); // On inclut le formulaire d'identification
   exit;
}
?>


ça m'a l'air d'être un truc bateau comme tout ... mais pourtant lorsque j'essais de me logger il m'affiche :

" . $sql . "
" . mysql_error()); $data = mysql_fetch_assoc($req); if($data['pwd'] != $pass) { echo "

Mauvais login / password. Merci de recommencer
"; include('login.html'); // On inclut le formulaire d'identification exit; } else { session_start(); $_SESSION['login'] = $login; echo "Vous etes bien logué"; // ici vous pouvez afficher un lien pour renvoyer // vers la page d'accueil de votre espace membres } } else { echo "

Vous avez oublié de remplir un champ.
"; include('login.html'); // On inclut le formulaire d'identification exit; } ?>


Quelqu'un aurai-t-il une idée ? C'est vraiment bizarre, je ne vois pas ou est l'erreur !

5 réponses

  1. Ben je pensais aussi, mais si tu regardes bien le fichier php.ini il y a une option short_open_tag qui est par défaut a OFF. Cependant si tu la mets a ON il ne veut plus de <? et préfère largement <?php ;-)

    C'était une erreur à la con genre oublis de ";" !! C'est assez énervant ces erreurs !
    1. j'avais pas lu jusqu'au bout ^^ dans la dernière bouture de PHP la variable en question est par défaut à on ^^ plus à off... si tu mets short_open_tag à on tu autorise l'ouverture du code php par un short tag, <? ^^ short_open_tag=off t'oblige à utiliser la version longue ^^, <?php

      voilà ceci pour éclaircir un point, que tu a soulever car dans ton poste tu semblais dire que short_open_tag=on empêchait l'ouverture par le short tag ;)
  2. [quote]L'erreur est au début du code PHP.
    Il ne faut pas oublier de mettre <?php au lieu de <?

    Voila...
    [/quote]

    Mais lol... quand on connait pas on dit rien !!

    <? et <?php c'est interprété exactement de la même façon !!, l'erreur ne vient pas du tout de là!
    1. ta réflexion vaut pour toi aussi ...

      tout dépends de la configuration de ton serveur php plus particulièrement de la variable "short_open_tag" dans ton php.ini bien qu'étant par défaut sur on, tu peux pour des raison de plus grande compatibilité la mettre sur off personnellement je la désactive ;)
  3. IL Y A UNE ERREUR DE SYNTAXE QUI S'EST GLISSE DANS TON SCRIPT AU LIEU DE: or die("Erreur MySQL :".mysql_error()); TU AS PLUSTOT : or die("Erreur SQL !<br>" . $sql . "<br>" . mysql_error());
    1. L'erreur est au début du code PHP.
      Il ne faut pas oublier de mettre <?php au lieu de <?

      Voila...