【问题标题】:Preventing direct access to my HTML page防止直接访问我的 HTML 页面
【发布时间】:2018-04-23 05:09:07
【问题描述】:

我目前正在处理联系我们页面 (contact.html)。电子邮件的发送由 php 文件 (mailer.php) 处理。到目前为止,我想做的功能正常工作,正在发送电子邮件,我被重定向到我的成功页面等等。但是,我想限制人们直接访问我的成功页面。

在 mailer.php 中,我使用以下代码重定向:

header('Location: success.html');
exit;

如何防止用户通过在地址栏输入地址直接访问该页面?

提前致谢。

【问题讨论】:

  • 您可以使用会话。但是您必须将您的 html 文件更改为 php,以便您的成功页面可以检查会话值以处理受限访问。
  • 您可以通过会话检查。设置一些标志并检查它是否为真,然后用户可以访问该页面。
  • 首先,你需要对表单使用POST方法而不是GET,然后使用CSRF令牌来防止直接访问。

标签: php html redirect url-redirection


【解决方案1】:

首先,您需要将您的 html 页面转换为 php,然后您可以在联系我们页面中设置会话变量,然后当邮件成功发送给用户时,您可以检查此会话变量的值来决定天气是否重定向用户。

假设这是您的联系我们页面。

<?php
    // code for sending mail
    if(the mail is sent successfully then)
    {
      $_SESSION["redirect_to_success"]=true;
    }
?>

这可以是成功页面上的代码

<?php
  if(!isset($_SESSION["redirect_to_success"]))
  {
     header("location:contactus.php");
  }
  else
  {
    unset($_SESSION["redirect_to_success"]);
  }
?>

这里取消设置会话变量允许使用仅当邮件发送成功时重定向到成功页面。一旦他/她被重定向到成功页面,会话变量将被取消设置。并且还使用布尔值可以减少内存消耗

【讨论】:

  • 在'$_SESSION["redirect_to_success"]=true;'行之后我应该调用success.php吗?
  • 所以我在设置会话值后调用了success.php,但是似乎会话值没有被保存,因为即使我收到电子邮件,我总是重定向回联系页面
  • 更新:我通过添加 session_start(); 解决了我的问题在两个 php 文件之上。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 2010-09-16
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2016-11-22
  • 2012-05-22
  • 1970-01-01
相关资源
最近更新 更多