在客户端设置多个 PHP cookie 的实际用途是啥
Posted
技术标签:
【中文标题】在客户端设置多个 PHP cookie 的实际用途是啥【英文标题】:What are the practical use of setting more than one PHP cookie in a client side在客户端设置多个 PHP cookie 的实际用途是什么 【发布时间】:2018-06-15 19:08:13 【问题描述】:我对php中的会话和cookie之间的关系有一个模糊的理解。据我了解,cookie 应该有助于在服务器端为客户端实现会话,但我需要澄清我今天进行的一些实验。
<?php
session_start();
setcookie("userCookie", "myCookie");
if( isset($_GET["sessName"]) && isset( $_GET["sessValue"] ) )
$_SESSION[filter_input(INPUT_GET, "sessName")] = filter_input(INPUT_GET, "sessValue");
foreach ($_SESSION as $sessNames)
echo $sessNames;
?>
<form method="GET">
<input type="text" name="sessName" placeholder="Session Name">
<input type="text" name="sessValue" placeholder="Session value">
<input type="Submit" >
</form>
?>
如果我在会话名称中提供值“foo”并提交,然后稍后从浏览器“chrome”中删除 userCookie,则用户输入仍将保留在会话中。但是,如果我从浏览器中删除“PHPSSID”cookie,留下“userCoookie”,用户输入将丢失。 这给我带来了一个问题,即向客户端发送多个 cookie “PHP 从 session_start() 开始托管 cookie 可以实现什么实际好处或用途”
【问题讨论】:
$_SESSION != $_COOKIE,它可能使用 cookie,但不应将其视为 cookie。 用途不同。 See this ...正如@LawrenceCherone 刚刚在他的评论中提到的那样。 你应该从在线资源、书籍等中真正了解“会话 cookie”和其他 cookie 之间的区别,而不是让这个社区教你。 我明白这一点,但是如果您在上面的示例中拥有多个 cookie,并且从浏览器中删除 PHP Cookie 会终止会话,那么如果 PHP 无法使用,则使用其他 cookie它保持状态 一个普通的 cookie 用于在浏览器关闭后保持应用程序状态,例如是否显示欢迎消息或某些菜单切换,或跟踪访问等。会话 cookie 用于在页面加载时保持状态。如果不想使用会话,请查看JWT。 【参考方案1】:如果您使用$_SESSION
,则无需设置任何cookie。
PHPSSID
cookie 被 PHP 用来跟踪会话。
【讨论】:
你能检查一下你的浏览器,看看有多少 cookie 来自堆栈溢出吗? 这不是真的。会话是短暂的,通常仅在您持续使用该站点时才会持续。 Cookie 可以保存数月或数年。 Cookie 也对客户端应用程序直接可见,会话仅在服务器上。以上是关于在客户端设置多个 PHP cookie 的实际用途是啥的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 或 JavaScript 在多个域上设置 cookie