Disparition inexpliquée des variables $_POST
Bonjour
Je cherche à faire une classe de login que je pourrais réutiliser sur plusieurs sites et en testant je suis tombé sur un problème que je n'arrive pas à résoudre. C'est très frustrant, j'en appelle à votre sagesse :) .
J'ai une page de login avec un formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <form action="" method="post" name="FormLogin" id="FormLogin" onSubmit="document.getElementById('MdpCode').value=SHA1(document.getElementById('Mdp').value);document.getElementById('Mdp').value='';" >
<input name="MdpCode" id="MdpCode" type="hidden" value="0" >
<table >
<tr>
<td colspan="3"><span style="color:#FF0000"><?php echo $MessageDErreur; ?></span></td>
</tr>
<tr>
<td width="181"><div align="right">Login</div></td>
<td width="8"> </td>
<td width="127">
<input name="Log" type="text" id="Log" size="15" maxlength="15" />
</td>
</tr>
<tr>
<td><div align="right">Mot de passe </div></td>
<td> </td>
<td><input name="Mdp" type="password" id="Mdp" size="15" maxlength="15" /></td>
</tr>
<tr>
<td colspan="3"><input name="BtValidLogin" type="submit" value="Valider" /></td>
</tr>
</table>
</form> |
Ce petit formulaire doit normalement me renvoyer un tableau de variables $_POST. Au submit du formulaire, on recharge la page avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
session_start();
print_r($_POST);
$PageLogin=true;
include("./scripts/debutexec.php");
$MessageDErreur="";
if(isset($_POST["BtValidLogin"]))
{
if($Login->Login($_POST["Log"],$_POST["MdpCode"]))
{
header("Location: index.php");
}
else
{
$MessageDErreur="Mauvais login ou mot de passe";
}
}
?> |
Le fichier debutexec.php contient :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
include("classlogin.php");
if(!isset($_SESSION["plop"]))
{
$Login=new ClassLogin;
}
else
{
$Login=unserialize($_SESSION["plop"]);
}
if(!$Login->VerifLogge() && !isset($PageLogin))
{
header("Location: login.php");
}
?> |
et le fichier classlogin.php contient :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| <?php
abstract class BaseLogin
{
public $DroitsUtil=array();
public $Connecte;
public $IdUtil;
public $LoginUtil;
public $MailUtil;
public $IP;
public $DateHeureConnexion;
public $DateHeureDernierePage;
public function DetruireSession()
{
if(isset($_COOKIE[session_name()]))
{
setcookie(session_name(), '',(time()-42000), '/');
}
unset($_SESSION);
session_destroy();
}
}
class ClassLogin extends BaseLogin
{
public function __construct()
{
$this->Connecte=false;
$this->IdUtil=0;
$this->LoginUtil="";
$this->MailUtil="";
$this->IP=$_SERVER['REMOTE_ADDR'];
$this->DateHeureConnexion=0;
$this->DateHeureDernierePage=0;
}
public function VerifLogge()
{
if($this->Connecte && $this->IdUtil!=0 && $_SERVER['REMOTE_ADDR']==$this->IP && (time()-$this->DateHeureDernierePage)<=1800)
{
$this->DateHeureDernierePage=time();
return true;
}
else
{
return false;
}
}
public function Login($Login, $Mdp)//$Login et $Mdp passés en POST, $Mdp crypté en SHA-1
{
//Ajouter addslashes si les magic quotes ne sont pas déjà activés dans php.ini
$Login=htmlentities($Login);
while(1==1)
{
return true;
break;
}
}
}
?> |
mon problème est que la ligne renvoie sauf si je mets en commentaire la ligne
Code:
$Login=unserialize($_SESSION["plop"]);
J'ai donc l'impression qu'il y a un problème au niveau du unserialize d'un objet, mais ce qui est bizarre, c'est que si le unserialize devait vider le $_POST (ce qui est déjà bizarre), il ne devrait le faire que quand il est appelé. Or le simple fait que cette ligne soit présente dans le code suffit à vider mes $_POST.
Si quelqu'un a une idée de ce qui pourrait se passer, merci beaucoup d'avance parce que moi je sèche.