繁体   English   中英

未定义变量+切换问题

[英]undefined variable + switch issue

我创建了$ ref变量来查找推荐网站!

我有两个问题:

1-当直接打开页面时,我看到通知错误,显示$ ref id undefined

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值,所以我不能使用isset或为empty

请帮我如何解决这个问题?

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中的大小写语法。

您第一个问题的解决方案是使用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
  }

尝试这个,

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 ";
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM