【问题标题】:Restrict users from viewing page in PHP限制用户在 PHP 中查看页面
【发布时间】:2020-01-20 17:32:10
【问题描述】:

我正在制作的网站有问题。我正在制作一个网站,用户可以在该网站上观看短视频,之后他们可以注册并获得一个链接来验证他们的电子邮件。电子邮件转到他们输入的电子邮件,并且他们有一个验证链接,该链接指向另一个页面。该页面有一个指向完整视频的按钮。现在我想阻止用户在验证电子邮件之前查看验证页面和用户查看完整视频的页面。我对 PHP 还很陌生,我尝试了一些东西,我认为它不是那么好,但我仍在学习。

我想在用户转到 localhost/verify.php 时重定向用户,并允许他们在 URL 为 localhost/verify.php?verified=1 时访问页面,即 ?verified=1 URL 正在发送到他们的电子邮件。

但无论我输入什么,它都会重定向 index.php

verify.php

 if (stripos($_SERVER['REQUEST_URI'], 'verify.php')){
    header('Location: index.php');
  }
  else if (stripos($_SERVER['REQUEST_URI'], 'verify.php?verified=1')){
    header('Location: verify.php');
  }

由于用户没有注册选项并且我没有保存任何会话,因此我有什么办法可以做得更好。

【问题讨论】:

  • 您可以通过在您的用户表中添加一个名为verified 的新列从您的数据库中获取它,这将需要truefalse 并在每一页中检查他是否已验证
  • 我说我没有使用注册选项或任何,它甚至没有连接到数据库
  • 一个人所要做的就是将 URL 复制到文本编辑器中并手动添加 ?verify=1 到它。或者将该版本的链接粘贴到论坛或聊天室以供其他人使用。如果您不打算使用带有登录名、一次性令牌或具有使用限制的帐户 ID 令牌的数据库,则您无法真正保护页面。

标签: javascript php laravel


【解决方案1】:

即使您没有创建用户,您也可以有一个表来表示这些电子邮件地址,其中包含 key, email, verified(bool), verification_token(unique string) 然后在控制器中验证路由您可以检查该验证令牌是否存在,将用户标记为已验证并将它们传递给视频。这也允许您将该令牌存储在一个 cookie 中,您可以在没有查询参数的情况下随时检查它们到达该正常端点,您仍然可以将它们视为已验证。身份验证不完整,但听起来您不希望这些电子邮件具有完整的可验证用户

【讨论】:

  • ^ 这就是我要做的。很好的解决方案。
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2015-05-09
  • 2014-09-28
  • 2014-07-21
  • 1970-01-01
  • 2018-07-21
  • 2012-03-21
  • 2022-10-24
相关资源
最近更新 更多