ss25_satana
Новичок
Пишется только одна переменная в БД
Взял этот код с сайта пхп ипсправил для работы с PostgreSQL.
таблица для БД.
CREATE TABLE ws_sessions (
session_id character varying(255) DEFAULT ''::character varying NOT NULL,
session_expires integer DEFAULT 0 NOT NULL,
session_data text
);
В ячейку session_data записывается только одна переменная. Почему? Что не так?
Версия пхп 5.2.0 установлен как CGI
Apache/2.2.3 (Win32)
Взял этот код с сайта пхп ипсправил для работы с PostgreSQL.
таблица для БД.
CREATE TABLE ws_sessions (
session_id character varying(255) DEFAULT ''::character varying NOT NULL,
session_expires integer DEFAULT 0 NOT NULL,
session_data text
);
В ячейку session_data записывается только одна переменная. Почему? Что не так?
Версия пхп 5.2.0 установлен как CGI
Apache/2.2.3 (Win32)
PHP:
class Session {
// session-lifetime
var $lifeTime;
// pg-handle
var $dbHandle;
function __construct() {
// get session-lifetime
$this->lifeTime = get_cfg_var("session.gc_maxlifetime");
// open database-connection
$this->dbHandle = pg_connect("host=localhost dbname=mydb user=postgres password=****");
session_set_save_handler(array(&$this,"open"),
array(&$this,"close"),
array(&$this,"read"),
array(&$this,"write"),
array(&$this,"destroy"),
array(&$this,"gc"));
session_start();
}
function open($savePath, $sessName) {
return(true);
}
function close() {
$this->gc(ini_get('session.gc_maxlifetime'));
// close database-connection
return pg_close($this->dbHandle);
}
function read($sessID) {
// fetch session-data
$result = pg_query("SELECT session_data FROM ws_sessions
WHERE session_id = '$sessID'
AND session_expires > ".time());
// return data or an empty string at failure
if($row = pg_fetch_array($result))
return $row['session_data'];
return "";
}
function write($sessID,$sessData) {
// new session-expire-time
$newExp = time() + $this->lifeTime;
// is a session with this id in the database?
$res = pg_query("SELECT * FROM ws_sessions
WHERE session_id = '$sessID'");
// if yes,
if(pg_num_rows($res)) {
// ...update session-data
$result= pg_query("UPDATE ws_sessions
SET session_expires = '$newExp',
session_data = '$sessData'
WHERE session_id = '$sessID'");
// if something happened, return true
if(pg_affected_rows($result))
return true;
}
// if no session-data was found,
else {
// create a new row
$result = pg_query("INSERT INTO ws_sessions (
session_id,
session_expires,
session_data)
VALUES(
'$sessID',
'$newExp',
'$sessData')");
// if row was created, return true
if(pg_affected_rows($result))
return true;
}
// an unknown error occured
return false;
}
function destroy($sessID) {
// delete session-data
$result = pg_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'");
// if session was deleted, return true,
if(pg_affected_rows($result))
return true;
// ...else return false
return false;
}
function gc($sessMaxLifeTime) {
// delete old sessions
$result = pg_query("DELETE FROM ws_sessions WHERE session_expires < ".time());
// return affected rows
return pg_affected_rows($result);
}
}
$session = new Session();
$_SESSION['test'] = "34563456435";
$_SESSION['2345'] = "ret45t45ger";
$_SESSION['werg'] = "ghrty4564tgr";