レンタルの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/qad …
に説明が有ります。
CGI/PHPでそれらのユーザー用アクセスログを読み込むことが出来るなら
読み込み>$_SERVER["REMOTE_ADDR"]と比較>抽出 すれば不可能ではないかと思います。
が、そこまでするのもやはり現実的ではないでしょうね。
この回答への補足
なんと!ありがとうございます。
お恥ずかしながら meta でCookieが仕込めることを知りませんでした… (^-^ゞ
やってみると、完璧!!
しかしながらブラウザの更新ボタンを押したとき…自分自身のURLを検出してしまう… ああ、ひとつ前をひろうのだから当然の結果ですよね
get のときみたいに更新ボタンでは値が変わらない方法を考えていますが難しそう…
あー、やはり無理なんですかね…万能な方法は
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SEO 動的・静的ページの説明に...
-
CFileDialogの最初のディレクト...
-
GDへ値を渡す方法は?
-
onedrive にexcelファイルをア...
-
データ送信をボタンを押さずに...
-
10MB以内のJPG画像
-
PHPパーミッションについて
-
youtubeに音声のみのmp4ファイ...
-
.phpファイルが、表示されない
-
画像リストを作りたい
-
phpのPDOの導入
-
PHPから別なPHPへ移動(?)する方法
-
PHPでメールを受信するには?
-
セッションのクッキー有効期間...
-
【PHP】フレームワークを習得す...
-
違法アップロードについて
-
ssiをhtmlで動作させる為、htac...
-
PHPでSMTPを使ってメール送信で...
-
phpスクリプトのみで定期実行
-
index.phpにbbs.phpを埋め込みたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLの変わらないページをPHPで...
-
FPDFを使ったPDF出力時の縦幅に...
-
リダイレクトでPOST
-
ヘッダーは500エラー、ブラウザ...
-
【WordPress】メディアの一覧出力
-
【PHP】ひとつ前のURLを...
-
テキストリンクを2回クリックし...
-
認証が通ったidを元にidテーブ...
-
日本からのアクセスと他国から...
-
PHPで、データを表示させるとき...
-
PHPで検索結果からさらに詳細な...
-
リンク(URL)をクリックした後、...
-
phpでの二重投稿防止について
-
GET POST の引数渡しについて
-
Windows7のMySQLの環境構築につ...
-
phpのページが更新されない
-
携帯で、phpページからhtmlペー...
-
wordpress 個別ページのテンプ...
-
GETで「?」無しでパラメータの...
-
cURLの413エラーの解決方法を教...
おすすめ情報