Bonjour,
j'aimerais mettre en place un système de Session pour une partie admin de mon site mais j'ai quelques soucis...
Tout d'abord voici le code de la page d'index :
Je met donc au départ le session_start() pour démarrer une session quand un utilisateur vient sur la page.
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 <?php session_start(); ?> <html> <?php Require('../../fcts/connexion.php'); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="../../js/fonctions.js"></script> <title></title> </head> <link rel="stylesheet" type="text/css" href="../../css/style_admin.css"> <body> <div class="accueil_admin"> <div id="bandeau_admin"> <fieldset style="background-color:orange;border-color:orange;"> <center> <pre style="font-weight:bold;color:red;font-size:28;">/!\ ADMIN ONLY /!\</pre> </center> </fieldset> </div> <div id="separateur"> </div> <!-- bloc menu --> <div id="menu_admin"> <table align="center"><tr><td> <dl> <dt onmouseover="javascript:montre();"><a href="index_admin.php?section=textes">Modification des textes</a></dt> </dl> <dl> <dt onmouseover="javascript:montre();"><a href="index_admin.php?section=domaines">Gestion des domaines</a></dt> </dl> <dl> <dt onmouseover="javascript:montre('smenu1');">Gestion des réalisations</dt> <dd id="smenu1"> <ul onmouseout="javascript:montre();"> <?php connexion(); $result = request('SELECT id_domaine, nom, description FROM domaines'); while($row = mysql_fetch_row($result)){ $id = $row[0]; $nom = $row[1]; $desc = $row[2]; echo '<li><a href="index_admin.php?section=realisations&iddomaine='.$id.'">> '.$nom.'</a></li>'; }; // Deconnexion de la base de donnees close_connexion(); ?> </ul> </dd> </dl> </td></tr></table> </div> <!-- bloc corps --> <div style="border:1px solid black;" id="corps_admin"> <br><br> <?php if(isset($_SESSION['logged'])){ if (isset($_GET ["section"])) include($_GET["section"].".php"); } else{ include("./login.php"); } ?> </div> </div> </body> </html>
Ensuite, vers le bas du code je regarde si ma variable $_SESSION['logged'] est déclaré ou pas. Si oui j'accède à une page avec le $_GET["section"].".php" sinon j'affiche toujours ma page de login.
Voici maintenant ma page de login :
Ici, on peut voir la mire de connexion et le bouton qui lance la fonction javascript "Log();" suivante :
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 <body> <?php Require_once('../../fcts/connexion.php'); Require('../../fcts/fonctions_login.php'); ?> <div> <table align="center" id="login" width="30%"> <?php if(!isset($_SESSION['logged'])){ echo '<tr>'; echo '<th colspan="2" style="border-bottom:1px solid black;">Veuillez vous enregistrer !</th>'; echo '</tr>'; echo '<tr>'; echo '<td colspan="2"><br></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Login : </td>'; echo '<td><input id="log" type="text" width="50px" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Mot de passe : </td>'; echo '<td><input id="pwd" type="text" width="50px" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td align="center" colspan="2"><input type="button" value="GO !" onclick="javascript:Log();"/></th>'; echo '</tr>'; } else{ if($_SESSION['logged'] == "OK"){ echo '<tr>'; echo '<td style="border-bottom:1px solid black;">Enregistrement réussi !</td>'; echo '</tr>'; } else{ echo '<tr>'; echo '<td style="border-bottom:1px solid black;">Enregistrement échoué !</td>'; echo '</tr>'; } } ?> </table> </div> </body>
Par le alert je vois que mes variables dont bien renseigné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
22
23
24
25
26 function Log(){ var login = document.getElementById("log").value; var pwd = document.getElementById("pwd").value; var xhr_object = getXhr(); xhr_object.onreadystatechange = function() { alert_ajax(xhr_object); }; xhr_object.open("POST", "./login.php", true); xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // --- ICI TU PASSE TES ARGUMENTS AU SCRIPT : var data = "fonction=log&log="+login+"&pwd="+pwd; alert(data); xhr_object.send(data); var chaine=window.location.href; var reg=new RegExp("\\?", "g"); var tableau=chaine.split(reg); sleep(1500); window.location.href = tableau[0] + "?section=login"; }
Dans ma page de login, j'inclus en haut un fichier "fonctions_login.php" dont le code est le suivant :
Dans la fonction javascript, les instructions suivantes :
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 <?php if(isset($_POST["fonction"])) { if($_POST["fonction"] == "log") { connexion(); $result = request('SELECT id_connexion FROM administration WHERE login = "'.$_POST["log"].'" AND password = "'.$_POST["pwd"].'"'); if(mysql_fetch_row($result)){ echo 'oui'; $_SESSION['logged'] = "OK" ; } else{ $_SESSION['logged'] = "NOK" ; echo 'non'; } close_connexion(); } } ?>
var data = "fonction=log&log="+login+"&pwd="+pwd;
xhr_object.send(data);
devraient avoir pour effet de me permettre de récupérer les valeurs $_POST["fonction"] !
Cette variable devrait contenir la valeur "log", donc cela devrait déclencher le bout de code PHP de mon fichier "fonctions_login.php" !
Et au rechargement de ma page, $_SESSION['logged'] devrait être déclaré, alors ma page login.php devrait faire apparaître soit ça si dans la variable il y a la valeur OK :
et sinon ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if($_SESSION['logged'] == "OK"){ echo '<tr>'; echo '<td style="border-bottom:1px solid black;">Enregistrement réussi !</td>'; echo '</tr>'; }
Mon problème c'est que c'est ma mire de connexion qui revient tout le temps ... J'en conclue donc que ma variable de session $_SESSION['logged'] ne retourne rien ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 else{ echo '<tr>'; echo '<td style="border-bottom:1px solid black;">Enregistrement échoué !</td>'; echo '</tr>'; }
Et je ne comprend pas pourquoi ! Si quelqu'un arrive à déchiffrer mon merdier ?! lol je lui en serais très reconnaissant ....
Cordialement,
Bizoo
Partager