я написал этот пользовательский обработчик сеанса!
plz посмотрите [ и посмотрите на текст BOLD ошибки ниже , чтобы помочь мне выяснить, где ошибка]
<?php
function sess_open($sess_path, $sess_name) {
return true;
}
function sess_close() {
return true;
}
function sess_read($sess_id)
{
$con = mysqli_connect("localhost", "root", "","database");
$stmt = mysqli_prepare($con,"SELECT Data FROM sessions WHERE SessionID = ?");
mysqli_stmt_bind_param($stmt,"s",$sess_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $data);
mysqli_stmt_fetch($stmt);
if (is_null($data))
{
$CurrentTime = time();
mysqli_stmt_close($stmt);
$stmt = mysqli_prepare($con,"INSERT INTO sessions (SessionID, DateTouched) VALUES (?,?)");
mysqli_stmt_bind_param($stmt,"ss",$sess_id,$CurrentTime);
mysqli_stmt_execute($stmt);
return '';
}
else
{
mysqli_stmt_close($stmt);
$stmt = mysqli_prepare($con,"UPDATE sessions SET DateTouched = ? WHERE SessionID = ?");
mysqli_stmt_bind_param($stmt,"ss",$CurrentTime,$sess_id);
mysqli_stmt_execute($stmt);
return $sess_id;
}
}
function sess_write($sess_id, $data)
{
$con = mysqli_connect("localhost", "root", "","database");
$CurrentTime = time();
$stmt = mysqli_prepare($con,"UPDATE sessions SET Data = ?,DateTouched=? WHERE SessionID=?");
mysqli_stmt_bind_param($stmt,"sss",$data,$CurrentTime,$sess_id);
mysqli_stmt_execute($stmt);
return true;
}
function sess_destroy($sess_id)
{
$con = mysqli_connect("localhost", "root", "","database");
$stmt = mysqli_prepare($con,"DELETE FROM sessions WHERE SessionID = ?");
mysqli_stmt_bind_param($stmt,"s",$sess_id);
mysqli_stmt_execute($stmt);
return true;
}
function sess_gc($sess_maxlifetime)
{
$CurrentTime = time();
mysqli_query($con,"DELETE FROM sessions WHERE DateTouched + $sess_maxlifetime < $CurrentTime;");
return true;
}
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();
?>
это [выше] my DB_Session.php file
include 'DB_Session.php';
$ _SESSION ['foo'] = "BAR";
$ _SESSION ['bar'] = "FOO";
echo $ _SESSION ['foo'].''. $ _ SESSION ['bar'];
это [наверху] мой session_start.php файл, который отлично работает :)
include 'DB_Session.php';
echo $ _SESSION ['foo']. ''. $ _ SESSION [' bar '];
session_destroy ();
echo $ _SESSION [' foo '].'». $ _ SESSION [ 'бар'];
это [наверху] мой session_finish.php файл, который показывает ошибку :(
, которая выдает эти ошибки, хотя сессия полностью уничтожена!
Примечание: неопределенный индекс: foo в session_finish.php в строке 4
Примечание: неопределенный индекс: бар в session_finish.php в строке 4
Примечание:Неопределенный индекс: foo в session_finish.php в строке 6
Примечание: неопределенный индекс: бар в session_finish.php в строке 6
Структура таблицы
CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ sessions
(
ID
int (11) NOT NULL AUTO_INCREMENT,
SessionID
char (26) DEFAULT NULL,
Data
текст,
DateTouched
int (11) DEFAULT NULL,
PRIMARY KEY (ID
)
) ENGINE = InnoDB CHARSET DEFAULT = latin1 AUTO_INCREMENT = 1;
после просмотра session_start.php я могу видеть, как значение сохраняется в базе данных, и после просмотра session_finish.php значение удаляется окончательноточно, но не может показать данные SESSION на другой странице перед уничтожением!