• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:詳しく解説お願いします)

クッキーセット直後、クッキーを参照することは無意味?

神崎 渉瑠(@taloo)の回答

回答No.3

>クッキーセット直後、同一プロセスからクッキーの環境変数を参照することは無意味です。 通常の処理の流れは以下のようになっています。 クライアント処理(フォームの表示、フォームの送信)     ↓     サーバー処理(クッキー発行、この時点でHTTP_COOKIE環境変数は空)  ↓ クライアント処理(クッキー受付、保存、HTMLデータ表示)  ↓ クライアント処理(ページジャンプ)     ↓     サーバー処理(クッキー受信、HTTP_COOKIE環境変数は以前発行したクッキーの内容) 2回目にアクセスした時にしか環境変数からデータを受け取る事は出来ません。 1回目のサーバー処理でクッキーの内容を調べたいのであれば、環境変数ではなく、発行する時の文字列(変数。具体的にはグローバル変数のvalueset)をそのまま参照してください。 (ただしvaluesetにはフォームの内容が期待通り代入されていること。) また、2回目のアクセスでは1回目のプロセスは終了していますから、プロセスのメモリ(共用メモリ?)を参照する事は出来ません。 1回目の処理の内容を確認する必要が有れば、ファイルに保存する等してデータの受け渡しを行わなければなりません。 (いわゆるセッションです。その処理の一部として使用するものがクッキーです。)

参考URL:
http://www.boutell.com/cgic/
nanaka2222
質問者

補足

ありがとうございます ある程度処理の流れが把握できました。 クッキーを使わないでデータを書き込んでの処理はある程度はできるのですがクッキーを使うと難しいですね クッキーを使わないとデーターが膨大になりすぎるのは困り物なのでクッキーを使っての処理を身に付けないといけませんね。jj

