php / html-http_referer
-
03-07-2019 - |
質問
ウェブサイトを作成していて、ある特定のページで、ユーザーを前のページに戻したいと思っています。私はPHP / HTMLにかなり慣れていないので、既存のコードをアイデアやヘルプに使用しています。
既存のコードは次のメソッドを使用します:
if (! empty($HTTP_REFERER))
{
header("Location: $HTTP_REFERER");
} else
{
header("Location: $CFG->wwwroot");
}
ただし、このコードを使用すると、HTTP_refererは常に空として扱われ、ユーザーはルートページにリダイレクトされます。このコードに明らかな欠陥はありますか?
解決
使用する必要があります:
使用する必要があります:
<*>SERVER['HTTP_REFERER']
他のヒント
HTTPリファラーが有効なフィールドまたは空ではないフィールドであることに依存しないでください。人々はこのセットを持たないことを選択して、その変数のチェックをIF-ELSE句の空側に残すことができます。
ユーザーをリダイレクトするために使用できる値を保持するURLまたはPOSTパラメーターのパラメーターを送信することで、これを防ぐことができます。
isset($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']: '';
人を前のページに送り返し、リファラーが正しく設定されているかどうかに関係なく動作させる場合は、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()
関数を使用できます。
リファラーヘッダーが空または欠落している可能性があることに注意してください。したがって、リファラーヘッダーにまったく依存しないでください。
使用する必要があります
使用する必要があります
<*>
ただし、php.iniのregister_globals構成を見てください。セキュリティ上の理由により、この構成はオフにする必要があります。詳細については、 PHPマニュアルサイトをご覧ください。
SERVER['HTTP_REFERER']
ただし、php.iniのregister_globals構成を見てください。セキュリティ上の理由により、この構成はオフにする必要があります。詳細については、 PHPマニュアルサイトをご覧ください。