error_reporting(E_ALL);
session_start();
var_dump($_SESSION['user']);
require 'config/database.php';
var_dump($_SESSION['user']);
我有问题,因为我在包含databse.php文件之后失去了会话...
database.php中
$user = "xxx";
$password = "xxx";
$database = "xxx";
$server = '98.x.x.126';
mysql_connect($server, $user, $password);
mysql_select_db($database);
PHP ver:5.2.17,共享服务器。在我的本地服务器上,5.3和5.4工作正常。
更新:我完全没有丢失会话,只是将用户值更改为数据库名称?
UPDATE2:
var_dump($_SESSION['user']);
$user = "denes_lucky";
var_dump($_SESSION['user']);
$password = "123456X3M";
var_dump($_SESSION['user']);
$database = "denes_lucky";
var_dump($_SESSION['user']);
$server = '98.130.0.126';
var_dump($_SESSION['user']);
mysql_connect($server, $user, $password);
var_dump($_SESSION['user']);
mysql_select_db($database);
var_dump($_SESSION['user']);
问题出在$ user =“xxx”;
之后答案 0 :(得分:2)
关闭register_globals
或php.ini
.htaccess
开启时 - 指定$user = 'foo';
也修改了$_SESSION['user']
变量的内容。
答案 1 :(得分:1)
问题是您运行的是过时版本的PHP并且已启用register_Globals
设置。 register_globals
是PHP中的一项功能,它使会话和请求变量成为全局变量。这意味着$ _SESSION ['user']和$ user引用相同的变量。
最好的解决方案是在php.ini中转换register_globals
(甚至更新到最近没有该功能的PHP版本)
解决方法是重命名其中一个变量。
另请参阅:http://php.net/register_globals和http://php.net/security.globals