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>

7 réponses

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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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