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 :

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&eacute;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>
Je met donc au départ le session_start() pour démarrer une session quand un utilisateur vient sur la page.
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 :

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&eacute;ussi !</td>';
			echo '</tr>';
		}
		else{
			echo '<tr>';
			echo 	'<td style="border-bottom:1px solid black;">Enregistrement &eacute;chou&eacute; !</td>';
			echo '</tr>';
		}
	}
	?>
 
</table>
</div>
 
</body>
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
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";
}
Par le alert je vois que mes variables dont bien renseignées.

Dans ma page de login, j'inclus en haut un fichier "fonctions_login.php" dont le code est le 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
<?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();
	}
}
?>
Dans la fonction javascript, les instructions suivantes :

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 :

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&eacute;ussi !</td>';
			echo '</tr>';
		}
et sinon ça :

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 &eacute;chou&eacute; !</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 ...

Et je ne comprend pas pourquoi ! Si quelqu'un arrive à déchiffrer mon merdier ?! lol je lui en serais très reconnaissant ....

Cordialement,
Bizoo