javascript - 如何重定向到带有密码的页面,但无法通过 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 来做到这一点,但是任何可行的解决方案都可以。
解决方案
好的,如果您使用 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*//
}
?>
推荐阅读
- telegram - 电报链接与文本聊天
- reactjs - 在尝试使用 DRF 获取数据时,在 axios GET Response 中接收纯 Js 代码文件以做出反应
- javascript - 无法从 Node.js (express) 服务返回 xlsx 文件,该服务从 S3 存储桶获取该文件以供浏览器应用程序使用
- python - 关于在 Mac 上通过终端运行 input() 函数的问题
- php - 是否可以将所有自定义函数文件放在一个文件夹中并让所有 php 脚本默认访问它们?
- excel - Excel 间接引用产生 #ref 错误
- python - PySpark 一种将不同列数据聚合/组合在一起的方法
- snowflake-cloud-data-platform - 两个帐户之间的数据共享,但具有修改数据的能力
- azure - 来自类库的 Azure 函数调用方法?
- javascript - jsPDF在IE11浏览器中无法正常工作