• ベストアンサー

セッションにオブジェクトを登録したい

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>

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

$_SESSIONは関数ではなく、globalな変数名ですので、このソースのような芸当はできません function BukkenData($data) {  $this->bukken = $data;  return $this->bukken; } $_SESSION["bukkendata"] = $bukkendata->BukkenData($_POST['bukken']); とかすれば出来ると思いますが、テストしてみてないのでわからんです

AYINA
質問者

お礼

おかげさまで、少しすすめることができました。とりあえ ず、コードが質問欄のものとは異なってきましたので、こ の質問はCLOSEしようと思っております。 しかしまだ完全に解決したわけではないので、また新たに 質問を出そうと思いますので、もしお時間をいただけますなら、 そちらのほうでよろしくお願いいたします。ありがとうございました。

AYINA
質問者

補足

どうもありがとうございます(^-^) SESSIONに値を登録するところまではできました。 でも、次ページでSESSION登録したデータを見ようと するとみれません。。。 もしわかりましたら、またよろしくお願いいたします。 非シリアル化がうまくできていないのかもしれません。

その他の回答 (1)

回答No.2

>でも、次ページでSESSION登録したデータを見ようと >するとみれません。。。 その次ページでちゃんと session_start()してます?

AYINA
質問者

お礼

どうもありがとうございます。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しようと思っております。 しかし、また新たに質問を出そうと思いますので、もしお 時間をいただけますなら、そちらのほうでよろしくお願い いたします。ありがとうございました。

関連するQ&A

専門家に質問してみよう