我正在用PHP创建一个简单的脚本,文件很少,在'loginForm.php'中我有代码:
<?php
session_start();
$login = $_GET['login'];
$password = $_GET['password'];
$remember = $_GET['remember'];
include_once("login.php");
$userAccount = new UserAccount($login, $password);
$logged = $userAccount -> isLogged();
(...)
并在文件'photo.php'中:
global $userAccount;
$login = $userAccount -> getLogin();
是什么让mi出错:
在非对象
上调用成员函数getLogin()
我也试过$ GLOBALS - 结果相同。
答案 0 :(得分:0)
全局变量不能跨请求工作,但具有文件范围。
全局变量的典型用法,如果要有一个可以在不同范围内访问的变量(通常在同一个文件中有函数。
例如在file1.php
中<?php
$value = 1;
echo $value; // prints '1'
function f1() {
global $value;
$value++;
}
echo $value; // prints '2'
function f1() {
$value++;
}
echo $value; // prints '2'
?>
要在请求中使用变量,请使用会话。
答案 1 :(得分:0)
好的,现在我做了:
1)在AJAX请求文件中,我创建了一个Class UserAccount实例,它将存储在$ _SESSION数组中
<?php
include_once("login.php");
session_start();
$login = $_GET['login'];
$password = $_GET['password'];
$rememberMe = $_GET['remember'];
$userAccount = new UserAccount();
$userAccount -> LogIn($login, $password);
$logged = $userAccount -> isLogged();
$_SESSION['userAccountClassObject'] = serialize($userAccount);
2)在静态(非AJAX请求)文件'photo.php'中,它可以正常工作:
<?php
include_once("login.php");
$user = unserialize($_SESSION['userAccountClassObject']);
$login = $user -> getLogin();
3)但是在其他AJAX请求文件中 - addComment.php不幸地不起作用:
<?php
$id = $_GET['id'];
$comment = $_GET['comment'];
session_start();
include("login.php");
$user = unserialize($_SESSION['userAccountClassObject']);
$login = $user -> getLogin(); // Fatal error