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

标签 php session-variables session-cookies

当我使用时:

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/

相关文章:

php - 方法中的静态变量不会在实例未设置时重置

node.js - 在 NodeJS 中存储临时变量

Node.js Express-Session 代理选项有什么作用?

javascript - 如何在javascript中将cookie更改为session

ruby-on-rails - 未设置安全 session cookie

php - 正则表达式 - preg_match 拉丁和希腊字符

php - 在应用程序和网络之间共享数据库

php - 警告 : mysqli_num_rows() expects parameter 1 to be mysqli_result, 中给出的 bool 值

PHP $_SESSION 可以容纳大文件吗?

session-cookies - 即使 session 关闭也存储 cookie