• 締切済み

【PHP】ひとつ前のURLを常時得る方法は?

レンタルのPHP5使用者です。 自分が作ったサイト内リンクだけでの話なのですが、ひとつ前に見たページが何かによって処理を分岐させたいことがあります。 はじめは $_SERVER[HTTP_REFERER] を見ればOK!と考えていたのですが、リダイレクト遷移の場合は取得不可能なことがわかりました。 では一体どうすれば… 3時間ほど考えた結果は以下の通りです。 $_GET[ ] 使用 → 値を容易に改ざんされるので×。 $_POST[ ] 使用 → $_SERVER[HTTP_REFERER]同様リダイレクト時に無理。 SESSION 使用 → 直前のURLとは限らない(直前が、静的ページ/リダイレクト/ブックマーク の場合さらに古いURLを得てしまう) Cookie  使用 → 同上 <条件> *停止させている方も多いため、勝手ながら今回javascriptは使わないことを前提にさせてください。 *直前が静的ページ/ブックマーク等なら値なしでOKです。 一見簡単そうに見えた問題があまりに難しいので悩みました。「あきらめろ」という回答でもOKです。よろしくお願いいたします。

みんなの回答

回答No.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/qadoc?000514 に説明が有ります。 CGI/PHPでそれらのユーザー用アクセスログを読み込むことが出来るなら 読み込み>$_SERVER["REMOTE_ADDR"]と比較>抽出 すれば不可能ではないかと思います。 が、そこまでするのもやはり現実的ではないでしょうね。

takosuke88
質問者

補足

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

すると、全ての回答が全文表示されます。
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

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

takosuke88
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A