当我使用时:
session_name( 'fObj' );
session_start();
$_SESSION['foo'] = 'bar';
随后加载页面并运行:
session_start();
print_r( $_SESSION );
不返回 session 数据。
如果我删除 session_name();它工作正常。
有谁知道如何使用具有不同 session 名称的 session ?
更新:
如果我运行上面的代码,作为两个页面加载,然后更改为:
session_name( 'fObj' );
session_start();
print_r( $_SESSION );
我可以访问数据。但是,如果它只在我第一次加载没有行的页面时才有效:
session_name( 'fObj' );
最佳答案
John Robertson 是正确的,他提到的陈述直接来自 PHP 手册 (http://php.net/manual/en/function.session-name.php)。
您的 session 名称默认来自 php.ini 变量“session.name”,通常设置为“PHPSESSID”。在每个启动请求时间(如前所述), session 将重命名为 PHPSESSID,除非您在 session_start() 之前调用 session_name( 'fObj') 在每一页上,因此第 1 页:
<?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,这样您创建的所有 session 的 session 名称都将是 fObj。
关于php - 在 PHP 中使用 session_name() - 无法访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25438889/