PHP验证代码不适合年龄?

时间:2017-03-14 16:05:08

标签: javascript php html validation settings

我有一个刚登录的用户,我会对用户的年龄进行会话,因为我需要进行验证。一旦用户登录,他将被重定向到具有显示他可以进行的调查的表的页面。当管理员创建调查时,可以选择年龄范围,这意味着只有某个年龄段的人可以参加调查

<select name="agestart" class="form-control-static">      

<label> TO </label>

<select name="ageend" class="form-control-static">

现在我正在尝试进行验证/设置,让用户只能看到符合其年龄范围的调查。

 <?php



    $mysqli = mysqli_connect("localhost", "root", "", "imetrics");

    $query = mysqli_query($mysqli,"SELECT * FROM surveyform");

    if($query){
        while($row = mysqli_fetch_array($query)){

            $id = $row['survey_id'];
            $title = $row['surveytitle'];
            $agestart = $row['age_start'];
            $ageend = $row['age_end'];

            if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend ){

                echo "<tr align='center'>";
                echo "<td><font color='black'>" . $id . "</font></td>";
                echo "<td><font color='black'>" . $title . "</font></td>";
                echo "<td><a href='preview.php?survey_id=$id'><input class='btn btn-danger' type='button' value='Take Survey'/></td>";

                echo "</tr>";
            }
        }
    }

    ?>

但似乎我的病情有问题,因为如果用户年龄高于agestart和ageend我认为它只能工作(不显示)。我现在真的很困惑。

if(!$_SESSION['age'] >= $agestart || $_SESSION['age'] <= $ageend ){

4 个答案:

答案 0 :(得分:1)

这是进行年龄检查的正确方法:

$age = intval($_SESSION['age']);
if ($agestart <= $age && $age <= $ageend) {

答案 1 :(得分:1)

你可以做两件事,要么添加session_start();并修复您的条件或更改您的SQL查询。

session_start();
$sessionAge = $_SESSION['age'];

$query = mysqli_query($mysqli,"SELECT * FROM surveyform WHERE $sessionAge BETWEEN age_start AND age_end");  

// OR with a condition

if(($agestart <= $sessionAge) && ($sessionAge <= $ageend)) {
    //....
}

答案 2 :(得分:0)

我认为你还没有开始会议:

session_start(); //Should be at the beginning of the file

请注意$_SESSION['age']应该有一个值:

$age = (isset($_SESSION['age'])) ? $_SESSION['age'] : 0; //For PHP < 7.x
$age = $_SESSION['age'] ?? 0; //For PHP 7

答案 3 :(得分:0)

布尔条件写错了;我在逻辑上知道这相当于上面的答案,但恕我直言这更容易阅读:

if($_SESSION['age'] >= $agestart && $_SESSION['age'] <= $ageend)

也许我老了,但$agestart <= $age && $age <= $ageend对大多数人来说可能更难以快速阅读和理解。