ci框架为啥不能获取客户端的ip,一直获取的是服务器的IP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ci框架为啥不能获取客户端的ip,一直获取的是服务器的IP相关的知识,希望对你有一定的参考价值。

这是php

if ( ! function_exists('ip'))

/**
 * 获取IP地址
 *
 * @param string $format 返回IP格式,(默认)表示传统的127.0.0.1,int或其它表示转化为整型,便于存放到数据库字段
 * @param string $side IP来源,(默认)表示客户端,server或其它表示服务端
 * @return string or int
 */
function ip($format = 'string', $side = 'client') 
if ($side === 'client') 
static $_client_ip = NULL;
if ($_client_ip === NULL) 
// 获取客户端IP地址
$ci = &get_instance ();
$_client_ip = $ci->input->ip_address ();

$ip = $_client_ip;
 else 
static $_server_ip = NULL;
if ($_server_ip === NULL) 
// 获取服务器IP地址
if (isset ( $_SERVER )) 
if ($_SERVER ['SERVER_ADDR']) 
$_server_ip = $_SERVER ['SERVER_ADDR'];
 else 
$_server_ip = $_SERVER ['LOCAL_ADDR'];

 else 
$_server_ip = getenv ( 'SERVER_ADDR' );


$ip = $_server_ip;


return $format === 'string' ? $ip : bindec ( decbin ( ip2long ( $ip ) ) );

参考技术A 因为你就在服务器上访问的! 参考技术B 直接用js获取最准确

Java Web如何获取客户端的Hostname?

Java Web使用Spring框架 Tomcat部署在linux系统
请问如何获取客户端的Hostname传给后端做资料处理?
request.getRemoteHost();已测返回的是IP地址
需要JSP页面先行获取么 JS/JQuery如何获取?

参考技术A 在Java web中获取hostname的方法:
使用request对象。用:
request.getHostName();
参考技术B 取不到的,web通信,在网络上传输的只有ip,没有主机名信息的 参考技术C js获取主机名可以看看这个:
http://blog.csdn.net/zyw_anquan/article/details/7970869本回答被提问者采纳
参考技术D java.net.InetAddress inetAddress = new java.net.InetAddress();
inetAddress.getLocalHost().getHostName();

以上是关于ci框架为啥不能获取客户端的ip,一直获取的是服务器的IP的主要内容,如果未能解决你的问题,请参考以下文章

为啥NodeJs获取客户端的IP都是这样的

为啥NodeJs获取客户端的IP都是这样的

PHP获取客户端的真实IP

急求,请教下各位,为啥用request.getRemoteAddr()获取的Ip都不是真实的

Java Web如何获取客户端的Hostname?

如何在开发过程中获取客户端的ip呢?