2013-10-13 127 views
-2

这个程序有什么问题? 它永远不会返回,邮件永远不会消失。如果你删除getOrDefault函数,它可以正常工作。它不会引发错误或PHP 5.3.13php传递参考

<?php 

    function getOrDefault(&$var, $default = null) { 
     // because I'm tired of typing $x = isset($_POST['x'])? $_POST['x']:null; 
     if (isset($var)) { 
      return $var; 
     } else { 
      return $default; 
     } 
    } 

    $HTTP_CLIENT_IP = getOrDefault($_SERVER['HTTP_CLIENT_IP']); 

    mail('[email protected]', 'test', $HTTP_CLIENT_IP); 
    echo 'done'; 
?> 
+0

使用'getOrDefault'在这个片段中是没有意义的。要查看整个图片,请在代码的开头添加“error_reporting(-1)”行。 – raina77ow

+0

你为什么要引用它?您可以将'getOrDefault($ var,$ default = null)'放在''_SERVER ['HTTP_CLIENT_IP']'上,因为您不会(也不会)修改它。 –

+0

和'isset'在你的情况下是危险的。不妨把它与'$ var!=“”' –

回答

1

异常你不需要这个

$HTTP_CLIENT_IP = getOrDefault($_SERVER['HTTP_CLIENT_IP']); 

,因为你可以使用这个

$HTTP_CLIENT_IP = isset($_SERVER['HTTP_CLIENT_IP'])?$_SERVER['HTTP_CLIENT_IP']:$default;