Re: wordpress上でのcookie設定について
永らくありがとうございました › フォーラム › その他 › wordpress上でのcookie設定について › Re: wordpress上でのcookie設定について
教えていただいたプラグイン「Lock a blog」を試してみましたが、
ちょっとイメージとは違うようでした。
クッキーを用いたリダイレクト処理のイメージとしましては…
───────────────────────────
1.特定のカテゴリに属する記事にアクセスがあった場合、クッキーの値をチェック。クッキーの値があればそのまま表示。なければ年齢認証ページにリダイレクト(ページIDをパラメータとして保持させる)。
2.年齢認証ページで「はい」・「いいえ」を選択させる。
「はい」の処理にはフォームを利用し、クッキーの値を閲覧ページへポストする。form actionにパラメータ(記事ID)を代入して1のページへ。
3.2でクッキー値が送信されるので、クッキーを保存し閲覧ができるようにする。
───────────────────────────
まず1の処理につきまして、single.phpのheader上部に以下を設置。
<code><?php<br /> //URLから「/」でディレクトリ名を分解し指定した変数に入れる<br /> $data = $_SERVER["REQUEST_URI"];<br /> list($domain,$dir_01) = explode("/",$data);<br /> <br /> if (isset($_COOKIE['age'])) {<br /> $age = $_COOKIE['age'];<br /> if($age == "yes") {<br /> header("Location: http://example.com/$dir_01/");//yesが入っている<br /> } else {<br /> if(isset($_GET['id'])) {<br /> $id = $_GET['id'];<br /> }<br /> header("Location: http://example.com/adgecheck/<?= $id ?>");//入っていない<br /> }<br /> }<br /> <br /> // POSTされてきたCookie値<br /> $age = $_POST["age"];<br /> <br /> // Cookieに値を保存する<br /> setcookie("age", $age,time()+259200);<br /> ?></code>
2の認証ページにて以下を設置(adgecheck.php)。
<code><?php<br /> if(isset($_GET['id'])) {<br /> $id = $_GET['id'];<br /> }<br /> ?><br /> <form name="mainForm" method="post" action="<?php bloginfo('url'); ?>/<?= $id ?>/"><br /> <input id="submit" type="image" value="18歳以上" src="<?php bloginfo('template_directory'); ?>/images/18age.gif"><br /> <input id="agecheck" type="hidden" value="yes" name="age"><br /> </form></code>
いろいろ試行錯誤してみましたが、上記の場合ですと、
クッキーを保持していなくても見れてしまい、年齢認証ページで「はい」を選択し、
値をポストしても保持されません。
single.phpの記述はいろいろ調べたコードをあれこれ試してみたもので、
エラーは出ないのですが機能しない状況です。
リダイレクト処理あたりは全く自信がありません…orz
ちなみに、特定のカテゴリ記事のみsingle.phpで読み込むヘッダーを分けて、上記のコード1を読み込ませています。
もう少し試行錯誤してみたいと思います。