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 : Sélectionner tout - Visualiser dans une fenêtre à part
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">&nbsp;</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>&nbsp;</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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
$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.