<?php
//$ipaddress = $_SERVER['REMOTE_ADDR'];
$ipaddress = '10.0.1.4';
$binip = inet_pton($ipaddress);
echo $binip;
?>
它返回空白。如果我使用面向公众的IP,它会返回正确的结果。它将返回192.168.1.2
的结果(我的旧LinkSys路由器有一个类似于此的ip)。我正在使用本地IP的Linux机器上测试我的应用程序。连接到它的所有计算机都使用内部IP 10.0.1.XX
。我的应用程序使用MySQL,如果binip为空,则会给我一个错误。所以我不确定本地ip的解决方法。我想也许它可能与检测它是否是该格式的本地IP然后编辑ipaddress变量,因此它对inet_pton有效如何。有什么想法吗?
答案 0 :(得分:1)
它对我有用。我从你的示例代码中得到了一个二进制结构(虽然它没有可打印的字符,所以如果你在网络浏览器中运行它你可能什么也得不到。)
实际上,我甚至尝试过输出原始地址的代码,并显示没有信息丢失:
<?php
$ipaddress = '10.0.1.4';
$binip = inet_pton($ipaddress);
echo inet_ntop($binip);
?>
也许你对ip2long更感兴趣,它将地址转换为整数?或者您的问题可能在其他地方,例如在将数据放入数据库之前转义数据?
答案 1 :(得分:0)