Php 如何将“id”增加到无穷大并打印相同的值范围

Php 如何将“id”增加到无穷大并打印相同的值范围,php,Php,我有一个端口$id和$port值要在HTML表单中输入。然后,这两个输入将生成一个$key 在这里,当我输入$id=0和$port=1014到65535之间的值时,它应该生成从1到64的IP范围$key。它确实产生了它们 <div id="port" align="center"> <form action="NetRules.php" method="GET"> <input type="number" name="id" value="

我有一个端口$id和$port值要在HTML表单中输入。然后,这两个输入将生成一个$key

在这里,当我输入$id=0和$port=1014到65535之间的值时,它应该生成从1到64的IP范围$key。它确实产生了它们

<div id="port" align="center">
    <form  action="NetRules.php" method="GET">
        <input type="number" name="id" value="<?php echo $id ?>" placeholder="enter real IP">
        <br/>
        <input type="number" name="port" value="<?php echo $port ?>" placeholder="enter port ID">
        <br/>
        <input type="submit" name="submit" value="Suche">       
    </form>
</div>
<?php

$portRanges = [1024, 2031, 3039, 4047,5055,6063,7071,8079,9087,10095,
               11103,12111,13119,14127,15135,16143,17151,18159,19167,
               20175,21183,22191,23199,24207,25215,26223,27231,28239,
               29247,30255,31263,32272,33279,34287,35295,36303,37311,
               38319,39327,40335,41343,42351,43359,44367,45375,46383,
               47391,48399,49407,50415,51423,52431,53439,54447,55455,
               56463,57471,58479,59497,60945,61503,62511,63519,64527,
               65535];

if(isset($_GET['submit']) && isset($_GET['port'])) {
    $port = $_GET['port'];
    $id = $_GET['id'];
    if($id == 0){
    foreach($portRanges as $key => $value) {
        if(array_key_exists($key+1, $portRanges) && $port >= $value && $port < $portRanges[$key+1]+1) {

            break;
        }
    }
    $id++;
    }
}
?>
<!--Here We Fetch The IP Range-->
<div align="center">
    <form id="content1">
        <h3>Private IP Address:</h3>
        <input type="number" name="IP range" value="<?php echo $key ?>"> 
    </form>
</div>
问题是当我输入或不输入$id时,它仍然生成相同的$key,这段PHP代码不包含$id。我希望$id在64之后递增

也就是说,$portRanges[1024-65535]的$id=0应该从0-64生成$key

类似地,$portRanges[1024-65535]的$id=1应该从0-64生成$key

$id在这里应该增加无穷大。 我尝试了上述方法,但它不起作用。 任何帮助都将不胜感激。
谢谢

我想这就是你想要做的

<?php

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL);

$portRanges = [1024,2031,3039,4047,5055,6063,7071,8079,9087,10095,
               11103,12111,13119,14127,15135,16143,17151,18159,19167,
               20175,21183,22191,23199,24207,25215,26223,27231,28239,
               29247,30255,31263,32272,33279,34287,35295,36303,37311,
               38319,39327,40335,41343,42351,43359,44367,45375,46383,
               47391,48399,49407,50415,51423,52431,53439,54447,55455,
               56463,57471,58479,59497,60945,61503,62511,63519,64527,
               65535];

$id = isset($_GET['id']) ? $_GET['id'] : 0;
$port = isset($_GET['port']) ? $_GET['port'] : 1024;
if($id < 0 or $id > 255){
    echo 'ID out of range. 0-255<br>';
    $id = 0;
}
if(array_search($port, $portRanges) === False){
    echo 'Invalid Port.<br>';
    $port = 1024;
}

$select = '<SELECT name="port" >';
foreach($portRanges as $key => $value) {
    if($port == $value){
        $opt = ' SELECTED ';
    } else {
        $opt = '';
    }
    $select .= "<option $opt >$value</option>";
}
$select .= '</SELECT>';
$form ='
<div id="port" align="center">
    <form  method="GET">
        <input type="number" name="id" value="'.$id.'" placeholder="enter real IP">
        <br/>
        '.$select.'
        <br/>
        <input type="submit" name="submit" value="Suche">       
    </form>
</div>

<div align="center">
    <form id="content1">
        <h3>Private IP Address:</h3>
        <input type="number" name="IP range" value="'.array_search($port, $portRanges).'"> 
    </form>
</div>
';

echo $form;

不输入id时不会得到任何值,因为blank不等于0。要运行代码,id必须为零。是的,但我在html表单中输入$id=0。这还不够吗?或者如果有其他方法,你能突出我吗?这对结束我的项目会有很大帮助。你说当你不输入id时。当我输入0和有效的端口号时,它会工作。我真的不明白你想干什么。作为代码id,您可能需要使用foreach。id是否重要。是的,当我输入$id=1和$port=1024或某个范围时,它应该再次匹配portRange。因此,$Id将从0开始无穷大。