好的,所以我试图计算IP。我有一个PHP版本和一个JQuery / Javascript版本。 PHP实现了一个梦想,只是直到PHP脚本完成后才输出到屏幕,但我对此表示满意。我遇到的问题与jquery / javascript版本有关。计数第四个八位位组是可以的,但是当涉及到计数第三个八位位组时,我遇到了一个奇怪的问题。
基本上,如果我的范围是10.211.55.254-10.211.56.2,我很好。但是,如果我将IP地址增加到10.211.56.3或以上,则会得到以下结果:
10.211.55.250
10.211.56.250
仅当增加但减小到10.211.55.254以下仍然有效时,才会发生这种情况。
所以这是每个脚本的内容,我哪里做错了/ Javascript遗漏了?
The Javascript
var startiparrayslice = startiparray.slice( 0, 2);
for ( var octet3 = startiparray[2] ; octet3 <= endiparray[2]; octet3++) {
var pingip2 = startiparrayslice.join(".") + "." + octet3;
if (startiparray[3] > endiparray[3]) {
endiparrayorig = endiparray[3];
endiparray[3] = 255;
}
for ( var octet4 = startiparray[3] ; octet4 <= endiparray[3]; octet4++) {
if (octet4 == endiparray[3]) {
startiparray[3] = 0;
endiparray[3] = endiparrayorig;
}
var pingip = pingip2 + "." + octet4;
$.post("ping-query-process.php", {
pingformip:pingip
},
。
The PHP
$ipnetwork = array_slice($iprangestartex,0,2);
$ip = implode(".",$ipnetwork);
for ($octet3=$iprangestartex[2];$octet3<=$iprangeendex[2];$octet3++) {
$ipaddress = $ip . "." . $octet3;
if ($iprangestartex[3] > $iprangeendex[3]) {
$iprangeendexorig = $iprangeendex[3];
$iprangeendex[3] = "255";
}
for ($octet4=$iprangestartex[3];$octet4<=$iprangeendex[3];$octet4++) {
if ($octet4 == $iprangeendex[3]) {
$iprangestartex[3] = "0";
$iprangeendex[3] = $iprangeendexorig;
}
$ipaddress4 = $ipaddress . "." . $octet4;
$pingresult = exec("/bin/ping -c 1 $ipaddress4", $result, $status);
if (0 == $status) {
$status = "alive";
} else {
$status = "dead";
}
echo "The IP Address, $ipaddress4, is ".$status."<br /><br />";
}
}
最佳答案
好吧,我没有看到那一个!经过测试测试并使用了大量警报框后,我将其缩小为以下事实:在某些数字上,array1 [3]并未与array2 [3]进行比较。不要问我为什么只说某些数字,因为我不知道(请在明信片上回答)。
实际上,我需要比较数字时,我能够看到数组尝试使用array2 [3] .constructor比较字符串。因此,为了实现这一点,我加入了以下parseInt
if (parseInt(startiparray[3]) > parseInt(endiparray[3])) { }
这样将数组元素与数字进行了比较,我能够遍历3-9,然后再进行故障转移。
我仍然想理解为什么。。。由于我是开发新手,所以学习曲线很陡。
谢谢