【问题标题】:PHP set PHPSESSIDPHP 设置 PHPSESSID
【发布时间】:2014-08-03 05:18:43
【问题描述】:

我正在尝试根据从 CURL POST 收到的值设置 PHPSESSID。但是,当我将它分配给 session_id() 时,它没有设置。第一个 echo 语句是 curl 帖子中正确的 PHPSESSID。但是,第二个回显返回空。有什么想法吗?

PHP

//set current session id
session_id($sessID[1]);
echo "current SessID: " . session_id();

//start session
session_start();
echo "PHPSESSID: " . $_COOKIE['PHPSESSID'];

【问题讨论】:

  • 在执行session_start()之前你不能回显anything

标签: php curl session-cookies


【解决方案1】:

PHP 的超全局变量在脚本启动时填充数据,然后 PHP 在脚本的整个生命周期内再次接触它们。您的新会话 ID 只会在新会话 cookie 有机会通过客户端浏览器往返之后显示在 NEXT 请求中。

【讨论】:

  • 我相信在调用 session_start() 之前不会设置 $_SESSION,否则您无需调用 session_start() 即可在以后的页面调用中从 $_SESSION 获取变量。
  • 那么是否可以在标头重定向之前设置 phpsessid cookie?
  • 当然。 setcookie() 将设置一个标头,该标头与其余标头一起出现,包括重定向。但是在客户返回您的站点之前,新的 cookie 不会出现在 $_COOKIE 中。
【解决方案2】:

在执行session_start() 之前,您不能回显任何内容。根据文档:

注意:要使用基于 cookie 的会话,必须调用 session_start() 在向浏览器输出任何内容之前。

http://us3.php.net//manual/en/function.session-start.php

您现在拥有它的方式是弄乱 cookie。而且你不想弄乱饼干。 :) 最终结果是客户端永远无法识别会话 id cookie。

【讨论】:

  • 我在输出任何内容之前删除了 echo 语句,它没有设置 PHPSESSID cookie。知道为什么没有吗?
猜你喜欢
  • 1970-01-01
  • 2011-10-12
  • 2014-12-28
  • 2019-06-05
  • 1970-01-01
  • 2012-04-10
  • 2016-12-16
  • 2013-08-19
相关资源
最近更新 更多