【发布时间】:2017-02-21 22:26:10
【问题描述】:
我正在寻找主要区别黑白会话和 cookie 以及何时使用会话和 cookie。请澄清。谢谢
【问题讨论】:
我正在寻找主要区别黑白会话和 cookie 以及何时使用会话和 cookie。请澄清。谢谢
【问题讨论】:
作为另一个链接到的用户,是的,他们可以,php 有一些配置选项不使用 cookie,而是依赖于将会话 ID 作为 url 的一部分传递。您可以手动执行此操作,也可以让 PHP 执行此操作。如果 PHP 设置为自动添加 ID,那么它会使用输出缓冲来替换它在输出中检测到的任何 url,默认情况下它会在某些标签(a、form 等)上执行此操作
在此处查看选项:http://php.net/manual/en/session.configuration.php
session.use_cookies布尔值 session.use_cookies 指定是否 模块将使用 cookie 将会话 ID 存储在客户端。 默认为 1(启用)。
session.use_trans_sid布尔值 session.use_trans_sid 是否 是否启用透明 sid 支持。默认为 0(禁用)。
session.trans_sid_tags字符串 session.trans_sid_tags 指定哪个 当透明 sid 时,HTML 标记被重写以包含会话 id 支持已启用。默认为 a=href,area=href,frame=src,input=src,form= form 是特殊标签。被添加为表单变量。
还要注意它的警告:
注意:基于 URL 的会话管理具有额外的安全风险 与基于 cookie 的会话管理相比。用户可以发送一个 URL 包含通过电子邮件发送给朋友的活动会话 ID,或者用户可以 将包含会话 ID 的 URL 保存到他们的书签并访问 例如,您的站点始终具有相同的会话 ID。自 PHP 7.1.0,完整的 URL 路径,例如https://php.net/,由 trans sid 功能处理。以前的 PHP 只处理相对 URL 路径。重写目标 主机由 session.trans_sid_hosts 定义。
通常会话确实使用 cookie。您询问了会话和 cookie 之间的区别;虽然没有真正的可比性,但这里有一些关于它们的信息:
Cookie 是一种在浏览器存储中本地存储简单键/值对的方法,然后可以在浏览器重新启动之间持续存在,但用户可以擦除它们。 Cookie 总大小不能超过 4KB(请参阅What is the maximum size of a web browser's cookie's key?)
来自文档:http://php.net/manual/en/function.setcookie.php
$value = 'something from somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
// Print an individual cookie
echo $_COOKIE["TestCookie"];
当您调用session_start() 时,php 检查 cookie 以查看它是否已经设置了“会话 id”,如果没有设置。然后它使用它来识别用户/会话,并允许您将数据临时保存在归因于该 ID 的服务器上。每次调用 session_start 时,它都会填充 $_SESSION,并在每个脚本结束时保存它。这确实意味着如果页面都使用会话,则它们不能同时加载。可以在这里看到一些很好的会话示例:https://www.w3schools.com/php/php_sessions.asp
会话本身没有限制,但会受到其他因素的限制(请参阅Maximum size of a PHP session)
【讨论】: