Session_start erreur non trouvée

bruno3591 Messages postés 159 Statut Membre -  
 toto -
Bonjour,

Je ne trouve pas d'ou vient mon erreur dans cette page d'authentification. j'ai une table mysql simple à 3 champs, id, utilisateur, mdp.
quand je saisis le bon utilisateur et le bon mot de passe je ne suis redirigé vers la page d'accueil de mon site index.html qui se trouve dans le même répertoire.
Quand je tape un mauvais mote de passe je suis bien redirigé vers la page d'authentification.php.
Je n'ai aucun message d'erreur.
Merci de votre aide.

<?php

if($_POST["utilisateur"] != "" && $_POST["mdp"] != "")
{
$login = $_POST["utilisateur"] ;
$pass = md5($_POST["mdp"]) ;

$cnx = mysql_connect('localhost', 'root', '') ;
$db = mysql_select_db('gestion_conges') ;

$sql = "SELECT * FROM users WHERE utilisateur = '".$login."' AND mdp = '".$pass."'" ;

$requete = @mysql_query($sql, $cnx) or die($sql."<br>".mysql_error()) ;

$result = mysql_fetch_object($requete) ;
//si la requête s'est bien passée
if(is_object($result))
{
//début session
session_start() ;
//enregistrement variable de session
$_SESSION["utilisateur"] = $login ;

header("Location index.html") ;
}
//sinon on retourne à la page d'identification
else
{
header("Location authentification.php") ;
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Base des congés</title>
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="style.css" />

<title>Formulaire d'authentification</title>

</head>

<body>
<br><br><br><br>
<div id="titre">
Base des congés
</div>
<br><br><br><br>

<div id="authenti">
<hr color=#C0C0C0></hr>
Identifiez-vous
<hr color=#C0C0C0></hr>
</div>
<br><br><br><br><br><br>
<form method="post" action="">

<TABLE BORDER="0" align=center>
<TR>
<TH ALIGN="left">Utilisateur :</TH>
<TD><input type="text" name="utilisateur" value=""></TD>
</TR>
<TR></TR>
<TR></TR>
<TR>
<TH>Mot de passe :</TH>
<TD><input type="password" name="mdp" value=""></TD>
</TR>
<TR></TR><TR></TR><TR></TR><TR></TR>
<TR>
<TH ALIGN=left><input type="reset" name="reset" value="Effacer"></TH>
<TH ALIGN=center><input type="submit" name="connection" value=" Connection "></TH>
</TR>
</TABLE>

</form>
</body>
</html>
Configuration: Windows Vista
Internet Explorer 7.0

7 réponses

  1. toto
     
    Bonjour

    Tu as oulié un : après location :
    ("Location: index.html")

    Le ("Location authentification.php") ne marche sûrement pas non plus, mais comme il s'agit du formulaire lui-même, il est inutile et tout te semble normal.
    0
  2. toto
     
    bonjour

    <ital>je séche sur le pourquoi<ital>
    Tu ne comprend pas pourquoi ta variable n'est pas définie ? Mais pourquoi le serait-elle ?
    $_POST['utilisateur'] ne sera défini que quand tu appelleras ta page à partir de ton formulaire, car il utilise la méthode POST et a un champ qui s'appelle utilisateur. Mais lors du premier appel au formulaire, elle n'est pas encore définie.

    Il suffit de tester if (isset(_$_POST["utilisateur"])) pour savoir s'il s'agit d'un premier appel, et sauter directement au formulaire, ou bien s'il faut vraiment traiter les données reçues
    0
  3. toto
     
    A mon avis, c'est une mauvaise idée de séparer en deux fichiers. Mais passons.
    Quel message d'erreur as-tu quand tu tapes le bon mot de passe ? A vue de nezl, ton script ne fait rien du tout en cas de bon mot de passe.
    0
  4. toto
     
    il ne me semble pas qu'il y avait des ' en trop, au contraire.
    Une fois encore, j'ai l'impression que les apostrophes se jouent à pile ou face. Non, ils suivent des règles, qui relèvent du simple bon sens d'ailleurs. Regarde ton manuel mysql.

    D'après ton message d'erreur, ton mysql_query doit rencontrer un problème. Quelle est la ligne 22 ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bruno3591 Messages postés 159 Statut Membre 16
     
    Bonjour,

    Merci pour ta réponse toto, mais j'ai toujours le même problème : aucune redirection vers la page index.html une fois l'identification effectuée. Maintenant j'ai une erreur ligne 3 : if($_POST["utilisateur"] != "" && $_POST["mdp"] != "")

    Notice: Undefined index: utilisateur in C:\Program Files\EasyPHP 2.0b1\www\authentification.php on line 3

    Je comprend que pour php les variables ne sont pas définies mais je séche sur le pourquoi. Si quelqu'un passe par là...merci.

    Je précise que je suis en plein apprentissage du php mysql, c'est ma 1er appli avec session, mais ça vous vous étes aperçu :)
    -1
  7. bruno3591 Messages postés 159 Statut Membre 16
     
    J'ai refait complétement le code. Maintenant il y a 2 pages : le formulaire d'authentification qui pointe vers verif_authen.php.

    Si je tape un mauvais mdp j'ai bien le message d'erreur par contre si je tape le bon mdp j'ai des erreurs.

    -----------------------------------------------------------
    authentification.php

    -----------------------------------------------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <head>
    <title>Base des congés</title>
    <meta http-equiv="Content-Language" content="fr" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link type="text/css" rel="stylesheet" href="style.css" />

    <title>Formulaire d'authentification</title>

    </head>

    <body>
    <br><br><br><br>
    <div id="titre">
    Base des congés
    </div>
    <br><br><br><br>

    <div id="authenti">
    <hr color=#C0C0C0></hr>
    Identifiez-vous
    <hr color=#C0C0C0></hr>
    </div>
    <br><br><br><br><br><br>
    <form method="post" action="verif_authen.php">

    <TABLE BORDER="0" align=center>
    <TR>
    <TH ALIGN="left">Utilisateur :</TH>
    <TD><input type="text" name="utilisateur" value=""></TD>
    </TR>
    <TR></TR>
    <TR></TR>
    <TR>
    <TH>Mot de passe :</TH>
    <TD><input type="password" name="mdp" value=""></TD>
    </TR>
    <TR></TR><TR></TR><TR></TR><TR></TR>
    <TR>
    <TH ALIGN=left><input type="reset" name="reset" value="Effacer"></TH>
    <TH ALIGN=center><input type="submit" name="connection" value=" Connection "></TH>
    </TR>
    </TABLE>

    </form>
    </body>
    </html>

    ----------------------------------------------
    verif_authen.php
    ----------------------------------------------

    <?php

    if ( isset ($_POST['utilisateur']) || isset ($_POST['mdp']) )
    {
    // formulaire recu

    if (empty($_POST['utilisateur']))
    {
    die ("ERREUR: Entrez un nom d'utilisateur!");
    }

    if (empty($_POST['mdp']))
    {
    die ("ERREUR: Veuillez entrer un mot de passe!");
    }
    mysql_connect('localhost', 'root', '');
    mysql_select_db('gestion_conges');
    //requête vers la table users
    $query = "SELECT utilisateur, mdp FROM users WHERE utilisateur = '".$_POST['utilisateur']."' AND mdp = '" . $_POST['mdp']."' ";

    // Execute la requete
    $result = mysql_query($query);
    $data = (mysql_fetch_array($result) );
    // Regarde les valeurs retournees par la base
    if (mysql_num_rows($result) == 1)
    {
    header ('Location: index.php');

    // si une ligne est retournee,
    // l'authentification est bonne

    session_start();
    $_SESSION['utilisateur'] = $data['utilisateur'];

    }
    else
    {
    // sinon authentification impossible
    echo "ERREUR: Login ou Mot de passe incorrect!";
    }

    mysql_free_result($result);
    }
    else
    {
    header ('Location: authentification.php');
    }
    ?>
    -1
  8. bruno3591 Messages postés 159 Statut Membre 16
     
    Effectivement il ne fait rien du tout. J'ai constaté des erreurs au niveau de la syntaxe de la requéte select, il y a des ' en trop. Maintenant la page verif_authen.php me génére 3 erreurs :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\verif_authen.php on line 22

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\verif_authen.php on line 24
    ERREUR: Login ou Mot de passe incorrect!
    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\verif_authen.php on line 40

    Voici le code :

    <?php

    if ( isset ($_POST['utilisateur']) || isset ($_POST['mdp']) )
    {
    // formulaire recu
    if (empty($_POST['utilisateur']))
    {
    die ("ERREUR: Entrez un nom d'utilisateur!");
    }

    if (empty($_POST['mdp']))
    {
    die ("ERREUR: Veuillez entrer un mot de passe!");
    }
    mysql_connect('localhost', 'root', '');
    mysql_select_db('gestion_conges');
    //requête vers la table users
    $query = "SELECT utilisateur, mdp FROM users WHERE utilisateur = ".$_POST['utilisateur']." AND mdp = ".$_POST['mdp']." ";

    // Execute la requete
    $result = mysql_query($query);
    $data = (mysql_fetch_array($result) );
    // Regarde les valeurs retournees par la base
    if (mysql_num_rows($result) == 1)
    {
    header ('Location: index.php');
    // si une ligne est retournee,
    // l'authentification est bonne

    session_start();
    $_SESSION['utilisateur'] = $data['utilisateur'];

    }
    else
    {
    // sinon authentification impossible
    echo "ERREUR: Login ou Mot de passe incorrect!";
    }

    mysql_free_result($result);
    }
    else
    {
    header ('Location: authentification.php');
    }
    ?>

    Pour les 2 pages séparés, j'ai préféré revenir à la méthode d'apprentissage basique. Une fois que tu tout fonctionnera je verrai pour tout mettre sur une page. Ca ne doit pas être bien compliqué mais bon...:)
    -1