Bonjour,
Je entrain de développer un site web et j'ai quelque soucis avec les sessions.
Pour créer mes session j'utilise la technique avec les base de données.
J'utilise la classe 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
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
91
92
93
94
95
96
97
 
<?php
/***************************************************************************
*  description: gestion des sessions par la bdd
*                            -------------------
*   copyright        : F_D_V copyright creative commmon cc by-no :
*                     pas d'utilisation commerciale autorisée, droit de modification, l'auteur doit être cité
*                     pour plus d'information http://creativecommons.org/licenses/by-nc/2.0/fr/
****************************************************************************/
class Session
{
	public $session_time = 7200;//2 heures
	public $session = array();
 
 
	public function __construct($sql_host, $sql_user, $sql_password, $sql_db)
	{
		$this->host = $sql_host;
		$this->user = $sql_user;
		$this->password = $sql_password;
		$this->dba = $sql_db;
	}
 
	public function open ()//pour l'ouverture
	{
		$this->connect = mysql_connect($this->host, $this->user, $this->password,1);//on se connecte a la bdd
		$bdd = mysql_select_db($this->dba,$this->connect);//on sélectionne la base de données
 
		$this->gc();//on appelle la fonction gc		
		return $bdd;//true ou false selon la réussite ou non de la connexion à la bdd
	}
 
	public function read ($sid)//lecture
	{
                $sid = mysql_real_escape_string($sid,$this->connect);
		$sql = "SELECT sess_datas FROM sess_table
				WHERE sess_id = '$sid' ";
 
		$query = mysql_query($sql,$this->connect) or exit(mysql_error());	
		$data = mysql_fetch_array($query);
 
		if(empty($data)) return FALSE;
		else return $data['sess_datas'];//on retourne la valeur de sess_datas
	}
 
	public function write ($sid, $data)//écriture
	{
		$expire = intval(time() + $this->session_time);//calcul de l'expiration de la session
		$data = mysql_real_escape_string($data,$this->connect);//si on veut stocker du code sql 
 
		$sql = "SELECT COUNT(sess_id) AS total
			FROM SESS_TABLE
			WHERE sess_id = '$sid' ";
 
		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
		$return = mysql_fetch_array($query);
		if($return['total'] == 0)//si la session n'existe pas encore
		{
			$sql = "INSERT INTO SESS_TABLE
				VALUES('$sid','$data','$expire')";//alors on la crée
 
		}
		else//sinon
		{
			$sql = "UPDATE SESS_TABLE
				SET sess_datas = '$data',
				sess_expire = '$expire'
				WHERE sess_id = '$sid' ";//on la modifie
		}		
		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
 
		return $query;
	}
 
	public function close()//fermeture
	{
		mysql_close($this->connect);//on ferme la bdd
	}
 
	public function destroy ($sid)//destruction
	{
		$sql = "DELETE FROM SESS_TABLE WHERE sess_id = '$sid' ";//on supprime la session de la bdd
		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
		return $query;
	}
 
	public function gc ()//nettoyage
	{
		$sql = "DELETE FROM sess_table
				WHERE sess_expire < ".time(); //on supprime les vieilles sessions 
 
		$query = mysql_query($sql,$this->connect) or exit(mysql_error());
 
		return $query;
	}
}//fin de la classe
?>
et dans mon fichier php j'utilise 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
 
 
$session = new Session($hostname_connection, $username_connection, $password_connection, $database_connection);//on déclare la classe
 
session_set_save_handler(array($session, 'open'),
                         array($session, 'close'),
                         array($session, 'read'),
                         array($session, 'write'),
                         array($session, 'destroy'),
                         array($session, 'gc'));//on précise les méthodes à employer pour les sessions
 
		session_start();
 
		$_SESSION['idclient']=$_POST['login'];
Jusque la ca marche tres bien mon histoire.
J'en arrive au pb
Je voudrais recuperer l'idclient sur une autre page et le navigateur me dit que ma variable n'existe pas.
J'essaye avec ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?php 
require_once("session.php");
session_start();
echo $_SESSION['idclient'];
?>
Avez vous une idée ?

Merci d'avance