PHP和类-写入会话覆盖本地变量



我有一个index.php,内容如下:

include_once('includes/auth.php');
include_once('classes/class.DatabaseQuery.php');
include_once('classes/class.Project.php');
include_once('classes/class.User.php');
$project = new Project();
$user = new User();
// HTML, HEAD, BODY
$usergroup = $user->getUserGroup($_SESSION['user']);
// ...

所以我在index.php中包含了所有需要的类。我还在这个文件中创建了一个类的实例。然后我有我的类文件(例如class.Project):

class Project {
private $db;
private $evaluation;
public function __construct($id=null){
    $this->setPreferences();
}
private function setPreferences() {
    $this->db = new DatabaseQuery();
    $this->evaluation = new Evaluation();
}

public function getSomething(){
    if($this->evaluation->checkSomething(1)){
        echo "test";
    }
}
 // ...
}

在这些文件中,我将其他类声明为私有变量。然后我访问其他类的方法。

在其他类中包含和使用私有变量是否存在任何问题?

现在我有一个奇怪的问题。如果我将一个值写入$_SESSION['user'],我的私有变量user将被覆盖。在会话中写入内容之前,会话值已被填充。这是我的login.php:

    include_once('classes/class.User.php');     
    session_start();
    $username = $_POST['username'];
    $password = $_POST['password'];
    $user = new User();
    if ($user->checkLoginData($username, $password)) {
        $_SESSION['userID'] = $user->getUserIDForName($username);
        // it is an object
        var_dump($user);
        $_SESSION['user'] = $username;
        // it is a string
        var_dump($user);
        // ...
    }

$_SESSION['user']=$username如何更改局部变量$user的内容?也许你知道我做错了什么。

解决方案:

现在我听从了这里的建议,register_globals应该在这里打开。例如,使用htaccess:

php_value register_globals 0

似乎有效。

最新更新