【问题标题】:Prevent direct access to a webpage by typing the URL通过键入 URL 来防止直接访问网页
【发布时间】:2016-05-29 12:35:49
【问题描述】:

所以我在 goDaddy 上托管我的网站(我们称之为 abc.com)。

我有一个登录页面 (abc.com/login.html)。

验证登录凭据后,我会转到名为预订 (abc.com/booking.html) 的第二个页面。

所以我不希望人们只需键入 abc.com/booking.html 并访问它。我希望他们访问 abc.com/login.html,然后访问 abc.com/booking.html

所以我遇到了两种方法来解决这个问题 -

  1. 在 booking.html 中包含一个验证 php 脚本,并将扩展名从 html 更改为 phtml。 -> 这对我不起作用
  2. 包括一个 .htacess 文件。 -> 我不太确定该怎么做

【问题讨论】:

  • 您可能需要$_SESSION 进行预防。
  • 你需要在服务器端做一些事情。 .htaccess 文件会取代您的登录页面,我认为您不希望这样。因此,正如其他人所说,您需要使用 PHP 或其他服务器语言(node.js、Java ......我不知道 goDaddy 上有哪些)。这个概念是在用户登录后给他一个会话 id。这个会话 id 可以例如存储在 cookie 或 somwhere 中。当用户访问页面时,脚本会检查会话 ID。只有id有效,用户才能继续。
  • 记住 $_SESSION 运行 PHP 而不是 HTML
  • 如果我的回答对你有用,请告诉我
  • 您的服务器可能不支持phtml - 我的不支持。尝试php,或查看您的服务器配置以确保扩展程序正确通过 PHP。

标签: php html apache


【解决方案1】:

因此您的登录屏幕应该已经实现了会话代码,其中包含一个指定用户是否登录的变量。如果您还没有实现,代码将类似于:

<?php session_start();//at the very top of the page
?>
//... your own code
//if the user successfully logs in then:
$_SESSION['authenticated']=true;

然后在 booking.php 页面上(应该是 php 以允许使用 php 脚本,这对于验证用户是否登录非常重要),然后您将检查用户是否登录。如果他登录了,其余的页面加载,如果他没有,你会将它们重定向到 login.php:

在 booking.php 的最顶部:

<?php session_start();
if (!isset($_SESSION['authenticated']))
{
    //if the value was not set, you redirect the user to your login page
    header('Location https://www.example.com/login.php');
    exit;
}
else
{
   //if the user did login, then you load the page normally
}

【讨论】:

  • @kalpitha 没问题 :)。哦,如果这个答案对你有用,请接受它(带有绿色复选标记),以便未来的用户和读者知道它对你有用。
【解决方案2】:
  1. 使用 $_SESSION 或
  2. 将变量从 login.php 传递到 booking.php。然后根据使用 $_POST 方法传递的变量对每个用户进行身份验证。

例如。

if (!isset($_POST['auth'])) {
 // redirect user back to login page
} else {
 // successful login
}

【讨论】:

    【解决方案3】:

    你可以这样做

    重命名您需要此身份验证的所有页面的扩展名

    例如

    login.html >> login.php
    booking.html >> booking.php
    booking-suceess.html >> booking-success.php
    

    使用以下代码创建一个脚本,即auth.php

    <?php
    session_start();
    if(!isset($_SESSION['username'])){
        header("location:login.php");
    }
    ?>
    

    login.php添加会话

    $_SESSION['username'] = $_POST['username'];
    

    现在您可以在任何您希望强制登录的 php 页面中添加 auth.php,如下所示:

    include ('auth.php');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多