我正在搜索主要差异黑白会话和cookie以及何时使用会话和cookie。请澄清。谢谢
答案 0 :(得分:2)
当另一个用户链接到,是的他们可以,有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路径。重写目标 hosts由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)