par
Aureusms » 24 févr. 2009, 13:27
L'idée est bonne mais j'ai l'impression que tu boucles sur un header dans cette portion de code:
elseif(($_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP)){
echo '<meta http-equiv="refresh" content="0;formnews.php">';
//header('Location: formnews.php');
En effet $_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP seront toujours vrai vu que tu les as défini en constante plus haut...
define("LOGIN","essai");
define("MDP","coucou");
La méthode la plus simple est de définir les variables de session juste avant l'header();
Tu testes d'abord si posté, ensuite si vide enfin si bon : voilà ce que j'ai fais à ma sauce avec un texte de retour dans le formulaire (comme les grands)... (bug non corrigé si il y en a)
<?php
if (!isset($_POST['lelogin']) or !isset($_POST['lemotdepasse']))
{
//formulaire
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p>
<label>Login : </label>
<input type="text" name="lelogin" value="">
</p>
<p>
<label>Mot de passe : </label>
<input type="password" name="lemotdepasse" value="">
</p>
<input type="submit" value="OK">
</form>
<p>
<?php
//texte de retour
if (isset($_SESSION["texte_retour"]) && !empty ($_SESSION["texte_retour"]))
echo $_SESSION["texte_retour"];
?>
</p>
<?php
}
else //le formulaire a été posté
{
$_SESSION["texte_retour"] ="";
if (!empty($_POST['lelogin']) or !empty($_POST['lemotdepasse'])) //un des deux est vides
{
$_SESSION["texte_retour"] ="Un des deux input est vide";
header ("Location:".$_SERVER["PHP_SELF"]);
}
else //posté + rempli
{
$login = addslashes ($_POST['lelogin']);
$MDP = addslashes ($_POST['lemotdepasse'];
//on vérifie si c'est le bon login et mot de passe
// tu pourras mettre ici un test vers une base de donnée
if ($login != LOGIN or $MDP != MDP) //un des deux au moins est faux
{
$_SESSION["texte_retour"] ="Un des deux input est faux";
header ("Location:".$_SERVER["PHP_SELF"]);
}
else //tout est OK
{
$_SESSION["LOG"] = $login;
//je déconseille de mettre le mot de passe en session
header('Location: formnews.php');
}
}
}
?>
L'idée est bonne mais j'ai l'impression que tu boucles sur un header dans cette portion de code:
[php]elseif(($_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP)){
echo '<meta http-equiv="refresh" content="0;formnews.php">';
//header('Location: formnews.php');
[/php]
En effet $_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP seront toujours vrai vu que tu les as défini en constante plus haut...
[php]define("LOGIN","essai");
define("MDP","coucou"); [/php]
La méthode la plus simple est de définir les variables de session juste avant l'header();
Tu testes d'abord si posté, ensuite si vide enfin si bon : voilà ce que j'ai fais à ma sauce avec un texte de retour dans le formulaire (comme les grands)... (bug non corrigé si il y en a)
[php]
<?php
if (!isset($_POST['lelogin']) or !isset($_POST['lemotdepasse']))
{
//formulaire
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p>
<label>Login : </label>
<input type="text" name="lelogin" value="">
</p>
<p>
<label>Mot de passe : </label>
<input type="password" name="lemotdepasse" value="">
</p>
<input type="submit" value="OK">
</form>
<p>
<?php
//texte de retour
if (isset($_SESSION["texte_retour"]) && !empty ($_SESSION["texte_retour"]))
echo $_SESSION["texte_retour"];
?>
</p>
<?php
}
else //le formulaire a été posté
{
$_SESSION["texte_retour"] ="";
if (!empty($_POST['lelogin']) or !empty($_POST['lemotdepasse'])) //un des deux est vides
{
$_SESSION["texte_retour"] ="Un des deux input est vide";
header ("Location:".$_SERVER["PHP_SELF"]);
}
else //posté + rempli
{
$login = addslashes ($_POST['lelogin']);
$MDP = addslashes ($_POST['lemotdepasse'];
//on vérifie si c'est le bon login et mot de passe
// tu pourras mettre ici un test vers une base de donnée
if ($login != LOGIN or $MDP != MDP) //un des deux au moins est faux
{
$_SESSION["texte_retour"] ="Un des deux input est faux";
header ("Location:".$_SERVER["PHP_SELF"]);
}
else //tout est OK
{
$_SESSION["LOG"] = $login;
//je déconseille de mettre le mot de passe en session
header('Location: formnews.php');
}
}
}
?>[/php]