ďťż
Podstrony
|
telcocafeWitam. Od paru dobrych godzin(no prawie) mam problem z utworzeniem niestandardowych sesji. Czy mógłby ktoś poprawić ten kod albo nakierować mnie na dobrą droge.<?php class MySQLiSession { const TABLE = "session_data"; const SESS_NAME = "session_data"; const SESS_EXPIRE = 3000; const HOST = 'localhost'; const DB = ''; const USER = ''; const PASS = ''; private $link; private $name; private $table; function __construct($user = null, $pass = null, $host = null, $db = null, $table = null, $sess_name = null) { $host = self::HOST; $db = self::DB; $user = self::USER; $pass = self::PASS; $this->table = self::TABLE; $this->name = (is_null($sess_name)) ? self::SESS_NAME : $sess_name; $this->link = mysql_connect($host, $user, $pass); if(!$this->link) { throw new Exception("Nie można nawiązać połącznia z bazą danych!"); return; } mysql_select_db($db); session_set_save_handler(array($this, '_open'), array($this, '_close'), array($this, '_read'), array($this, '_write'), array($this, '_destroy'), array($this, '_gc') ); session_name($this->name); session_start(); } public function _open($path, $sess_name) { echo "otwieram"; $this->name = $sess_name; return true; } public function _close() { echo "zamykam"; return true; } public function _write($sess_id, $data) { echo "tworze"; $query = "INSERT INTO {$this->table} (id, data, last_update) VALUES ($sess_id, time(), time()) ON DUPLICATE KEY UPDATE data=time()) last_update=NULL"; echo $query; $result = mysql_query($this->link,"$query"); return(true); } public function _read($sess_id) { echo "czytam"; $query = "SELECT data FROM " . $this->table . " WHERE id = " . $sess_id; echo $query; $result = mysql_query($this->link,"$query"); $field = mysql_fetch_array($result); mysql_close(); return $field['data']; } public function _destroy($sess_id) { echo "niszcze"; $query = "DELETE FROM {$this->table} WHERE id = $sess_id"; $result = mysql_query($this->link,"$query") or die(BLAD . "Nie mogę usunąć sesji."); mysql_close(); return(true); } public function _gc($max_life) { echo "sprzatam"; $query = "DELETE FROM {$this->table} WHERE UNIX_TIMESTAMP(last_update) + " . self::SESS_EXPIRE . " <= UNIX_TIMESTAMP(NOW())"; mysql_query($this->link,"$query") or die(BLAD . "Nie mogę usunąć sesji."); mysql_close(); return(true); } } $sess = new MySQLiSession(); if(!empty($_GET['reset'])) { $_SESSION['count'] = 0; } echo @++$_SESSION['count']; ?> <a href="?<?php echo SID ?>">asdfas</a>"> <a href="?<?php echo SID ?>&reset=1">asdfas</a>"> Jeszcze tabela CREATE TABLE `session_data` ( `id` varchar(32) NOT NULL default '', `data` text, `last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) Z góry dzięki za pomoc :) Użytkownik web_dd edytował ten post 17 czerwiec 2007, 21:42 Dobra już nie trzeba sam sobie poradziłem wykorzystując inną klase. Jakby kogoś interesowało wszystko znajduje sie http://www.phpclasse...-2006-09-12.zip Trzeba sie oczywiscie zarejestrowac aby mozna bylo pobrac Przepraszam modów że post pod postem:) Użytkownik web_dd edytował ten post 17 czerwiec 2007, 22:21 |
|||
Sitedesign by AltusUmbrae. |