Bonjour,

J'ai mis en place un accès sécurisé pour une petite admin, mais il marche quand il veut et je n'ai pas d'explication rationnelle (en tout cas, je n'en trouve pas).
J'ai repris le script phplogin qui fonctionne avec une table contenant un code temporaire (id de session), la date (pour vérifier la validité), le login et le mot de passe. Ca marche très bien avec une durée de session de 15 sec mais à 1800 ou 3600 ça coince : le login est impossible (?).
Alors, si quelqu'un voit qq chose, moi je suis perdu, j'y ai passé les 2 dernières journées, à tout tester, en vain...

Le formulaire de login fait la vérif avec le code suivant :
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
connexion();
no_cache();
 
if(intval($login)==1 && isset($id))
	{
	$requete=requete("UPDATE "._TABLE_." set CodeTemporaire='', Date=NOW()-100 where CodeTemporaire='".$id."' ");
	header("Location: ".$pagelogin);
	}
else
	{
	// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
	// MOT DE PASSE SAISIS 
	$requete=requete("select Pseudo,Passe from "._TABLE_." where Pseudo='".$pseudo_membre."' and Passe='".$passe_membre."'");
 
	// SI AUCUN ENREGISTREMENT NE CORRESPOND
	if(mysql_num_rows($requete)==0)
		{
		// REDIRECTION VERS LA PAGE ERREUR
		header("Location: ".$pagelogin);
		}
	// SI LE LOGIN ET MOT DE PASSE SONT EXACTES	
	else
		{
		// CREATION D'UN IDENTIFIANT ALEATOIRE
		$taille = 50;
		$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
		srand(time());
		for ($i=0;$i<$taille;$i++)
			{
			$id.=substr($lettres,(rand()%(strlen($lettres))),1);
			}
 
		// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE 
		$requete=requete("UPDATE "._TABLE_." set CodeTemporaire='".$id."', Date=NOW()+".$validitesession." where Pseudo='".$pseudo_membre."' and Passe='".$passe_membre."'");
 
		// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
		header("Location:".$pagelogged."?id=".$id);
		}	
 
	// DECONNEXION MYSQL
	deconnexion();
	}
Puis sur la page où l'on doit arriver, un fichier de sécurisation :

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
no_cache();
 
// CONNEXION MYSQL
connexion();
 
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=requete("select * from "._TABLE_." where CodeTemporaire='".$id."' and Date>NOW()");
 
// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
	{
	// REDIRECTION PAGE ERREUR
	requete("UPDATE "._TABLE_." set CodeTemporaire='', Date=NOW()-100");
	header("Location:".$pagelogin);
	exit;
	}
 
// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo=mysql_result($requete,0,"Pseudo");
 
 
// DECONNEXION MYSQL	
deconnexion();
Je n'ai pas mis les include concernant les fonctions et les variables.

Merci de votre aide !