session丢失问题
点<a href="ab.php">离开本页</a>
没打印出值
数据库CREATE TABLE `session` (
`sesskey` char(32) NOT NULL,
`expiry` varchar(20) NOT NULL default '0000-00-00 00:00:00',
`value` varchar(3000) default NULL,
PRIMARY KEY (`sesskey`),
UNIQUE KEY `sesskey` (`sesskey`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;<?php
/*class_sessions.php*/class clsSessions {
private $sess_life;
private $sess_dbh="";
private $host;
private $user;
private $pwd;
private $database;
private $sess_maxlifetime;function __construct($host='localhost',$user='root',$pwd='123456',$database='cbweb')
{
$this->sess_maxlifetime=get_cfg_var("session.gc_maxlifetime");
$this->host=$host;
$this->user=$user;
$this->pwd=$pwd;
$this->database=$database;
$this->sess_life = get_cfg_var('session.gc_maxlifetime') ? get_cfg_var('session.gc_maxlifetime'):1440;
session_set_save_handler( array (& $this, "_sess_open"), array (& $this, "_sess_close"),
array (& $this, "_sess_read"),
array (& $this, "_sess_write"),
array (& $this, "_sess_destroy"),
array (& $this, "_sess_gc")
);
return true;
}
//---------------------------------------------------------------------------------------------------------------
function _sess_open($save_path, $session_name) {
return true;
} function _sess_close() {
return true;
} function _sess_read($key) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$value_query = $db->query("select value from session where sesskey = ' $key ' and expiry > '" . time() . "'");
$value = $value_query->fetch_assoc();
if (isset($value['value'])) {
return $value['value'];
}
return false;
} function _sess_write($key,$val) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$expiry = time() + $this->sess_life;
//$value = $val;
$check_query = $db->query("select count(*) as total from session where sesskey = '$key'");
$check = $check_query->fetch_assoc(); if ($check['total'] > 0) {
return $db->query("update session set expiry = '$expiry', value = '$val' where sesskey = '$key'");
} else {
return $db->query("insert into session values ('$key', '$expiry', '$val')");
}
} function _sess_destroy($key) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
return $db->query("delete from session where sesskey = '$key'");
} function _sess_gc($maxlifetime) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$db->query("delete from session where expiry < '" . time() . "'");
return true;
}
}
?><?php
/*
testclass.php
*/include("class_sessions.php");
$b=new clsSessions;session_start();if (!isset($_SESSION['name'])||!isset($_SESSION['pwd'])){
$_SESSION['name']="abcd";
$_SESSION['pwd']="99999999999";
}
echo $_SESSION['name']."<br />";
echo $_SESSION['pwd']."<br />";
//unset($_SESSION['name']);
//session_destroy();
echo time()."<br />";echo session_id();
?>
<a href="ab.php">离开本页</a><?php
//ab.phpinclude("class_sessions.php");
$bb=new clsSessions;
session_start();
//$_SESSION['bbb']="bbbbb";
echo $_SESSION['name']."<br />";
echo $_SESSION['pwd']."<br />";
echo time()."<br />";
echo session_id();
?>
点<a href="ab.php">离开本页</a>
没打印出值
数据库CREATE TABLE `session` (
`sesskey` char(32) NOT NULL,
`expiry` varchar(20) NOT NULL default '0000-00-00 00:00:00',
`value` varchar(3000) default NULL,
PRIMARY KEY (`sesskey`),
UNIQUE KEY `sesskey` (`sesskey`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;<?php
/*class_sessions.php*/class clsSessions {
private $sess_life;
private $sess_dbh="";
private $host;
private $user;
private $pwd;
private $database;
private $sess_maxlifetime;function __construct($host='localhost',$user='root',$pwd='123456',$database='cbweb')
{
$this->sess_maxlifetime=get_cfg_var("session.gc_maxlifetime");
$this->host=$host;
$this->user=$user;
$this->pwd=$pwd;
$this->database=$database;
$this->sess_life = get_cfg_var('session.gc_maxlifetime') ? get_cfg_var('session.gc_maxlifetime'):1440;
session_set_save_handler( array (& $this, "_sess_open"), array (& $this, "_sess_close"),
array (& $this, "_sess_read"),
array (& $this, "_sess_write"),
array (& $this, "_sess_destroy"),
array (& $this, "_sess_gc")
);
return true;
}
//---------------------------------------------------------------------------------------------------------------
function _sess_open($save_path, $session_name) {
return true;
} function _sess_close() {
return true;
} function _sess_read($key) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$value_query = $db->query("select value from session where sesskey = ' $key ' and expiry > '" . time() . "'");
$value = $value_query->fetch_assoc();
if (isset($value['value'])) {
return $value['value'];
}
return false;
} function _sess_write($key,$val) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$expiry = time() + $this->sess_life;
//$value = $val;
$check_query = $db->query("select count(*) as total from session where sesskey = '$key'");
$check = $check_query->fetch_assoc(); if ($check['total'] > 0) {
return $db->query("update session set expiry = '$expiry', value = '$val' where sesskey = '$key'");
} else {
return $db->query("insert into session values ('$key', '$expiry', '$val')");
}
} function _sess_destroy($key) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
return $db->query("delete from session where sesskey = '$key'");
} function _sess_gc($maxlifetime) {
$db = new mysqli($this->host,$this->user,$this->pwd,$this->database);
$db->query("delete from session where expiry < '" . time() . "'");
return true;
}
}
?><?php
/*
testclass.php
*/include("class_sessions.php");
$b=new clsSessions;session_start();if (!isset($_SESSION['name'])||!isset($_SESSION['pwd'])){
$_SESSION['name']="abcd";
$_SESSION['pwd']="99999999999";
}
echo $_SESSION['name']."<br />";
echo $_SESSION['pwd']."<br />";
//unset($_SESSION['name']);
//session_destroy();
echo time()."<br />";echo session_id();
?>
<a href="ab.php">离开本页</a><?php
//ab.phpinclude("class_sessions.php");
$bb=new clsSessions;
session_start();
//$_SESSION['bbb']="bbbbb";
echo $_SESSION['name']."<br />";
echo $_SESSION['pwd']."<br />";
echo time()."<br />";
echo session_id();
?>
解决方案 »
- PHP链接MYSQL出现问题
- IMAP系列函数
- php 时间相加的问题
- PHP关于文件上传下载的乱码问题
- CRC32返回值的范围是多少?
- 问个最基础的问题:编写PHP究竟可以使用哪些文本编辑器
- 为何我的相对路径不能使用?等待中...
- 小问题,在php中如何在数据库查询中使用变量,数据库为mysql $query="SELECT * FROM user WHERE name="+"$select";
- 求一个问题,急,大家都碰到过的,
- 如何知道当前的http://localhost/index.php是读取htdocs\下的哪个目录?
- ucenter应用添加,求帮助,谢谢。
- php 页面能正常访问,但是一刷新就成空白页面了
session.auto_start = 0
include("class_sessions.php");
$b=new clsSessions;
时是正常的加载类了不知道我为什么session就不起作用了
要放在以下2个的前面,它前面什么也不能有~~~~~~~
include("class_sessions.php");
$b=new clsSessions;
不可能是这个原因
session值丢失!echo $_SESSION['name']."<br />";echo $_SESSION['pwd']."<br />";//没有值了。空!!!
这是为什么呢?
你确定session_id没有丢失?需要使用 isset($_SESSION['name']) 来判断是否存在这个关键字,因为,php把不存在的变量都用空代替的或者用 var_dump($_SESSION)看看是否有关键字
一個頁面設置session,到另外一個頁面使用的時候顯示不了值,那你必須得在session_start()之前加session_id(PHPSESSID);PHPSESSID是你設置session_id的名字,與你的配置文件php.ini設置的名字一樣,有些設成SID,那就寫SID
& 3Q A LOT