setcookie()和$ _SESSION与session.use_only_cookies有什么区别?

Goo*_*bot 5 php cookies session session-cookies

我们可以通过以下方式向访问者的浏览器发送一些cookie setcookie().使用$_SESSION['value'](如果使用)定义值时,session.use_only_cookies会话将仅存储在访问者的浏览器中.这两种情况有什么区别?

编辑:显然,它们基本上是不同的.我只是意味着他们的应用程序的差异.我们可以在客户端设置一个值,可以随时使用$ _COOKIE或$ _SESSION同时检索(在课程到期之前); 例如,识别回访者.

Sav*_*man 6

不,当您设置时session.use_only_cookies,会话中的数据不会存储在客户端.此设置仅影响在客户端和服务器之间传输会话ID的方式.

基本上有两种方式传输此会话ID:

  • 基于Cookie
  • 基于URL(使用像PHPSESSID = ...的GET变量)

使用该设置时session.use_only_cookies,它会阻止使用URL传输会话ID,只能使用cookie.


Vol*_*erK 5

Cookie存储在客户端(即"在客户端/浏览器内").
_SESSION被序列化,然后存储在服务器上.此数据与会话ID相关联.例如,当使用默认文件系统会话处理程序时,文件名反映会话ID.客户端(或您的脚本)必须在后续请求中提供该会话ID,以便php的会话管理可以/将再次加载会话数据.一个机制是使用cookie.session.use_only_cookies=On让php的会话机制只查看cookie中的会话ID.


mar*_*kli 5

这些是完全不同的东西:

  1. setcookie()在浏览器中设置cookie,但这通常不是会话cookie.您创建的会话cookie session_start().
  2. $_SESSION[] 在服务器端为会话设置/获取值.
  3. session.use_only_cookies 将确保会话ID仅与cookie一起发送,而不是例如在url中发送.