当用户禁用cookie时

当用户禁用cookie后,服务器每次session_start() 都会 创建一个全新的seesion文件,后果就是无法让多个页面php,去共享同一份session文件.
如何解决问题? 从cookie sessoin 和http协议入手解决
请问? 如果客户端禁用cookie,怎样实现session技术共享多个页面?
答:
(1)在每个超链接上添加一个PHPSESSID=sesssionId;同时在每个页面加入:
if(isset($_GET[‘PHPSESSID’]){
//设置sesssion_id
session_id($_GET[‘PHPSESSID’]);
}
session_start();...

(2)使用常量SID
使用方法如下:
在超链接action header(“Location: xx”) 可以直接拼接SID常量即可
echo "<ahref='ShopProcess.php?bookid=sn003&bookname=西游记&".SID."'>西游记</a><br/>";
(3) 可以启用session.use_trans_sid 指定是否启用透明SID 支持 即可以这样设置
ssssion. use_trans_sid = 1 ,这样重启apache即可生效.
具体处理代码:
MyHall.php
<?php
if(isset($_GET['PHPSESSID'])){
session_id($_GET['PHPSESSID']);
}
session_start();
//echo "sid====".SID;

echo "<h1>欢迎购买</h1>";
echo "<ahref='ShopProcess.php?bookid=sn001&bookname=天龙八部&".SID."'>天龙八部</a><br/>";
echo "<a href='ShopProcess.php?bookid=sn002&bookname=红楼梦&".SID."'>红楼梦</a><br/>";
echo "<ahref='ShopProcess.php?bookid=sn003&bookname=西游记&".SID."'>西游记</a><br/>";
echo "<ahref='ShopProcess.php?bookid=sn004&bookname=聊斋&".SID."'>聊斋</a><br/>";
echo "<hr/>";
echo "<a href='ShowCart.php?".SID."'>查看购买到的商品列表</a>";
?>

ShopProcess.php
<?php
//接收用户购买请求,并把书保存到session中.
//保存到session中
if(isset($_GET['PHPSESSID'])){
session_id($_GET['PHPSESSID']);
}
session_start();
$bookid=$_GET['bookid'];
$bookname=$_GET['bookname'];
$_SESSION[$bookid]=$bookname;
echo "<br/>购买商品成功!";
echo "<br/><ahref='MyHall.php?".SID."'>返回购物大厅继续购买</a>";
?>

ShowCart.php
<?php
echo "<h1>购物车商品有</h1>";
//这里不能让服务器创建一个新的session
if(isset($_GET['PHPSESSID'])){
session_id($_GET['PHPSESSID']);
}
session_start();
foreach($_SESSION as $key=>$val){
echo "<br/> 书号--$key 书名--$val";
}
?>

再看一个session的实际运用案例
如何防止用户非法登录.
loginProcess.php  增加:
if($name!=""){

//把登陆信息写入cookie 'loginname':$name

//把登陆表 把登陆的人ip id..

//合法

session_start();

$_SESSION['loginuser']=$name;

header("Location:empManage.php?name=$name");

exit();

}

在编写commmon.php文件中添加了一个函数
//把验证用户是否合法封装函数
function checkUserValidate(){
session_start();
//先写在封
if(empty($_SESSION['loginuser'])){
header("Location:login.php?errno=1");
}
}

在需要防止用户非法登录页面中引入这样两句(这两句话,放在页面的开头)
require_once 'common.php';
checkUserValidate();

posted @ 2016-12-25 17:55  371502685  阅读(1984)  评论(0编辑  收藏  举报