関連するQ&A

  • サーバプロセスとクライアントプロセスの通信

    サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (1)TCPコネクション  サーバ側ポート番号【23】と、それぞれのクライアント側ポート番号【****】との間に確立する。   (2)通信処理  クライアント側のプロセスAは、サーバ側のプロセスA(子)  クライアント側のプロセスBは、サーバ側のプロセスB(子)  クライアント側のプロセスCは、サーバ側のプロセスC(子)  との間で通信を行う。 ※添付の図も参照ください。 認識に相違ないでしょうか。 サーバプロセスとクライアントプロセスの通信を行う際、プロセス間(ポート間?)の通信には、IPアドレスとポート番号を組み合わせたソケットを用いるため、サーバ側ではソケット【192.168.0.1:23】を1個作成し、クライアント側ではソケット【192.168.0.2:****】をプロセス分作成すると考えています。 このとき、クライアントプロセスAはサーバプロセスA(子)と通信を行いますが、サーバ側で作成されているソケットは1つであるため、どの子プロセスに対してデータをせばいいのか判別できないのではないかと考えています。 ※クライアントプロセス(A、B、C)はソケット(サーバ側)【192.168.0.1:23】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。

  • ジョブの切り離し

    クライアント(Windows)とサーバ(Unix)の通信アプリを作っています。 ソケットプログラムはクライアント側はVBで、サーバ側はCです。 データの送受信はうまくいきました。ところが、データを送信後サーバ側でデータを解析し、その結果を印刷するというしくみなのですがこの全処理が終わらないとクライアント側に送信終了のイベントが発生しません。 クライアント側がデータを送信したら、あとはサーバ側で処理をする、というふうにしたいのです。 そこでサーバ側のアプリは次のような構造になっています。 App1(ソケットアプリ) exec でApp2 を起動 App2(データの送受信) wait あり exec でApp3 を起動 App3(データ解析)              wait なし exec でApp4,App5 を起動 wait あり、sleep あり App3以降で時間がとてもかかります。wait,sleep が入っているからですが、これはデータ解析する上で必要な手順です。データの送受信はApp2までで終わっているので、App3のプロセスを発行したらソケット切断にしたいのですが、App3が全て終わるまで待ってしまいます。 起動のさせ方でなんとかならないものかと思うのですが、どうぞアドバイスを宜しくお願いいたします。

  • phpで異なるクライアント間で同じ変数を参照したい

    php初心者です。 タイトルの通り、異なるクライアント間で同じ変数を参照したいのですが、SESSION変数やSERVER変数ではできないようなので質問させていただきました。 具体的には、チャットシステムを組んでいます。 チャット内容など詳細なデータはデータベースに記録しているのですが、更新確認のたびにデータベースを呼び出していては遅くなるのではないかと考え、更新があったかどうか(最終更新日時とか)を複数のクライアントが参照できる変数に格納したいのです。 なお、チャットの実装方法としては、クライアント側から定期的(数秒ごと)に更新確認をさせています。ソケット通信というものも試したいのですが、現在の環境ではできないため見送りました。 異なるクライアント間で参照できる変数はありますか?または定義できますか? それともデータベースを毎回呼び出していても速度的には問題ないでしょうか?

    • ベストアンサー
    • PHP
  • Yahooメッセンジャーのビデオチャット

    BBルータ配下の2台のPCにおいて,同時にYahooメッセンジャーの ビデオチャットをすることは可能でしょうか? ビデオチャットはTCP/UDPの5100番ポートが使用されることはわかったのですが, 色々な説明サイトを参照する中,NATのポートマッピングが必要との情報を 得ました. ポートマッピングが必要ということは,Yahooメッセンジャーを起動しているPCは ソケットのサーバプロセスとしてデータを受信し,Yahoo側のビデオサーバが クライアントプロセスとしてデータを送信という形式になっているのでしょうか? もしそうだとしたら,ポートマッピングでは実現が無理なような気がしております. また,ボイスチャット(音声)のほうは,特にポートマッピングをしなくても 音声送受信できていますが,こちらはPC側がソケットのクライアントプロセスとして データを受信しているからなのでしょうか? 以上のことから,多分2台同時ビデオチャットは不可能なのかと考えておりますが, もし,解決策などありましたらよろしくお願いします.

  • サーバにはACCESSがインストールされていなくても、データの管理は可

    サーバにはACCESSがインストールされていなくても、データの管理は可能ですか? サーバOS:WinXP(SP3) クライアントOS:サーバと同じ サーバにはデータ部を配置(data.mdb) クライアントにはプログラム部を配置(program.mdb) クライアント側からデータを入力し、サーバのdata.mdbへデータを書き込みます。 このような状態で、サーバにはAccess(Officeすべて)をインストールしていなくても データの管理は可能ですか? サーバから直接data.mdbの参照等は一切できないでしょうが、データの管理について 何か問題がありますでしょうか? どなたか回答お願いします。 ※参考 Office2007Proをクライアントにインストールしてます。

  • プロセスを指定してsend??

    先日から引き続きなのですが、またIPCでつまってしまいました。 現在プロセス間でデータをお互いにやり取りをしているのですが、 serverからclientにデータを送ったときは正しく送れているのに、 その後clientで処理をして、再びserverに返すときには、うまく返りません。 client側は送っているようなのですが、 serverが受け取っていません。 clientが自分自身に送ってしまっている可能性があるようです。 現在は同一マシン内で作業しているので、 二つともIPアドレスが同じだからだと思うのですが、 これを解決する方法はあるのでしょうか? send、recvするときにプロセスを指定することは可能でしょうか? 教えていただけるとありがたいです。

  • データ 受け渡し

    サーバに主なプログラムを作り、クライアント同士が対戦するゲームを作ろうと考えているのですが、サーバとクライアントのデータの受け渡しはどうすればいいのでしょうか? 例えばビンゴゲームならサーバ側のプログラムで、クライアントの画面の数字をだすなどです。 どのようにデータを受け渡すかがわかりませんのでお願いします。

  • VC++2008Expressでwin32appとwinsockの勉強

    VC++2008Expressでwin32appとwinsockの勉強の為にネットワークゲームを作ろうと思ってます。 winsockについて色々調べているうちに、疑問がわいたので質問します。 実現したいのは、サーバーとクライアントが1:Nのネットワークゲームです。 プレイヤーはサーバーに接続し、部屋に入ります。 誰かが初めて部屋に入ったら、サーバー側で部屋を用意します。(複数の部屋が立つこともあります) サーバー側で用意された部屋は、タイマーのイベントで部屋の状況データが変ります。 また、部屋にいるプレイヤーがアクションを起こす度に、サーバーの状況データが変ります。 その状況データを部屋に居る1人以上のプレイヤーで参照し共有します。 またプレイヤーデータはサーバー側で全部を一括管理します。 このような、プログラムを作りたいと思ってるんですが、 例えばサーバー側でwinsockは待ちうけ(accept)の所でプログラムは止まってしまいますよね。 クライアント側では受信(recv)の所で止まりますよね。 サーバー側やクライアント側で通信を待ち受けながら、 タイマーやマウスクリックに対するイベント処理を同時に行うことは可能なんでしょうか。 出来るとしたら、どのような仕組みにする必要があるでしょうか。 よろしくお願いします。m(_ _)m

  • winsock 送受信

    VB6を使っていますが、詳しくないので質問させていただきます。 とりあえず同じPCでwinsockを用いてサーバとクライアントを接続させてデータを送受信するプログラムをつくっています。 データの送受信senddataとDataArrivalのところで悩んでいるのですが、senddataを数箇所用いていて、送ったデータは GetData 変数 により全て同じ変数にされてしまいます。 サーバでtemp=10とi=1のデータを送ると、クライアントでもそのtemp=10とi=1のデータ両方が使いたいわけですが、どうすればいいでしょうか?

  • サーバ側とクライアント側で共通の内容の環境変数ってありますか?

    サーバ側とクライアント側で共通の内容。。 例えば、WebへのLoginユーザなどは、サーバ側では、 REMOTE_USERで受け取れると思うのですが、 クライアント側でもWebへのLOGINの情報が、VBで取得できるような環境変数とかに、入っているのでしょうか? やりたいことは、サーバ側で、クライアント個別のファイルを作成して、クライアント側に保存されているEXEで、そのファイルにアクセス したいと思っております。 その場合、クライアントのEXEが取得できるような環境変数は あるのでしょうか? 例) クライアント  aiueo(WebへのLogin) ・・・(1)      ↓    サーバ   aiueo・・・(REMOTE_USERで取得)         (サーバ側でaiueo.txt作成し、URLで          クライアントのTEST.EXEを指定したWeb          ページを作成)      ↓      クライアント TEST.EXEは実行できます         aiueo.txt←((1)のLoginがクライアントの                TEST.EXE[VB]で取得               することは可能ですか?) ※サーバとクライアントで同じ内容を見れるものであれば、  どんなものでも結構です。  教えてください。 説明がわかりづらくて済みません。