6

Web サイトを作成していて、ある特定のページで、ユーザーを前のページに戻したいと考えています。私は PHP/HTML にかなり慣れていないので、アイデアやヘルプのために既存のコードをいくつか使用しています。

既存のコードは次の方法を使用します。

if (! empty($HTTP_REFERER)) 
{
    header("Location: $HTTP_REFERER");
} else 
{
    header("Location: $CFG->wwwroot");
}

ただし、このコードを使用すると、HTTP_referer は常に空として扱われ、ユーザーはルート ページにリダイレクトされます。このコードに明らかな欠陥はありますか?

4

6 に答える 6

14

HTTP リファラーが有効なフィールドであるか、空でないフィールドであることに依存しないでください。IF-ELSE 句の空の側に行くその変数のチェックを残して、このセットを持たないことを選択できます。

ユーザーをリダイレクトするために使用できる値を保持する URL または POST パラメーターのいずれかでパラメーターを送信することにより、これを防ぐことができます。

于 2009-03-03T13:03:59.083 に答える
13

以下を使用する必要があります。

$_SERVER['HTTP_REFERER']
于 2009-03-03T12:58:40.843 に答える
1

isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

于 2009-08-18T10:57:50.917 に答える
1

その人を前のページに戻して、リファラーが正しく設定されているかどうかに関係なく機能させたい場合は、URL に GET パラメーターを追加できます (または POST).. URL をエンコードする必要があります..

http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was%2f

PHPのurlencode()機能を利用できます。

于 2009-03-03T13:08:01.397 に答える
0

また、いずれにしてもリファラー ヘッダーが空または欠落している可能性があるため、まったく依存しないでください。

于 2009-03-03T13:03:42.997 に答える
0

使用する必要があります

$_SERVER['HTTP_REFERER']

ただし、php.ini の register_globals 構成を見てください。セキュリティ上の理由から、オフにする必要があります。詳細については、PHP マニュアル サイトを参照してください。

于 2009-03-03T13:07:59.650 に答える