标题可能有点误导,但我将在这里进行解释。基本上,当我把我的网站置于"离线模式"时,我有一个管理员可以用密码登录的部分。(他们是而不是使用帐户登录)在本例中,密码为"password"。当用户输入正确的密码时,它应该将他们重定向到网页,尽管不是,但它只是在回应"不正确的密码"——事实上它是正确的。
正如你可能知道的,代码是我编的。我预计这不会奏效,因为我还处于学习PHP的早期阶段
HTML:
<div class="backdroplogin">
<h2>Login to your account:</h2>
<form action="/Offline" method="GET">
<input type ="password" name="password_login" size="25" Value="" />
<input type="submit" name="login" value="Login" />
</div>
</form>
PHP:
//ADMIN LOGIN
$password = "AbCd0987connekt£*^%";
if (isset($_GET["password_login"])) {
$password_login = $_GET["password_login"];
if ($password_login == $password) {
header("Location:/Admin/Panel");
} else {
echo "Incorrect password";
}
}
谢谢你的帮助。
就像Svetlio说的那样。。使用get方法发送密码是个坏习惯。因此,在html表单中使用method="post"
,在php中使用$_POST["password_login"]
。
在你的文本中,你说你使用"password"
作为这个工具的密码,而在你的php中,你检查发送的密码是否等于"AbCd0987connekt£*^%"
,所以如果你输入密码,你应该使用"AbCd0987connekt£*^%"
。。。或者你是说你使用"$password"
另一个提示:为了提高代码的可读性,请尝试缩进:)
您可以验证密码是否正确,并将标志放入会话变量中。然后在管理页面上检查该会话标志是否可以正确访问。
if($_SESSION['IsAdmin'] === true {
//load/redirect to page
} else {
die("You aren't an admin.");
}
此外,正如其他人所说,不要使用GET作为密码,也绝对不要将其作为明文传递。
我同意这一评论。但只是为了回答你的问题:
你的脚本中一切都很好,但我认为当你说"这个例子的密码是‘密码’,而密码恰恰是:AbCd0987connekt£*^%,就像你在代码中写的那样。我在我的平台中复制了你的代码(更改了操作),它按照你的意愿工作。