• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Cookieを使ってオブジェクトの引渡しはできるか?.)

Cookieを使ってオブジェクトの引渡しはできるか?

a-kumaの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

serialize() はバイトストリーム表現を含むとある(→参考URL)ので、 きちんと cookie に保存されていないのではないかなあ。 base64encode() してから cookie に保存する、というのはどうでしょう? 勿論、unserialize() する前には、base64decode()ね。

参考URL:
http://uk.php.net/manual/ja/function.serialize.php
stanaka
質問者

お礼

 迅速なご返事ありがとうございます.まだ,続きでいろいろ聞くかもしれませんが,よろしくお願いします.

stanaka
質問者

補足

 すみません,言葉足らずだったかもしれません.質問の意味がうまく伝わっていないようですが・・・.  a-kumaさんのおっしゃる問題はまた別に発生するかもしれませんが,とりあえず,  serialize() → Cookie → unserialize()  という過程は正常に終了したとして,unserialize()で返ってきたオブジェクトを,きちんとClassA型として扱いたい(メソッド起動などを行いたい)のだが,どうすればいいのだろうか,というのが疑問点でした.  というのも,serialize()では,オブジェクトのプロパティは保存されるが,メソッドは保存されない,とphpのリファレンスに明記してあるからです.  今日はバイトのほうには出ていないので,前記の例でb.php側にClassAの定義がある場合についてはまだ実験していませんが・・・・.  関係のない話ですが,phpのクラスって,同じクラス内のメソッドを呼び出すにはどうしたらいいんですか?.  this->function_name();  ってやると,「そんな関数は知らん.」(多分そんな感じ)って言われるんですが・・・.

