• ベストアンサー

cookieを受け入れたかどうかをリロード前に知りたい

いつもお世話になっております。 かなり困っているのですが、cookieが配信されたかどうかをリロード前に取得する事は可能でしょうか? 現在cookieの配信と同時に、配信したIDをDBに入れる処理をしているのですが、cookieの受け入れを許可していないユーザが多いようで、無駄にデータがたまってしまっています。 可能であれば、cookieが配信できたかどうかをDBへ入れる前に取得して、処理を分けたいと思っているのですが・・・。 こういった構造自体が根本的によろしくないのでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • gentaro
  • ベストアンサー率47% (105/221)
回答No.3

Cookieは環境変数を介してしか受け取れないと思いますので、基本的にブラウザからのキックがなければ1フェーズで取得することは無理なのではないでしょうか?

q-tip
質問者

お礼

ご回答ありがとうございます。 やっぱりそうですか・・・。 色々調べていて多分無理だとは思っていたのですが、困ったなぁ。 無理だということがわかったので、別のの方向で対策を寝ることにします。 ありがとうございました。

その他の回答 (3)

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.4

ページの取得は、  ブラウザ → サーバ → ブラウザ です。Cookieヘッダを送っても(2個目の矢印)、ブラウザからそのレスポンスは帰ってきません。 よって無理です。 トップページでリダイレクトをさせるか、 携帯などの端末向けと同じく、 クッキーレスセッション方式を使うといいと思います。

q-tip
質問者

お礼

ご回答ありがとうございます。 やっぱり無理なんですね。 とりあえずリダイレクトさせる方法で対応いたしました。 本当にありがとうございました。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

いえ、cookieをセットした後にし判別し、処理2で、「DBへの登録がないのであれば登録」すればいいんじゃないですか?

q-tip
質問者

お礼

度々ご回答ありがとうございます。 setcookieの後に教えて頂いたように書いても、その時は処理1を通ってしまうのです。 (処理1ではcookieの配信ができなかったというエラーメッセージを出したい) 配信した後リロードさせると処理2を通るので、上記の処理もわかるのですが、この方法ということでしょうか? それとも本来はこの書き方で同時にうまくいくはずなのでしょうか? 間違っているかもしれないので再度試してみます。 ありがとうございました。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

if($_COOKIE["xxxx"]==false {   処理1 }else {   処理2 }

q-tip
質問者

お礼

ご回答ありがとうございます。 頂いた回答だと、cookie配信時には必ずfalseになって処理1を通ってしまいます。(cookieを配信していても) リロード時には当然処理2を通るのですが。

関連するQ&A