我有一个想要密码保护的页面。如果用户点击 URL www.webpage.com/page.php ,则该页面应该可以访问。它将通过电子邮件连同验证码一起发送给用户。
我的大部分页面都是用 jQuery 编写的。我想知道如何防止在没有正确密码的情况下访问该页面。在用户输入正确的密码并验证后,它将显示内容。
我尝试使用 jQuery 对话框做一些事情,并隐藏内容然后在验证后显示它,但是如果用户查看页面的源代码,则可以查看内容。
我该怎么做呢?
我只是想避免创建一个新页面。我想我将不得不使用会话。
我有一个想要密码保护的页面。如果用户点击 URL www.webpage.com/page.php ,则该页面应该可以访问。它将通过电子邮件连同验证码一起发送给用户。
我的大部分页面都是用 jQuery 编写的。我想知道如何防止在没有正确密码的情况下访问该页面。在用户输入正确的密码并验证后,它将显示内容。
我尝试使用 jQuery 对话框做一些事情,并隐藏内容然后在验证后显示它,但是如果用户查看页面的源代码,则可以查看内容。
我该怎么做呢?
我只是想避免创建一个新页面。我想我将不得不使用会话。
是的,你可以这样做,但如果你只通过密码保护页面客户端它不是一个好主意,因为用户可以修改 JavaScript/jquery,你可以在验证密码后通过 ajax 加载内容。
为了防止没有密码的访问,请不要加载密码未验证的数据(因为我认为您正在通过 ajax 验证密码)
如果您只是想要一个快速简单的解决方案,您还可以考虑使用 PHP 的 HTTP 身份验证。它可以像以下一样简单
<?
header("Content-type: text/html; charset=utf-8");
if(empty($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Please input"');
header('HTTP/1.0 401 Unauthorized');
echo 'Please enter the correct username and password.';
exit;
} else {
echo "Username: ".$_SERVER['PHP_AUTH_USER']."<br>";
echo "Password: ".$_SERVER['PHP_AUTH_PW']."<p>";
$username = "demo";
$password = "demo";
if(($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
echo "Login Failed!";
} else {
echo "You're in!";
}
}
?>
您还可以在此处找到更详细的实现。
您需要验证他们在 PHP 中使用(正确的)密码,然后才实际将内容输出给他们。如果他们没有密码,那么将其隐藏起来是不可行的。
通常,会话变量用于此目的。验证脚本检查用户登录名/密码并被接受,将会话变量分配给用户。
然后在您的实际代码(对于秘密页面)中,您检查此会话变量,如果它存在,您继续向用户显示内容,如果不匹配,则显示错误消息或重定向用户通过header().