XPressME Integration Kit

フォーラム

Re: wordpress上でのcookie設定について

#3506
匿名
ゲスト

教えていただいたプラグイン「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を読み込ませています。

もう少し試行錯誤してみたいと思います。