3

我有一个想要密码保护的页面。如果用户点击 URL www.webpage.com/page.php ,则该页面应该可以访问。它将通过电子邮件连同验证码一起发送给用户。

我的大部分页面都是用 jQuery 编写的。我想知道如何防止在没有正确密码的情况下访问该页面。在用户输入正确的密码并验证后,它将显示内容。

我尝试使用 jQuery 对话框做一些事情,并隐藏内容然后在验证后显示它,但是如果用户查看页面的源代码,则可以查看内容。

我该怎么做呢?

我只是想避免创建一个新页面。我想我将不得不使用会话。

4

3 回答 3

1

是的,你可以这样做,但如果你只通过密码保护页面客户端它不是一个好主意,因为用户可以修改 JavaScript/jquery,你可以在验证密码后通过 ajax 加载内容。

为了防止没有密码的访问,请不要加载密码未验证的数据(因为我认为您正在通过 ajax 验证密码)

于 2012-09-15T02:59:14.373 回答
1

如果您只是想要一个快速简单的解决方案,您还可以考虑使用 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!";
    }
}
?>

您还可以在此处找到更详细的实现。

于 2012-09-15T03:49:37.497 回答
0

您需要验证他们在 PHP 中使用(正确的)密码,然后实际将内容输出给他们。如果他们没有密码,那么将其隐藏起来是不可行的。

通常,会话变量用于此目的。验证脚本检查用户登录名/密码并被接受,将会话变量分配给用户。

然后在您的实际代码(对于秘密页面)中,您检查此会话变量,如果它存在,您继续向用户显示内容,如果不匹配,则显示错误消息或重定向用户通过header().

于 2012-09-15T02:58:23.370 回答