$ _GET存储动态会话

时间:2018-09-30 17:21:51

标签: php html session

我是一个PHP新手,如果可以的话,我需要一些帮助。 我有一个类似于女巫调查的小网站,我单击一个链接,然后在下一页中获得上一个变量,并将其存储在所有调查中。

在第一页中,我有5个按钮可供选择:

<a href="question-2.php?q1=1" class="sfondo-form w-inline-block"></a>
<a href="question-2.php?q1=2" class="sfondo-form w-inline-block"></a>
<a href="question-2.php?q1=3" class="sfondo-form w-inline-block"></a>
<a href="question-2.php?q1=4" class="sfondo-form w-inline-block"></a>
<a href="question-2.php?q1=5" class="sfondo-form w-inline-block"></a>

在第二页中,我使用$ _GET获得第一个变量

<?php
// Starting session
session_start();


if (isset($_GET['q1'])){
    $question_1 = $_GET['q1'];
    $_SESSION['q1'] = $question_1;
    echo '<br>';
    echo $_SESSION['q1'];
}
else{
    header('location: index.php');
    exit();
}


?>

我的问题是有人更改了网址(question-2.php?q1 = ANYTHING-ELSE) 我需要将它们重定向到主页。 基本上,我只需要在If中使用echo语句,就只能{5个href

的五个结果

所以我可以进行一个$_SESSION['q1']会话,其中包含动态内容,但仅限于这五个会话。

我知道这是错误的,但是我需要限制对此的访问:

if (isset($_GET['q1']) && (($_GET['q1'])= '1' or '2' or '3' or '4' or '5'){}

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在这里执行一个允许值数组,并检查 q1 值是否为给定数组中的值之一:

<?php
// Starting session
session_start();

$allowed = array(1, 2, 3, 4, 5);
if (isset($_GET['q1'])) {
    $question = (int) $_GET['q1'];
    if(in_array($question, $allowed, true)){
        $_SESSION['q1'] = $question;
        echo '<br>';
        echo $_SESSION['q1'];
    } else {
        header('Location: index.php');
        exit();
    }
} else {
    header('Location: index.php');
    exit();
}