2013-10-13 124 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;