2014-01-23 51 views
1

我創建了$ ref變量來查找推介網站!未定義變量+開關問題

我有兩個問題:

1時頁面打開直接我看到通知錯誤告訴我$參考編號未定義

2 - 我想我的開關的代碼是好的,但它不工作!

<?php 

$ip = $_SERVER['REMOTE_ADDR']; 
$ref = $_SERVER['HTTP_REFERER']; 


switch ($ref) { 
    case $ref == null : 
    echo 'null'; 

    case $ref == 'http://google.com' : 
    echo 'google'; 


} 


?> 

爲什麼我看到注意到的PHP錯誤,爲未定義的變量?

所以,我怎麼能得到一些變量,也許不是

像轉診或許HTTP_X_FORWARDED_FOR所有頁面生成,這個變量取決於客戶端的請求或客戶端網絡,讓他們注意到產生任何時候都

我想獲得推薦價值或HTTP_X_FORWARDED_FOR所以我不能使用issetempty

請幫我解決這個問題?

回答

2
if(isset($_SERVER['HTTP_REFERER'])) { 

$ref = $_SERVER['HTTP_REFERER']; 
    switch ($ref) { 
     case 'http://google.com' : 
      echo 'google'; 
      break; 
     default: 
      echo 'came from other site than google'; 
      break; 
    } 
} 
else { 
    echo 'null'; //no referer set 
} 

這是在php的情況下語法。你的第一個問題的

+0

@Robert它的工作,但在這段代碼,**我有一個PHP的通知出錯的問題** 和我在第2行有個問題 爲什麼我不能使用'case $ ref == null'? – AliM

+0

@Alim請參閱編輯。 – popi

+0

不幸的是對於空請求(沒有推薦)不工作:( – AliM

0

的解決方案是使用isset

if(isset($_SERVER['HTTP_REFERER'])) 
{ 
    $ref = $_SERVER['HTTP_REFERER']; 


    switch ($ref) { 
     case $ref == null : 
     echo 'null'; 

     case $ref == 'http://google.com' : 
     echo 'google'; 

    } 
    } 
    else 
    { 
    echo "Null"; // $_SERVER['HTTP_REFERER'] is not set 
    } 
+0

它不工作 – AliM

+0

什麼是輸出 –

+0

'$ ref =='http://google.com':'是ok 但是對於空請求它什麼也沒有顯示 – AliM

0

試試這個,

echo $_SERVER['HTTP_REFERER']; // to know about the REFERER value 
if(isset($_SERVER['HTTP_REFERER'])){ 
    $ref = $_SERVER['HTTP_REFERER']; 
    $ref = parse_url($ref); 
    $host = $ref['host']; 

    switch ($host) { 
    case 'google.com' : 
    case 'www.google.com' :  
     echo 'google'; 
    break; 
    default: 
     echo 'null'; 
    } 
}else{ 
     echo "Not a HTTP_REFERER "; 
} 
+0

它不工作 – AliM

+0

@AliM,我已經更新了我的答案,你可以請檢查 –

+0

不幸的是它仍然不工作 – AliM