Я пытаюсь заставить мои пользовательские сеансы работать, но мои переменные не сохраняются от страницы к странице. Если я удаляю требуемую строку и заменяю ее на session_start (); это работает отлично. Все эти файлы находятся в одном каталоге, и в моем файле php.ini для меня установлен параметр session.save_handler.
первая HTML-страница
<?php
require("sessionSetup.php");
$_SESSION['test'] = "session test";
session_regenerate_id();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>sessions test</title>
<script type="text/javascript">
<!--
alert("Test: <?php echo $_SESSION['test'];?>");
//-->
</script>
</head>
<body>
<a href="session2.php">Click here to go to session2.</a>
</body>
</html>
вторая HTML-страница
<?php
require("sessionSetup.php");
//session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>sessions test</title>
<script type="text/javascript">
<!--
alert("Test: <?php echo $_SESSION['test'];?>");
//-->
</script>
</head>
<body>
<a href="session.php">Click here to go to session.</a>
</body>
</html>
sessionSetup.PHP
<?php
session_set_save_handler('_open','_close','_read','_write','_destroy','_clean');
session_start();
function _open(){
global $_sess_db;
if($_sess_db = mysql_connect(host,user,password)){
return mysql_select_db(db, $_sess_db)or die("cannot select DB");
}
return false;
}
function _close(){
global $_sess_db;
return mysql_close($_sess_db);
}
function _read($id){
global $_sess_db;
$id = mysql_real_escape_string($id);
$sql = "SELECT data FROM session WHERE id = '$id'";
if ($result = mysql_query($sql, $_sess_db)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['data'];
}
}
return '';
}
function _write($id, $data){
global $_sess_db;
$access = time();
$id = mysql_real_escape_string($id);
$access = mysql_real_escape_string($access);
$data = mysql_real_escape_string($data);
$sql = "REPLACE INTO session VALUES ('$id', '$access', '$data')";
return mysql_query($sql, $_sess_db);
}
function _destroy($id){
global $_sess_db;
$id = mysql_real_escape_string($id);
$sql = "DELETE FROM session WHERE id = '$id'";
return mysql_query($sql, $_sess_db);
}
function _clean($max){
global $_sess_db;
$old = time() - $max;
$old = mysql_real_escape_string($old);
$sql = "DELETE FROM session WHERE access < '$old'";
return mysql_query($sql, $_sess_db);
}
?>
Я заменил здесь данные для входа в базу данных фиктивной информацией. Также, когда я проверяю с помощью phpadmin, в моих сеансах нет информации. Все, что я получаю на второй странице HTML, является нулевым значением. Я работал над этим некоторое время и не добился прогресса. Буду признателен за любую помощь, которую я смогу получить.