- ベストアンサー
cookieを受け入れたかどうかをリロード前に知りたい
いつもお世話になっております。 かなり困っているのですが、cookieが配信されたかどうかをリロード前に取得する事は可能でしょうか? 現在cookieの配信と同時に、配信したIDをDBに入れる処理をしているのですが、cookieの受け入れを許可していないユーザが多いようで、無駄にデータがたまってしまっています。 可能であれば、cookieが配信できたかどうかをDBへ入れる前に取得して、処理を分けたいと思っているのですが・・・。 こういった構造自体が根本的によろしくないのでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Cookieは環境変数を介してしか受け取れないと思いますので、基本的にブラウザからのキックがなければ1フェーズで取得することは無理なのではないでしょうか?
その他の回答 (3)
- Xaval
- ベストアンサー率58% (61/105)
ページの取得は、 ブラウザ → サーバ → ブラウザ です。Cookieヘッダを送っても(2個目の矢印)、ブラウザからそのレスポンスは帰ってきません。 よって無理です。 トップページでリダイレクトをさせるか、 携帯などの端末向けと同じく、 クッキーレスセッション方式を使うといいと思います。
お礼
ご回答ありがとうございます。 やっぱり無理なんですね。 とりあえずリダイレクトさせる方法で対応いたしました。 本当にありがとうございました。
- kusukusu
- ベストアンサー率38% (141/363)
いえ、cookieをセットした後にし判別し、処理2で、「DBへの登録がないのであれば登録」すればいいんじゃないですか?
お礼
度々ご回答ありがとうございます。 setcookieの後に教えて頂いたように書いても、その時は処理1を通ってしまうのです。 (処理1ではcookieの配信ができなかったというエラーメッセージを出したい) 配信した後リロードさせると処理2を通るので、上記の処理もわかるのですが、この方法ということでしょうか? それとも本来はこの書き方で同時にうまくいくはずなのでしょうか? 間違っているかもしれないので再度試してみます。 ありがとうございました。
- kusukusu
- ベストアンサー率38% (141/363)
if($_COOKIE["xxxx"]==false { 処理1 }else { 処理2 }
お礼
ご回答ありがとうございます。 頂いた回答だと、cookie配信時には必ずfalseになって処理1を通ってしまいます。(cookieを配信していても) リロード時には当然処理2を通るのですが。
お礼
ご回答ありがとうございます。 やっぱりそうですか・・・。 色々調べていて多分無理だとは思っていたのですが、困ったなぁ。 無理だということがわかったので、別のの方向で対策を寝ることにします。 ありがとうございました。