• 締切済み

PHPでセッションに入れたクラスの変数が消える

こんにちは。 PHPでセッションを使っていて困ったことが怒りました。 セッションに入れたクラスインスタンスの中の変数が消えます。 一回目に参照したときは残っていますが、 2回目アクセスした時には無くなってます。 クラスインスタンスのメンバー変数に文字列など、PHP標準のものは残ってますが、メンバー変数にインスタンスを入れると、消えることが判明しました。 これはなぜですか?? よろしくお願いします。

みんなの回答

回答No.1

情報が足りなすぎです 問題のあるソースをできるだけ簡素化して載せるとかしないと 誰も回答してくれないかと session_startしてないとか?

utukusi
質問者

補足

すいませんでした。以下が自分が試した例です。 //オブジェクト <?php /*testオブジェクトクラス*/ Class TestObj{ var $commodityName = null; //商品名 var $price = null; //価格 } //1番目のページ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"> <title>SessionTest1</title> </head> <body> <form action="sessionTest.php" method="POST"> 物:<input type="text" name="comName" /> 値段:<input type="text" name="price" /> <input type="submit" value="送信しちゃおう"> </form> </body> </html> //2番目のページ <?php session_start(); include("object/TestObj.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"> <title>SessionTest1</title> </head> <body> <?php if($_SERVER['REQUEST_METHOD']=="POST"){ $obj = $_SESSION["cart"]; if($obj != null){ $obj = $_SESSION["cart"]; }else{ $obj = new TestObj(); } $obj->commodityName = $_POST["comName"]; $_price = $obj->price; $_price = $_price + $_POST["comPrice"]; $obj->price = $_price; $_SESSION["cart"] = $obj; echo "ポストされている"; }else{ echo "ポストされてはいない"; } ?> <table> <?php $obj = $_SESSION["cart"]; if($obj != null){ ?> <tr> <td>名前:<?=$obj->commodityName?></td> <td>価格:<?=$obj->price?></td> </tr> <?php }else{ echo "何も追加されていない"; } ?> </table> <a href="sessionKushon.php">次のページへいく</a> </body> </html> //3番目のページ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"> <title>SessionTest1</title> </head> <body> どうなってるの? <a href="sessionForm.php">最初にもどろうぜ。</a> </body> </html> //以上 このような感じで作ってみたんです。最初のページがsessionForm.phpで、ここで何か入力します。価格に数字を入れます。 送信ボタンを押して次のページ(sessionTest.php)に行きます。 期待していることとして、最初に入れた数値が表示されてほしいけど、 0になります。 さらに、次のページ(sessionKushon.php)に進むか、戻るを押して、最初のフォームページに行き、また何か入力して送信して次のページに行きます。 すると何も表示されません。 これはなぜでしょうか??お願いします。

関連するQ&A