1
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"の後です。

4

2 に答える 2

2

register_globalsあなたphp.iniまたはでオフにする.htaccess

それらがオンになっている場合-割り当てによって変数$user = 'foo';の内容も変更されます。$_SESSION['user']

于 2012-12-17T10:44:22.680 に答える
1

問題は、古いバージョンのPHPを実行していて、register_Globals 設定がオンになっていることです。register_globals セッション変数とリクエスト変数をグローバル変数にするPHPの機能でした。これは、$ _SESSION['user']と$userが同じ変数を参照していることを意味します。

最善の解決策はregister_globals、php.iniを有効にすることです(または、この機能を備えていない最新のPHPバージョンに更新することもできます)。

回避策は、これらの変数の1つを名前変更することです。

参照: http: //php.net/register_globalsおよびhttp://php.net/security.globals

于 2012-12-17T10:44:34.100 に答える