PHP在mysql_connect之后删除会话

时间:2012-12-17 10:38:35

标签: php session

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”;

之后

2 个答案:

答案 0 :(得分:2)

关闭register_globalsphp.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_globalshttp://php.net/security.globals

相关问题