微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中使用session_name() – 无法访问数据

我用的时候:

session_name( 'fObj' );
session_start();
$_SESSION['foo'] = 'bar';

随后加载页面并运行:

session_start();
print_r( $_SESSION );

不返回会话数据.

如果我删除session_name();它工作正常.

有谁知道如何使用具有不同会话名称的会话?

更新:

如果我运行上面的代码,作为两个页面加载,然后更改为:

session_name( 'fObj' );
session_start();
print_r( $_SESSION );

我可以访问数据.但是,如果它只在我第一次加载没有该行的页面时才有效:

session_name( 'fObj' );

解决方法

John Robertson是正确的,他提到的陈述直接来自PHP手册( http://php.net/manual/en/function.session-name.php).

认情况下,您的会话名称来自PHP.ini变量’session.name’,通常设置为’PHPSESSID’.在每个启动请求时(如前所述),会话将重命名PHPSESSID,除非您在session_start()之前调用session_name(‘fObj’)
在每个页面上,所以page1:

<?PHP
  session_name( 'fObj' );
  session_start();

  $_SESSION['foo'] = 'bar';

第2页:

<?PHP
  session_name( 'fObj' );
  session_start();

  print_r($_SESSION);

随后,您可以转到PHP.ini设置并将session.name变量从PHPSESSID更改为fObj,并且您创建的所有会话的会话名称都将为fObj.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