0

「loginForm.php」にいくつかのファイルを含む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 で試しました - 同じ結果です。

4

2 に答える 2

0

OK、今私はしました:

1) AJAX 要求ファイルで、$_SESSION 配列に格納される Class UserAccount のインスタンスを作成します。

<?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
于 2013-11-10T19:57:48.453 に答える
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'

?>

リクエスト間で変数を使用するには、セッションを使用します。

PHP でセッションを作成する最も安全な方法

オブジェクトを PHP セッションに保存する

于 2013-11-10T18:27:00.687 に答える