Session_start erreur non trouvée
bruno3591
Messages postés
159
Statut
Membre
-
toto -
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>
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>
A voir également:
- Session_start erreur non trouvée
- Erreur signet non défini - Forum Word
- Erreur t32 ✓ - Forum Livebox
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur upes 1025 - Forum Téléviseurs
- Erreur 0x80070643 - Accueil - Windows
7 réponses
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.
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.
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
<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
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.
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.
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :)
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 :)
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');
}
?>
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');
}
?>
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...:)
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...:)