2014-01-23 43 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