我有一个刚登录的用户,我会对用户的年龄进行会话,因为我需要进行验证。一旦用户登录,他将被重定向到具有显示他可以进行的调查的表的页面。当管理员创建调查时,可以选择年龄范围,这意味着只有某个年龄段的人可以参加调查
<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 ){
答案 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
对大多数人来说可能更难以快速阅读和理解。