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 :
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
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(); }
Je n'ai pas mis les include concernant les fonctions et les variables.
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();
Merci de votre aide !
Partager