- ベストアンサー
セッションにオブジェクトを登録したい
PHPの初心者です。PHPのバージョンはphp4.3.1です。 セッションにオブジェクトを登録したいのですが、以下の ようにコーディングして実行すると、×印の部分でエラーになってしまいます。 BukkenData->bukkenの中に値を格納するところまではで きています。プリント文を入れて出力させましたが中に 値が入っていました。セッションにbukkendataオブジェクトを登録するところで失敗しているようです。 したいことは、Javaでいう「session.setAttribute」なのですが、どこが間違っているのか、教えていただきたく思います。どんなことでもよいのでお願いします。 <★classes.incの内容★> <?php class BukkenData { var $bukken; function BukkenData($data) { $this->bukken = $data; } } ?> <★test1.phpの内容★> <html> <body> <?php include("classes.inc"); session_start(); ?> ~ この部分でtest2で使う$_POST['bukken']を送信 ~ </body> </html> <★test2.phpの内容★> <html> <body> <?php include("classes.inc"); $bukkendata = new BukkenData; $bukkendata->BukkenData($_POST['bukken']); $_SESSION("bukkendata"); ←× ?> </body> </html> <★test3.phpの内容★> <html> <body> <?php include("classes.inc"); ?> SESSION:<?=$_SESSION['bukkendata']->bukken?> </body> </html>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$_SESSIONは関数ではなく、globalな変数名ですので、このソースのような芸当はできません function BukkenData($data) { $this->bukken = $data; return $this->bukken; } $_SESSION["bukkendata"] = $bukkendata->BukkenData($_POST['bukken']); とかすれば出来ると思いますが、テストしてみてないのでわからんです
その他の回答 (1)
- GuruGuru22
- ベストアンサー率51% (177/346)
>でも、次ページでSESSION登録したデータを見ようと >するとみれません。。。 その次ページでちゃんと session_start()してます?
お礼
どうもありがとうございます。session_start()を入れました。 session_start()をするのは、<html>タグの外でする のでしょうか?それとも中でするのでしょうか? 一応両方試してみましたが、うまくいきませんでした(T_T) お2人にアドバイスをいただき、今の時点で、test2内 で$_SESSION["bukken"]->bukkenを表示させると中身が はいっていることが確認できるようになっております。 test3内で$_SESSION["bukken"]->bukkenを表示させる と、エラーになって、何も表示されません。 エラーの内容は次のとおりです。 ---------------------------------------------------------------------------------------- PHP Notice: main() [<a href='http://www.php.net/function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class defi nition <b>bukkendata</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/html/test/test3.php on line 20 ---------------------------------------------------------------------------------------- とりあえず、コードが質問欄のものとは異なってきました ので、この質問はCLOSEしようと思っております。 しかし、また新たに質問を出そうと思いますので、もしお 時間をいただけますなら、そちらのほうでよろしくお願い いたします。ありがとうございました。
お礼
おかげさまで、少しすすめることができました。とりあえ ず、コードが質問欄のものとは異なってきましたので、こ の質問はCLOSEしようと思っております。 しかしまだ完全に解決したわけではないので、また新たに 質問を出そうと思いますので、もしお時間をいただけますなら、 そちらのほうでよろしくお願いいたします。ありがとうございました。
補足
どうもありがとうございます(^-^) SESSIONに値を登録するところまではできました。 でも、次ページでSESSION登録したデータを見ようと するとみれません。。。 もしわかりましたら、またよろしくお願いいたします。 非シリアル化がうまくできていないのかもしれません。