質問

ウェブサイトを作成していて、ある特定のページで、ユーザーを前のページに戻したいと思っています。私は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マニュアルサイトをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top