shi*_*hra 5 php cookies session
我正在寻找会话和 cookie 之间的主要区别以及何时使用会话和 cookie。请澄清。谢谢
正如另一个用户链接到的那样,是的,他们可以,有一些配置选项可以让 php 不使用 cookie,而是依赖将会话 ID 作为 url 的一部分传递。您可以手动执行此操作,也可以要求 PHP 执行此操作。如果 PHP 设置为自动添加 ID,那么它会使用输出缓冲来替换它在输出中检测到的任何 url,默认情况下它会对某些标签(a、表单等)执行此操作。
请参阅此处的选项:http ://php.net/manual/en/session.configuration.php
session.use_cookiesboolean session.use_cookies 指定模块是否使用cookie在客户端存储会话id。默认为 1(启用)。
session.use_trans_sidboolean session.use_trans_sid 是否启用透明 sid 支持。默认为 0(禁用)。
session.trans_sid_tagsstring session.trans_sid_tags 指定启用透明 sid 支持时重写哪些 HTML 标记以包含会话 id。默认为a=href,area=href,frame=src,input=src,form= form是特殊标签。添加为表单变量。
另请注意其警告:
注意:与基于 cookie 的会话管理相比,基于 URL 的会话管理具有额外的安全风险。例如,用户可以通过电子邮件向其朋友发送包含活动会话 ID 的 URL,或者用户可以将包含会话 ID 的 URL 保存到其书签中并始终使用相同的会话 ID 访问您的站点。从 PHP 7.1.0 开始,完整的 URL 路径,例如https://php.net/,由 trans sid 功能处理。以前的 PHP 仅处理相对 URL 路径。重写目标主机由session.trans_sid_hosts定义。
一般来说,会话确实使用cookie。您询问会话和cookie之间的区别;虽然没有真正的可比性,但这里有一些关于它们的信息:
Cookie 是一种在浏览器存储中本地存储简单键/值对的方法,然后可以在浏览器重新启动之间保留,但用户可以擦除它们。Cookie 的总大小不能超过 4KB(请参阅网络浏览器 cookie 密钥的最大大小是多少?)
来自文档: 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"];
Run Code Online (Sandbox Code Playgroud)
当你调用session_start()php 时,它会检查 cookie,看看它是否已经设置了“会话 ID”,如果没有,则设置一个。然后,它使用此 ID 来识别用户/会话,并允许您在服务器上临时保存属于此 ID 的数据。每次调用 session_start 时,它都会填充 $_SESSION,并在每个脚本结束时保存它。这确实意味着如果页面都使用会话,则它们无法同时加载。一些很好的会话示例可以在这里看到: https: //www.w3schools.com/php/php_sessions.asp
会话本身没有限制,但受到其他因素的限制(请参阅PHP 会话的最大大小)