PHP 客户端禁用cookie后session解决方案
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是 session相比cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项”。
所以,我们可以抛开cookie使用session,即假定用户关闭cookie的情况下使用session,其实现途径有以下几种:
第一种方式:在每个超链接上添加一个PHPSESSID=$sid
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy2321')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy2321>//防止返回初始页产生新的sessionif(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"]);
}
//启动一个session
session_start();
//获取当前session的session_id()
$sid=session_id();
//在每个链接上添加参数PHPSESSID=$sid
其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
//设置当前的session为初始的session,session_id()一致即可
session_id($_GET["PHPSESSID"])
}
session_start();
第二种方式:使用 SID 常量替换链接上的 PHPSESSID=$sid (SID的值类似:PHPSESSID=sddg34r593dfdlksrewr)
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy5606')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy5606>if(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"]);
}
//启动一个session
session_start();
其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
//设置当前的session为初始的session,session_id()一致即可
session_id($_GET["PHPSESSID"])
}
session_start();
第三种方式:使用session.use_trans_sid=1,php.ini中配置
1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。
index.php
<?
session_start();
$_SESSION['name']="Aseoe";
$sn = session_id();
$url=".""index2.php?s=".$sn."">下一页";
echo $url;
?>
index2.php
$_GET[’s’]);
session_start();
echo "传递的session变量name的值为:".$_SESSION['name'];
?>
您可能感兴趣的文章:
PHP 客户端禁用cookie后session解决方案
解决php session跨页面传递 session值丢失的问题(图文)
php session跨域跨服务器的解决方法分享
PHP session实现跨子域的几种办法
php session 使用与安全
PHP 不得不提的 session 与 cookie
Go 语言 Session机制和 Cookie机制
浅析php中session和cookie的区别和联系
PHP中会话管理Cookie和Session的例子
有关php中session的疑惑