関連するQ&A

  • Re: Cookieを使ってオブジェクトの引渡しはできるか?.

     OKWebでは自己フォローができないみたいなので,改めます.QNo.63140,PHPカテゴリでの通しNo.32の質問の続きです.って言うか自己レス.  質問文中で大きな間違いをしているのがとても恥ずかしいので,訂正します. > setCookie( "cookie", serialize($obj), mktime("2010/8/1 00:00:00") );  mktime()ではなく,strtotime()です.何をやってるんだ俺は.  それから,実験ですが,オブジェクトのunserialize()時に同名のクラスの定義があっても,そのクラスのインスタンスとしては取り扱ってくれませんでした.  せっかくserialize()時にクラス名まで保存しているんだから,同名のクラス定義があったら読みに行ってくれたらいいのになぁ.  という,ぼやき混じりの無意味な自己レスでした.以上.回答してくださった方(a-kumaさんだけ?),どうもありがとうございました.

    • ベストアンサー
    • PHP
  • php インスタンスとオブジェクトの呼び方

    new obj = new Test(); という一文は、 「Testクラスのオブジェクト、objを作成している」という考えを持っています。 オブジェクトは物という概念で、 「Testクラス を new して、objインスタンスを作成している」 というのが正しいのでしょうか? 【objを Testオブジェクトと呼ぶのは間違っているのでしょうか? objは Testインスタンスと呼ぶのがやはり正しいのでしょうか?】 知り合いにも、インスタンスではなくオブジェクトと呼んでる人が多いのでわからなくなってきました。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • C#におけるObjectのキャストについて

    こんにちは。 C#におけるObjectのキャストについて、基本的なことにつまずいてしまいました。 以下のような継承関係にあるクラスで、InvalidCastExceptionが投げられてしまいます。 public class ClassA {} public class ClassA_Ex : ClassA {} ClassA_Ex ex = (ClassA_Ex)new ClassA(); キャストできない訳はないと思うのですが…。 何か大きな見落としがありそうですが、よろしくお願いいたします。

  • Cookieの保存について

    Cookieの保存をするのに、 setcookie() を使っているのですが、setcookie()を実行したページ内で、var_dump($_COOKIE); で調べると保存されているのですが、違うページに移動すると、なぜか前のページで保存したCookieが消えてしまいます。 なぜでしょうか? 行程は、次のようにやっています。 ページA setcookie("A","1",time()+3600*24*30); var_dump($_COOKIE); 結果  array(3) { ["A"]=> string(1) "1" ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } ページBへ移動 var_dump($_COOKIE); 結果  array(2) { ["B"]=> string(1) "2" ["PHPSESSID"]=> string(32) "a83f0de87ebd6c3717873d3b6f7506f7" } よろしくお願いします。 環境:PHP4.4.1+Apache2.0+Windows2003(SP1)+IE6(SP1)

    • ベストアンサー
    • PHP
  • cookieのログアウト処理

    setcookieを使って、cookieを取得させ、持っている人のみが見れるサイトを作りました。 しかし、ログアウトボタンの作り方がわからなくて悪戦苦闘しています。 ログインページをPHPで作って、ログインと同時にcookieを持たせて、 中のページ($HTTP_COOKIE_VARSを読ませるためだけに拡張子はphpですが基本HTML)に引っ張っています。 その中のページからログアウト(cookieを削除)させるにはどうしたらよいのでしょうか? すみませんが、お願いします。

    • 締切済み
    • PHP
  • Objectの型チェック

    $obj = new Car(); としたとき、 $obj変数がCarクラスのインスタンスであるということをチェックしたいのですが、どのような手段がありますでしょうか。 もしかして、PHPでは無理ですか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数の派生クラスオブジェクトを一括して取り扱う方法

    いつもお世話になっています。 C++でプログラムをしています。 classAの派生クラスとして、 classA-1、classA-2を作りました。 classAのオブジェクトには、 親クラスにおいて、重複しないIDを 定義しています。 classA{...} classA-1():public A classA-2():public A classA-1 A1[1000]; classA-2 A2[2000]; ここで、クラスAオブジェクト (派生クラスを含む)のうち、 特定のIDのオブジェクト、 例えば、ID=100番のものを 取り出して、何某かの処理をしたいのですが、 現在は、 for(i=0;i<1000;i++){ if(A1[i] == 100){...} } for(i=0;i<2000;i++){ if(A2[i] == 100){...} } のようにしています。 しかし、派生クラスの種類が増えてくると、 この方法はコーディング量が非常に増えて 非効率的です。 プログラム上も美しくありません。 できれば、 同じクラスなのですから、 for(i=0;i<1000;i++){ if(A[i] == 100){...} } のような形で一括して検索するようにしたいのです。 つまり1つの配列変数で 両方を扱えるようにしたいのです。 ただし、当該IDを持つ、ポインタさえ取得できれば、 それぞれの派生クラスに型キャストしてから 操作するつもりです。 target = (classA-2)A[5]; target.Action(); どなたか、参考URL、キーワード、アドバイス等 頂ければ助かります。 よろしくお願いします。 よろしくお願いします。 としており、効率的ではなくなってしまいます。

  • PHPでのCookie

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 form2.phpで一度更新しないと、結果が画面に表示されません。 これをform2.phpを開いた時点で表示されるようにするには、どのように書けばいいのでしょう。 後1つあります。form.phpで 「テスト&1」と書くと「テスト」としか表示されなく、&とそれ以降が記憶されません。 これはなぜでしょうか? お願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php if ($_POST) { $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); } parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • 条件によって別のクラスのインスタンスを作成する場合

    大きな条件分岐があって、その条件によって別のクラスを同じ名前でインスタンス化し、以降で使いたいのですが、うまくコンパイルが通りません。考えてみればifブロックの中だけで有効なインスタンスになってしまうので、当たり前かも知れません。どのようにすれば、使えるようになるのでしょうか。 以下にコードを載せます。正しい書き方を教えて下さい。 よろしくお願いします。 if(条件A){ classA object; // objectという名前でclassAをインスタンス化 }else{ classB object; // objectという名前でclassAとは別のclassBをインスタンス化 } object.methodA(); // objectのmethodA関数を使用したい

  • $_COOKIEについて

    はじめまして。 PHPを勉強中なのですが$_COOKIEを使った際にエラーになってしまいます。 それが何故なのか分からないのですが、この辺に詳しい方助けて下さい。 ↓↓状況は以下のとおりです。↓↓ ・開発環境:xampp、php、vista ・下記のスクリプトを記述してブラウザで表示すると、「1回目のアクセスです。」とともにエラー表示も出てきてしまう。 <?php if (isset($_COOKIE["count"])) { $count = $_COOKIE["count"] + 1; } else { $count = 1; } setcookie("count", $count); echo "${count}回目のアクセスです。"; ?> ・上記のスクリプトを実行した際のエラー表示は「 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs(ディレクトリ)php:182) in (エラーの行数) ・ちなみに、練習で作ってるだけなので同じページに、「setcookie」と「$_COOKIE」を使っている。(ただし、クッキー名などは、前に使っているのとは被らないようにしている) 以上です。 やりたい事は、ブラウザにCookieを送り、読み込むたびに「?回目のアクセスです。」の回数を増やしていきたいです。 しかし、これも出来ずに何度読み込みしても「1回目のアクセスです。」とエラー表示しかでません。 この質問で上手く伝わったかわかりませんが、ご見識ある方お力添え下さいませ。

    • ベストアンサー
    • PHP