我正在尝试创建一个受密码保护的网站.在这里我想做的是,如果用户第一次访问我的网站然后需要插入密码来访问我的网站.他们第一次输入密码时可以自由访问我的网站.
这就是我使用javascript和做的方式php:
<?php if($page == 'index'): ?>
<script language="Javascript">
//prompt.
var password;
var correctPass = "123456";
password = prompt("Enter in the password:","");
if(password == correctPass) {
alert('click OK to view this site');
} else {
window.location = "http://google.com"
}
//->
</script>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
这是有效但我的问题是如果用户再次进入索引页面,他们需要插入密码.
任何人都可以告诉我如何解决这个问题.谢谢.
不要在JavaScript中这样做.任何人都可以查看您的源代码并查看密码.用PHP检查密码.然后使用$_SESSION变量来保存站点上的状态.您可能还希望使用$_COOKIE变量进行长期访问,但$_SESSION在大多数情况下,通常首选密码访问.
另一种方法是使用您的Web服务器.例如,如果您使用的是Apache,则可以.htaccess在网站的根目录下创建一个文件,要求输入名称和密码.这样你甚至不需要编码任何东西.
要执行第二个选项,请在Web目录的根目录中创建名为.htaccess的文件.在文件中放入:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /opt/passwords/.htpasswd
Require valid-user
Run Code Online (Sandbox Code Playgroud)
(其中/ opt/passwords是您的web目录之外的目录位置.它可以在您想要的任何地方,您只是想确保它不在您的Web目录中的任何位置(否则它将可供公众查看)).
在该目录中,创建一个名为.htpasswd的文件.此文件将只使用用户名和加密密码.此页面允许您使用密码加密创建您的名称:http://www.htaccesstools.com/htpasswd-generator/.只需将其粘贴到.htpasswd文件中即可.
如上所述,如果您只使用http而不是https,则可以拦截您使用的任何密码,但如果您之前没有使用过,则设置https有点困难.