首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在URL中发送PHPSESSID?

如何在URL中发送PHPSESSID?
EN

Stack Overflow用户
提问于 2009-08-07 10:44:54
回答 4查看 13.6K关注 0票数 8

我尝试通过HTTP GET变量为无cookie的客户机发送PHPSESSID。

我已经在不同的drupal实现中看到了这一点,其中?PHPSESSIONID=123ABC被附加到每个链接,但是我如何在PHP中指定这一点,有什么方法可以将GET参数更改为?token=123ABC,或者甚至通过HTTP POST发送?

标准LAMP堆栈,运行Zend框架。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-07 10:54:23

使用或不使用cookie由以下PHP选项配置:

  • session.use_cookies
  • session.use_only_cookies

如果设置了第一个,则会尽可能使用cookie。

PHP应该检测是否启用了cookie,并仅在客户端支持它们时才使用它们。

要启用通过GET而不是cookies传递会话id,您可能必须激活session.use_trans_sid,这在默认情况下是禁用的(这意味着,默认情况下,会话id只通过cookies传递,而不是通过GET传递)。

但请注意,激活此选项后,PHP将通过GET传递会话id,至少对于站点的每个用户将访问的第一个页面...因为他们一开始不会有cookie,检查他们是否支持cookie的唯一方法是设置一个,并尝试在下一页重新阅读它。

而那些不支持cookie的用户,包括我可能会说的搜索引擎,将拥有这个会话id --这可不好用:-(

而且,您可能还希望查看session.name来设置密钥的名称(我的意思是设置为"token“,而不是"PHPSESSID”)

有关更多详细信息,请参阅手册的Session Handling部分:-)

票数 10
EN

Stack Overflow用户

发布于 2009-08-07 10:48:29

您可以在php.ini文件中使用session_name()session.name (或使用ini_set())更改PHPSESSID。

对于无cookieless客户端,有session.use_trans_sid php.ini选项-您应该意识到这可能会导致问题-例如,用户相互传递带有会话in的URL,或者搜索引擎拾取此类URL。

票数 2
EN

Stack Overflow用户

发布于 2009-08-07 11:29:05

手动执行此操作:

代码语言:javascript
运行
复制
if ($_REQUEST['token'])
  session_id($_REQUEST['token']);
session_start();

print("foo=".$_SESSION['foo']++."<br />".
      "<a href={$PHP_SELF}?token=".session_id().">link</a><br />");
print("<form method=POST>".
      "<input type=hidden name=token value=".session_id()." />".
      "<input type=submit /></form>");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1244087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档