禁用Cookie时如何处理会话

一般而言:

如果Cookie被浏览器会话禁用,则无法使用。

最常见的情况是手机浏览器。 在手机浏览器中,默认情况下Cookie是禁用的。

但是Session和Cookie是密切相关的。 因为使用cookie值服务器可以调用当前正在请求哪个用户。

解:

为了使解决方案易于理解,我制作了三个php文件。

play.php
play2.php
play3.php

建立会议


<?php
//play.php
session_start();
?>
<form action="play2.php" method="post">
<input type=text name="name">
<input type=hidden value=<?php echo (session_name());?> name="session_name">
<input type=hidden value=<?php echo (session_id());?> name="session_id">
<input type=submit>
</form> 
在play.php会话中已创建

创建会话后,名称和ID将存储在隐藏字段中。

不需要存储两个隐藏字段。 必要的部分是

session_id() 。 还有一个文本字段将通过会话中的play2.php存储

//在会话中保存在play.php中创建的文本


<?php
//play2.php
$_COOKIE[$_POST['session_name']]=$_POST['session_id'];
session_start();
$_SESSION['myname']=$_POST['name'];
?>
Some informatoin
<br>
<br>
<a href="play3.php?session_name=<?php echo (session_name());?>&session_id=<?php echo (session_id());?>">go to next page</>  
这是魔法开始

有趣的是session_start()函数从中获取会话ID

$ _SESSION ['PHPSESSID'] 。 我们要做的是创建一个cookie名称PHPSESSID并存储来自POST数据的会话值。 之后,我们调用了session_stat()函数。 接下来是从文本字段到会话的值。

//从会话中还原保存在play2.php中的值


<?php
//play3.php
$_COOKIE[$_GET['session_name']]=$_GET['session_id'];
session_start();
echo $_SESSION['myname'];
?> 
Play3.php仅显示会话值,并且会话是根据GET数据创建的

From: https://bytes.com/topic/php/insights/892106-how-work-sessions-when-cookies-disabled

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值