【问题标题】:$_GET to store a dynamic session$_GET 存储动态会话
【发布时间】:2018-10-01 01:53:17
【问题描述】:

我是 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();
}


?>

我的问题是有人更改了 url (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'){}

谢谢!

【问题讨论】:

  • if (isset($_GET['q1']) 这应该会给你一个解析错误。
  • header('index.php'); 什么都不做。
  • 嗨@FunkFortyNiner 我已经修复了标题,但我不知道如何修复解析错误
  • 可以通过添加另一个(右)括号if (isset($_GET['q1']))来修复解析错误。
  • 是的,抱歉,我错过了 ).. 抱歉,谢谢!

标签: php html session


【解决方案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();
}

【讨论】:

  • 注:if (isset($_GET['q1']){ 是 OP 所做的解析错误,您在没有修复它/添加缺少的括号的情况下复制了它。编辑:与 header('index.php'); 一起什么都不做。
  • 我可能错过了一些东西,但它不起作用。谢谢。
  • 感谢您的关注。我会相应地更新我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2012-02-12
  • 1970-01-01
相关资源
最近更新 更多