112ba

当用户禁用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();

分类:

技术点:

相关文章:

  • 2021-12-22
  • 2021-06-25
  • 2021-12-14
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
  • 2022-02-17
猜你喜欢
  • 2022-03-02
  • 2021-09-06
  • 2022-02-05
  • 2021-12-20
  • 2022-02-14
  • 2021-11-05
  • 2022-01-20
相关资源
相似解决方案