我使用gethostbyname()
来获得域名的IP地址的应用程序。
在某些情况下,像'50 .9.49' 无效地址也被选中。
echo gethostbyname('50.9.49'); // returns 50.9.0.49
在这种情况下gethostbyname
应该返回false或未修饰无效的IP地址。 但是功能返回修改后的IP地址50.9.0.49
。
看起来像在PHP中的错误。 速战速决似乎是之前检查无效的数字地址,还有没有其他的建议?
我使用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的gethostbyname
实际使用底层OS的结果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));
}
/* }}} */
看起来这是IPS是如何工作的无证功能。 正如在评论你的问题,提到ping 50.9.49
在Windows实际上坪50.9.0.49
。 如果输入ADRESS如abd
,它会自动插入一个零c
: ab0.d
。 如果你只是输入ad
,两个零插入: a.0.0.d
。
这已经过测试与Windows 7和Debian Linux的。