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
?> |
Partager