我在用gethostbyname()
获取应用程序中域的 IP 地址。
在某些情况下,还会检查“50.9.49”等无效地址。
echo gethostbyname('50.9.49'); // returns 50.9.0.49
在这种情况下gethostbyname
应返回 false 或未修改的无效 IP 地址。但是该函数返回修改后的 IP 地址50.9.0.49
.
看起来像是 php 中的一个错误。快速修复似乎是之前检查无效的数字地址,还有其他建议吗?
PHP's gethostbyname
实际上uses http://gcov.php.net/PHP_5_4/lcov_html/standard/dns.c.gcov.php底层操作系统的结果gethostbyname
,例如,来自 Linux 的netdb.h
或Windows'Winsock2.h
。真正产生返回值的是那些函数,而不是 PHP。
/* {{{ php_gethostbyname */
static char *php_gethostbyname(char *name)
{
struct hostent *hp;
struct in_addr in;
hp = gethostbyname(name);
if (!hp || !*(hp->h_addr_list)) {
return estrdup(name);
}
memcpy(&in.s_addr, *(hp->h_addr_list), sizeof(in.s_addr));
return estrdup(inet_ntoa(in));
}
/* }}} */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)