2

短いプロセスの後にリファラーがクリアされたかどうかをチェックするphpスクリプトがあります。宛先に転送された場合、ブランクされていない場合、リファラーのクリアに使用したプロセスが再開されます。これまでのところ機能します。これは私が使用したコードです。

<?php
$referer = $_SERVER['HTTP_REFERER'];
if($referer == "")
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=http://sitetogoto.com\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=http://sitewherereferrergetsclearedagain.com\">";
}
?> 

これまでのところ、そのスクリプトに移動するリンクをクリックすると、リファラーなしでsitetogoto.comに移動できるようになります。ただし、たとえばオートサーフを使用しているときに、リファラーがクリアされない無限のリダイレクトでスタックすることに気づきました...理由は何ですか?

よろしく

4

3 に答える 3

4

PHPでは、クリーンな方法はヘッダーのリダイレクトです

<?php
if ($_SERVER['HTTP_REFERER']!="http://www.yoursite.com") {
  header("Location: http://www.example.com/"); 
  exit;
}
?>

編集(あなたの質問)

<?php
if (!empty($_SERVER['HTTP_REFERER'])) {
  // CLEAR IT / REDIRECT 
  header("Location: http://www.example.com/"); 
  exit;
}
?>
于 2009-08-09T13:23:56.423 に答える
0

試してみるif(isset($_SESSION['HTTP_REFERER']))if(empty($_SESSION['HTTP_REFERER']))

于 2009-08-09T13:24:59.263 に答える
0

もちろん、これは機能しません。httpリファラーは、サーバーではなく、ブラウザー、クライアント側で設定されます。

javascriptを使用してクリアしてみてください

于 2010-03-06T15:02:51.450 に答える