Salut tout le monde, je d'implémenter un script d'authentification dans mes pages afin de rediriger l'utilisateur vers une session protégée.
Un login et MDP unique pour tous les utilisateurs ayant le droits d'accès.
REQUETE CREATION DE LA TABLE :
FORM : (le code n'est pas entier ici, pas la pein, et de toute façon le problème ne vient pas de là)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE phplogin ( CodeTemporaire varchar(50) default NULL, Date timestamp(14) NOT NULL, Pseudo varchar(20) NOT NULL default '', Passe varchar(20) NOT NULL default '', PRIMARY KEY (Pseudo) ) TYPE=MyISAM;
LOGIN.PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <form method="post" action="login.php"> <input type="text" name="pseudo_membre"> <input type="password" name="passe_membre"> <input type="image" src="images/login_11.gif"> </form>
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 <?php include('fonctions.php'); include('variables.php'); // CONNEXION A LA BASE DE DONNEE connexion(); no_cache(); if(intval($login)==1 && isset($id)) { $requete=requete("UPDATE "._TABLE_." set CodeTemporaire='', Date=NOW()-10000 where CodeTemporaire='".$id."'"); header("Location: ".$pagelogin); } else { // ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET // MOT DE PASSE SAISIS A LA PAGE INDEX.HTM $requete=requete("select Pseudo 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(); } ?>
FONCTIONS.PHP :
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 <?php /*- AFFICHAGE DES ERREURS DE CONNEXION */ function erreur( $message ) { echo $message ; exit ; } /* CONNEXION A LA BASE DE DONNEES */ function connexion() { // connexion au serveur de données @mysql_connect( _HOST_ , _USER_ , _PWD_ ) or erreur( 'Connexion au serveur de données impossible' ) ; // sélection de la base de données @mysql_select_db( _DB_ ) or erreur( 'Sélection de la base de donnée impossible' ) ; } /* DECONNEXION A LA BASE DE DONNEES */ function deconnexion() { @mysql_close(); } /* EXECUTION D'UNE REQUETE */ function requete( $requete ) { if($resultat = mysql_query( $requete )) return $resultat ; erreur( "Erreur dans la requête : $requete<br>" . mysql_error() ) ; } /* FONCTION DE DESACTIVATION DU CACHE DU NAVIGATEUR */ function no_cache() { header("Pragma: no-cache"); header("Cache-Control: no-cache"); } ?>
VARIABLES.PHP
SECU.PHP :
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 /* CONNEXION A LA BASE DE DONNEE */ define("_HOST_", "***"); define("_USER_", "***"); define("_PWD_", "***"); define ("_DB_", "***"); define ("_TABLE_", "phplogin"); // nom de la table utilisée /* VARIABLES */ $validitesession = 3600; // durée de validité de la session $pagelogin = 'login.html'; // page de login et de sortie $pagelogged = 'redir.php'; // page suivant la connexion ?>
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 <?php include('fonctions.php'); include('variables.php'); 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=NULL, Date=NOW()-10000"); header("Location:".$pagelogin); exit; } // LIGNE FACULTATIVE : RECUPERATION DU PSEUDO $pseudo=mysql_result($requete,0,"Pseudo"); // DECONNEXION MYSQL deconnexion(); ?>
REDIR.PHP :
Voila pour les pages concernées ...
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 <?php include('secu.php'); ?> <html> <head> <title> ****** </title> </head> <body bgcolor="#FFFFFF"> <?php echo "Pseudo : ".$pseudo; echo "<br>Id de session : ".$id; echo "<br>Exemple de lien : <a href=\"page.php?id=".$id."\">lien</a>"; echo "<br>Déconnexion : <a href=\"login.php?login=1&id=".$id."\">Partir d'ici</a>"; ?> </body> </html>
Mon problème est le suivant : lorsque je saisis le pseudo et mdp unique sur la page login.html, apres validation, je retourne sur la même page (voir fichier "variables") comme si il ne prenait pas en compte le login et mdp comme étant valides ... alors que normalement il devrait m'envoyer sur la page "redir.php" au lieu de "login.html"
Si une âme généreuse voit ou est le problème, je lui en serais très reconnaissant ...
Merci d'avance à ceux qui suivront et posteront dans ce topic.
Partager