【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

レンタルのPHP5使用者です。
自分が作ったサイト内リンクだけでの話なのですが、ひとつ前に見たページが何かによって処理を分岐させたいことがあります。
はじめは $_SERVER[HTTP_REFERER] を見ればOK!と考えていたのですが、リダイレクト遷移の場合は取得不可能なことがわかりました。
では一体どうすれば…
3時間ほど考えた結果は以下の通りです。

$_GET[ ] 使用 → 値を容易に改ざんされるので×。
$_POST[ ] 使用 → $_SERVER[HTTP_REFERER]同様リダイレクト時に無理。
SESSION 使用 → 直前のURLとは限らない(直前が、静的ページ/リダイレクト/ブックマーク の場合さらに古いURLを得てしまう)
Cookie  使用 → 同上

<条件>
*停止させている方も多いため、勝手ながら今回javascriptは使わないことを前提にさせてください。
*直前が静的ページ/ブックマーク等なら値なしでOKです。

一見簡単そうに見えた問題があまりに難しいので悩みました。「あきらめろ」という回答でもOKです。よろしくお願いいたします。

A 回答 (2件)

##現実的には ある程度無効/偽装されてしまうことも考慮したうえで私がやるとしたら cookie を使うと思います。



静的なページ(普通の .htm など)でも固定された値のcookieなら発行できます
また 同じNameのCookieは上書きされますので

全てのページで 例えば view=ページ名 という内容のCookieを発行します
00.htm内でだと <HEAD>~~</HEAD>内に
<meta http-equiv="Set-Cookie" content="view=00.htm">
と記述すればOKです。

Cookieを受け取る設定のブラウザで 00.htm にアクセスした後
phpのページにアクセスして print_r($_SERVER); で確認してください
 (確認用のphpではCookieを取り合えず発行しないで置く事)
[HTTP_COOKIE] => view=00.htm と成っているはずです。

で、別のページ 例えば abc.htm に同様のmetaタグを記述してから
また確認用phpにアクセスすると
[HTTP_COOKIE] => view=abc.htm に変化している筈です。

##あまり現実的ではない方法でならば
お使いのレンタルサーバーではユーザー用のログfileは無いのですか?
例えば Xserverなら http://www.xserver.ne.jp/man_server_log.php
さくらインターネットなら http://faq.sakura.ad.jp/faq/1032/app/servlet/qad …
に説明が有ります。
CGI/PHPでそれらのユーザー用アクセスログを読み込むことが出来るなら
読み込み>$_SERVER["REMOTE_ADDR"]と比較>抽出 すれば不可能ではないかと思います。

が、そこまでするのもやはり現実的ではないでしょうね。

この回答への補足

なんと!ありがとうございます。
お恥ずかしながら meta でCookieが仕込めることを知りませんでした… (^-^ゞ
やってみると、完璧!!
しかしながらブラウザの更新ボタンを押したとき…自分自身のURLを検出してしまう…  ああ、ひとつ前をひろうのだから当然の結果ですよね
get のときみたいに更新ボタンでは値が変わらない方法を考えていますが難しそう…
あー、やはり無理なんですかね…万能な方法は

補足日時:2008/07/11 03:14
    • good
    • 0

あきらめろ^-^



REFERERの完全な取得は無理ですので改竄されることをある程度おりこんでスクリプトを組んだ方が良いです。

この回答への補足

やっぱだめですか…
リダイレクト問題さえ解決できれば…
ありがとうございました。

補足日時:2008/07/11 03:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!