我有一个页面,我想用密码保护。如果用户点击 URL www.webpage.com/page.php,则应该可以访问此页面 它将与验证码一起通过电子邮件发送给用户。
我的大部分页面都是用jQuery编写的。我想知道如何防止在没有正确密码的情况下访问该页面。用户输入正确的密码并验证后,将显示内容。
我尝试使用 jQuery 对话框做一些事情,并隐藏内容然后在验证后显示它,但是如果用户查看页面的源代码,他们可以查看内容。
我应该怎么做?
我只是想避免创建新页面。我想我将不得不使用会话。
是的,您可以这样做,但是如果您仅通过密码客户端保护页面,那甚至不是一个好主意,因为用户可以修改JavaScript/jquery,您可以在验证密码后通过ajax加载内容。
为了防止没有密码的访问,不要加载密码不验证的数据(因为我认为您正在通过 ajax 验证密码)
如果你只是想要一个快速简便的解决方案,你也可以考虑使用HTTP身份验证和PHP。它可以像下面一样简单
<?
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()
将用户重定向到另一个页面。