首页 > 解决方案 > 如何重定向到带有密码的页面,但无法通过 URL 访问该页面?

问题描述

我正在学习网络开发,并且正在创建一个拼图网站,其中主页只有一个答案输入,并将根据答案将用户重定向到下一个拼图。例如解决了第一级,答案是“解决方案”。键入“解决方案”时,用户将被重定向到第二级。

但重要的是用户只能使用密码访问二级页面,否则将不允许。

我有一个超级基本的草稿,可以根据答案正确重定向用户,但我不知道如何正确限制对下一个级别的直接访问。

主页输入:

<form method="post" action="validation.php">
Answer: <input type="text" name="answer">
<input type="submit">
</form>

验证.php:

<?php
$input = $_POST["answer"];
if ($input == "correct answer 1") {
    header("Location: /levels/level2/level2.php"); }
if ($input == "correct answer 2") {
    header("Location: /levels/level3/level3.php"); }
if ($input == "correct answer 3") {
    header("Location: /levels/level4/level4.php"); }
?>

答案的顺序无关紧要;如果用户输入第7级的密码而没有先通过之前的级别,他应该被带到第7级。我也不太担心安全性;我想做的就是和一些朋友一起玩游戏。我相信有一种方法可以使用 PHP 和 JS 来做到这一点,但是任何可行的解决方案都可以。

标签: javascriptphphtml

解决方案


好的,如果您使用 post 变量进行验证,这非常简单。

例如,您可以添加进一步的验证,如下所示:

if (isset($_POST["answer"]) )  //*we ask if there's an answer...*//
{
    $input = $_POST["answer"];
    if ($input == "correct answer 1") {
      header("Location: /levels/level2/level2.php"); }
    if ($input == "correct answer 2") {
      header("Location: /levels/level3/level3.php"); }
    if ($input == "correct answer 3") {
      header("Location: /levels/level4/level4.php"); }

}else{

 header("Location: accessDenied-page.php"); //*if there's not an answer, we can redirect users to other page.*//

}

我不确定这是否是您正在寻找的,如果不是,请告诉我。

在 EveryLevel.php 中,您需要重新验证isset,如下所示:

<?php
if (isset($_POST["answer"]) )  //*we check if there's an answer...*//
{
 header("Location: accessDenied-page.php");  //*we redirect user somewhere else*//
}
?>


推荐阅读