strikenet | Exemple de code simple avec bug :
Code :
- <?php
- $site_racine='\home\mon-site-com\www'; // contient le chemin interne au serveur de mon site
- $sess_session_name='toto';
- $membre_session_lt = '7200'; // Durée de la session en seconde
- // Fonction sur les sessions
- function sessionopen($save_path, $session_name) {
- global $sess_save_path, $sess_session_name, $site_racine;
- $sess_save_path = $site_racine.'/sessions'; //$save_path;
- $sess_session_name = $session_name;
- return(TRUE);
- }
- function sessionclose() {
- return(TRUE);
- }
- function sessionread($id) {
- global $sess_save_path, $sess_session_name;
- $sess_file = "$sess_save_path/session_$id";
- if ($fp = @fopen($sess_file, "r" )) {
- $sess_data = fread($fp, filesize($sess_file));
- return($sess_data);
- } else {
- return("" );
- }
- }
- function sessionwrite($id, $sess_data) {
- global $sess_save_path, $sess_session_name;
- $sess_file = "$sess_save_path/session_$id";
- if ($fp = @fopen($sess_file, "w" )) {
- return(fwrite($fp, $sess_data));
- } else {
- return(FALSE);
- }
- }
- function sessiondestroy($id) {
- global $sess_save_path, $sess_session_name;
- $sess_file = "$sess_save_path/session_$id";
- return(@unlink($sess_file));
- }
- function sessiongc($maxlifetime) {
- global $sess_save_path, $sess_session_name, $membre_session_lt;
- $d = opendir($sess_save_path);
- while ($f = readdir($d)) {
- $fich = $sess_save_path.'/'.$f;
- if (is_file($fich) && ereg("^session_", $f) && (filemtime($fich)+$membre_session_lt)<time()) {
- @unlink($fich);
- }
- }
- return TRUE;
- }
- session_set_save_handler('sessionopen', 'sessionclose', 'sessionread', 'sessionwrite', 'sessiondestroy', 'sessiongc');
- session_start();
- echo session_id();
- ?>
|
Donc il y a juste besoin de ce code + créer le dossier /sessions à la racine du site
session_id() renvoie un ID différent à chaque refresh avec IE et garde le même ID avec Firefox. Message édité par strikenet le 30-01-2005 à 16:18:23
|