一般而言:
play2.php
play3.php
如果Cookie被浏览器会话禁用,则无法使用。
最常见的情况是手机浏览器。 在手机浏览器中,默认情况下Cookie是禁用的。
但是Session和Cookie是密切相关的。 因为使用cookie值服务器可以调用当前正在请求哪个用户。
解:
为了使解决方案易于理解,我制作了三个php文件。
play.phpplay2.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