天天看點

微信支付擷取使用者IP(PHP)

微信H5支付中需要擷取spbill_create_ip,官方文檔中提供的擷取IP方法:

$ip = "unknown";
if($_SERVER['REMOTE_ADDR']){
    $ip = $_SERVER['REMOTE_ADDR'];
}elseif(getenv("REMOTE_ADDR")){
    $ip = getenv("REMOTE_ADDR");
}
return $ip;
           

實際應用中居然報了安全錯誤,網上找的正确的擷取IP方法:

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
   $ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
    $ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
    $ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
    $ip = $_SERVER['REMOTE_ADDR'];
}