PHP验证输入是否在0-10之间并且是一个数字?

时间:2013-10-14 09:49:40

标签: php

我应该构建一个脚本,以便在用户输入非数字输入或大于10的值时提醒用户。

我有这个:

<form action="" method="get">
    <p>Iterations:
    <input type="text" name="rows" size="5">
    <input type="submit" value="Loop">
    </p>
</form>
<table border='1' cellpadding='3' cellspacing='0' bordercolor='#669999' align="center">

<?php

$rows = $_GET['rows'];

 for ( $i = 1; $i <= 10; $i++) { 
     if (is_numeric($i)) {
     echo "<tr><td>Iteration is $i</td></tr>";
     } 
 else {
     echo "Please enter a valid number between 1 and 10.";
     }
 }


 ?>

但它只会返回一个迭代列表是1-10,我不能让它迭代我输入的次数?

编辑:循环实际上是必不可少的。

我正在构建一个先前的脚本,如果输入5,则会循环播放:

迭代次数为1

迭代次数为2

迭代是3

迭代是4

迭代是5

所以这就是我迭代它并循环它的原因。

提前感谢您的任何建议。

编辑#2

我已经修好了所有人。

<?php
 $rows = $_GET['rows'];
 $value = intval($rows);

 if (1 <= $value && $value <= 10) {
     for ( $i = 1; $i <= $rows; $i++ ) { 
      echo "<tr><td>Iteration is $i</td></tr>";
   }

 } else {
    echo "Please enter a valid number between 1 and 10.";
 }

?>

我已经使用$ intval的组合来评估$ rows的整数,并将其比较以查看它是否介于1和10之间。

然后我根据作业循环了。

我们原本应该使用is_numeric但是...这在我看来更清晰。

全部谢谢!

明天下班后我会回答这个问题。

4 个答案:

答案 0 :(得分:3)

如果向其传递非整数,则

intval返回0。然后检查它是否在范围之间。

 $rows = $_GET['rows'];

 if (($value = intval($rows)) !== 0 && 1 <= $value && $value <= 10) {
    echo "Number is ok";
 } else {
    echo "Please enter a valid number between 1 and 10.";
 }

如果不设置变量:

 $rows = $_GET['rows'];
 $value = intval($rows);

 if (1 <= $value && $value <= 10) {
    echo "Number is ok";
 } else {
    echo "Please enter a valid number between 1 and 10.";
 }

intvalhttp://www.php.net/manual/en/function.intval.php

答案 1 :(得分:0)

可能你需要这个......你为什么要迭代呢?

 $rows = $_GET['rows'];
 if (is_numeric($rows) && $rows <= 10 && $rows >= 1) {
    echo "Number is ok";
 } 
 else {
    echo "Please enter a valid number between 1 and 10.";
 }

答案 2 :(得分:0)

简单地转换为int并使用常规条件:

$rows = (!empty($_GET['rows']) ? (int)$_GET['rows'] : 0);
//Cast it!                       ^^^^^

if ($rows >= 1 && $rows <= 10) {
    //We got a match!
} else {
    //We don't have a match!
}

注意:这也会将1.234变为1

答案 3 :(得分:0)

你可以试试这个。

 $rows = (isset($_GET['rows']) ? $_GET['rows'] : 0);

 if (is_numeric($rows) && $rows >= 1 && $rows <= 10) {
    echo "Ok";
 } 
 else {
    echo "Fail";
 }