アプリケーションで$_SERVER['HTTP_REFERER']
変数を使用しました(PHPを使用)。 Firefoxでは、上記の変数が機能していません。しかし、$_SERVER['HTTP_REFERER']
がMicrosoftInternet Explorer 8で機能していないことを確認しました。また、HTTP_REFERER
変数がMSIE8およびMSIE7で機能しないことも知りました。
$_SERVER['HTTP_REFERER']
変数を使用してMSIE7/8を削除する方法、または$_SERVER['HTTP_REFERER']
変数の他の代替方法を教えてください。
あなたの提案をありがとう。
-プラビン。
Webサイトの内部(つまり、外部ではなくWebサイトのページ間)でのみリファラー情報を使用する必要がある場合は、ユーザーのリファラー情報を手動で追跡できます。
// Get the full URL of the current page
function current_page_url(){
$page_url = 'http';
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
$page_url .= 's';
}
return $page_url.'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
/* (Assuming session already started) */
if(isset($_SESSION['referrer'])){
// Get existing referrer
$referrer = $_SESSION['referrer'];
} elseif(isset($_SERVER['HTTP_REFERER'])){
// Use given referrer
$referrer = $_SERVER['HTTP_REFERER'];
} else {
// No referrer
}
// Save current page as next page's referrer
$_SESSION['referrer'] = current_page_url();
次に、リファラーにアクセスするには、$referrer
変数を使用するだけです。
if(isset($referrer)){
echo 'Referred from "'.$referrer.'"';
echo '<a href="'.$referrer.'">Back</a>';
} else {
echo 'No referrer';
}
そうすれば、ユーザーがhttp://www.example.com/page_1.php
にアクセスすると、ブラウザから提供されている場合はリファラー情報が表示され、それ以外の場合はリファラーが表示されません。その後、彼らがhttp://www.example.com/page_2.php
にアクセスし、サイトの後続のページにアクセスすると、リファラーにアクセスできるようになります。
お願いしますリファラーを推測するためにセッションを使用しないでください。これにより、望ましくない動作や奇妙なエラーが発生します。
参照ページを本当に知る必要がある場合は、リクエストパラメータを介して渡してください。 JSスクリプトまたはサーバー側でパラメーターを追加できます。
ページ上のすべてのリンクのjQueryバリアント:
$(document).ready(function(){
$('a').on('click', function(e) {
url = this.getAttribute('href');
// Check if the page is internal.
if (url.charAt(0) != '/') {
return;
}
e.preventDefault();
// Append referrer.
url += url.indexOf('?') === -1 ? '?' : '&';
url += 'referer=' + encodeURIComponent(document.URL);
window.location = url;
});
});