1

ファイル A.php には、データベースからデータを取得し、class.php に接続して各データセットのオブジェクトを作成する while ループがあります。その部分はうまく機能します。
そのループ内で、新しいオブジェクトが作成された後、各オブジェクトをその id 値で定義された SESSION に保存しようとします

ファイル A.php:

$_SESSION[$pObject->id] = $pObject;

if (isset($_SESSION[$pObject->id]))

{

echo "SESSION $pObject->id is set"; 

}

作成されていることを確認しました。

今、GET を介してファイル B.php にオブジェクト ID 値を送信するフォームがあり、値が受信されたことを確認しました。

ファイル B.php:

require_once 'class.php';

session_start();

$id = $_GET['id'];

echo $id;

//Now $id is in my new file, so I try to call my SESSION

if(isset($_SESSION[$id]))

{

echo "SESSION $id is set";

$pObjectCurrrent = $_SESSION[$id];

}

else{

echo "SESSION $id is Not set";

}

問題は、ファイル B.php がファイル A.php の値と等しいにもかかわらず、$idファイル B.php が設定されておらず、値がないことです。代わりに、未定義の変数エラーが発生します。どんなアイデアでも大歓迎です。$pObject->idSESSION[$id]

4

1 に答える 1

1

セッション変数名として整数を使用することはできません。

次のようにセッション変数を設定できます。

$_SESSION['obj' . $pObject->id] = $pObject;

次に、次のように B.php から取得します。

echo $_SESSION['obj' . $id];

基本的に、ID と文字列が連結されるため、変数名は「obj5」、「obj2」などになります。

また、セッション オブジェクトで大量のデータを渡す場合は、シリアル化や、セッション データを DB に保存するなどの代替手段を調査することをお勧めします。

于 2012-09-14T13:07:53.640 に答える