修改php.ini配置文件中的下列参数,然后重启Apache或IIS:;session文件的保存位置,根据你的实际情况来填写 session.save_path = d:\web\session;允许使用cookie文件传递session参数 session.use_cookies = 1; Lifetime in seconds of cookie or, if 0, until browser is restarted. ;关闭浏览器后session过期 session.cookie_lifetime = 0; After this number of seconds, stored data will be seen as 'garbage' and ; cleaned up by the garbage collection process. ;session最长过期时间,如果超过1800秒后还没有关闭浏览器,session也过期 session.gc_maxlifetime = 1800
cookies文件中只记录PHPSESSID;session变量和变量的值是保存在服务器端的.
另外还有一个问题.不知道该怎么解决我是通过设置SESSION.我在a页面设置了session.所有值都有 我跳转至在b页面获取值session时.session值没有了.我用了global $_SESSION;加载进来了.按道理应该保存了.为什么没有了呢???? 我程序是class cls_dispose { //用户登陆 public function login($userName, $passWord) { //验证代码省略 $this->setSession($userName); return true; }/** * 方法:设置在线Session * @userName -- 用户姓名 */ private function setSession($userName) { global $_SESSION; $_SESSION["cname"] = $userName; } /** * 方法:检测用户是否登陆 */ public function isLogin() { global $_SESSION; if (!isset($_SESSION["cname"])) { return false; } else { return $_SESSION["cname"]; } } } $test = new cls_dispose();if ($test->login('lulu','123456')) { echo "登陆成功"; if (empty($test->isLogin())) { echo "有用户session"; } else { echo "无用户session"; } }
/** * 方法:检测用户是否登陆 */ public function isLogin() { global $_SESSION; if (!isset($_SESSION["cname"])) { return false; } else { return $_SESSION["cname"]; } }这里错了,你把if (!isset($_SESSION["cname"]))写错了,导致如果用户登陆你就说没登陆,把代码改为:/** * 方法:检测用户是否登陆 */ public function isLogin() { global $_SESSION; if (isset($_SESSION["cname"]))//去掉叹号 { return false; } else { return $_SESSION["cname"]; } }
public function isLogin() { global $_SESSION; //不存在返回false if (!isset($_SESSION["cname"])) { return false; } else { return $_SESSION["cname"]; } } }$test = new cls_dispose(); if ($test->login('lulu','123456')) { echo "登陆成功"; //如果为false,返回TRUE if (empty($test->isLogin())) { echo "有用户session"; } else { echo "无用户session"; } } =========================================== 所以你是错误的,呵呵.private function setSession($userName) { global $_SESSION; $_SESSION["cname"] = $userName; } ============================================= session是全局变量,不需要global
error_reporting(0);//设置不显示错误
session_save_path("./session");//设置SESSION目录
session_start();
if($already_logon==true)//判断是否已经登录
{
$abc=time() - $_SESSION['logon_time'];//减去登录时间
if($abc>30)//如果大于30秒,则
{
session_destory();//清空SESSION
}
}
elseif($logon_off==true)//判断是否要退出
{
session_destory();//清空SESSION
}
else
{
if($logon_on == true)//判断是否登录成功,具体楼主自己写
{
$_SESSION['logon_time']=time();//记录登录时间
}
}
session.save_path = d:\web\session;允许使用cookie文件传递session参数
session.use_cookies = 1; Lifetime in seconds of cookie or, if 0, until browser is restarted.
;关闭浏览器后session过期
session.cookie_lifetime = 0; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
;session最长过期时间,如果超过1800秒后还没有关闭浏览器,session也过期
session.gc_maxlifetime = 1800
我跳转至在b页面获取值session时.session值没有了.我用了global $_SESSION;加载进来了.按道理应该保存了.为什么没有了呢????
我程序是class cls_dispose
{
//用户登陆
public function login($userName, $passWord)
{
//验证代码省略
$this->setSession($userName);
return true;
}/**
* 方法:设置在线Session
* @userName -- 用户姓名
*/
private function setSession($userName)
{
global $_SESSION;
$_SESSION["cname"] = $userName;
}
/**
* 方法:检测用户是否登陆
*/
public function isLogin()
{
global $_SESSION;
if (!isset($_SESSION["cname"]))
{
return false;
}
else
{
return $_SESSION["cname"];
}
}
}
$test = new cls_dispose();if ($test->login('lulu','123456'))
{
echo "登陆成功";
if (empty($test->isLogin()))
{
echo "有用户session";
}
else
{
echo "无用户session";
}
}
* 方法:检测用户是否登陆
*/
public function isLogin()
{
global $_SESSION;
if (!isset($_SESSION["cname"]))
{
return false;
}
else
{
return $_SESSION["cname"];
}
}这里错了,你把if (!isset($_SESSION["cname"]))写错了,导致如果用户登陆你就说没登陆,把代码改为:/**
* 方法:检测用户是否登陆
*/
public function isLogin()
{
global $_SESSION;
if (isset($_SESSION["cname"]))//去掉叹号
{
return false;
}
else
{
return $_SESSION["cname"];
}
}
{
global $_SESSION;
//不存在返回false
if (!isset($_SESSION["cname"]))
{
return false;
}
else
{
return $_SESSION["cname"];
}
}
}$test = new cls_dispose(); if ($test->login('lulu','123456'))
{
echo "登陆成功";
//如果为false,返回TRUE
if (empty($test->isLogin()))
{
echo "有用户session";
}
else
{
echo "无用户session";
}
} ===========================================
所以你是错误的,呵呵.private function setSession($userName)
{
global $_SESSION;
$_SESSION["cname"] = $userName;
}
=============================================
session是全局变量,不需要global