2013-10-03 24 views
0

我還是新的PHP和尚在測試階段有關。我得到一個未定義的指標變量:不明白爲什麼未定義指數

$httpreferer = $_SERVER['HTTP_REFERER']; 

頁面的完整代碼是:

<?php 

ob_start(); 
session_start(); 
$current_file = $_SERVER['SCRIPT_NAME']; 
$httpreferer = $_SERVER['HTTP_REFERER']; 

function loggedin(){ 
    if(isset($_SESSION['user_id'])&&!empty($_SESSION['user_id'])){ 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

?> 

很抱歉,如果這是一個蹩腳的問題。我還是個初學者。

在此先感謝。

+0

可能不存在引薦或者它可以不設置 –

+0

「HTTP_REFERER」「這是由用戶代理設置。不是所有的用戶代理將設置此,有些提供修改HTTP_REFERER作爲特徵的能力。總之,它不能真正信任。「 – 2013-10-03 19:10:37

+0

'HTTP_REFERER'可能不會在HTTP請求中設置。在分配它之前使用'isset()'測試$ _SERVER ['HTTP_REFERER']。 – 2013-10-03 19:10:59

回答

2

的瀏覽器(客戶端)都可以免費送他們喜歡的任何HTTP標頭。你不能相信他們!

檢查客戶端是否使用isset()提供一個:

if (isset($_SERVER['HTTP_REFERER'])) { 
    // do something 
} 

請記住,這不是告訴數據本身什麼。這可能是任何事情。

+0

謝謝ComFreek ..訣竅:) – joebegborg07

0

如果訪問者沒有引用(由於種種原因,他可能不會像直接訪問網頁 - 而不是點擊其他網站的鏈接,或從HTTPS鏈接到來),那麼這個變量不會那裏。

你可以做的就是這個

$httpreferer = empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']; 

這是一個三元運算符。 http://php.net/manual/en/language.operators.comparison.php

相關問題