【发布时间】:2016-04-24 03:53:06
【问题描述】:
我正在寻找在一个 PHP 页面上进行密码保护的正确过程。最好使用同一页面/文件中存在的所有代码。
我在 Stack Overflow 上看到过一些示例,但它们总是有将所有代码粘贴到页面顶部的说明。所做的是在页面顶部添加一个密码输入框,同时绝对加载您可能想要保护的所有内容,因为代码中没有任何内容或说明中没有明确指示如何制作它的信息是在输入密码之前实际上是隐藏的。
以下是回答问题时堆栈溢出通常发生的示例:
用户被告知将其粘贴到其 php 文档的顶部:
if (isset($_COOKIE['PrivatePageLogin'])) {
if ($_COOKIE['PrivatePageLogin'] == md5($password.$nonsense)) {
?>
<!-- LOGGED IN CONTENT HERE -->
<?php
exit;
} else {
echo "Bad Cookie.";
exit;
}
}
if (isset($_GET['p']) && $_GET['p'] == "login") {
if ($_POST['user'] != $username) {
echo "Sorry, that username does not match.";
exit;
} else if ($_POST['keypass'] != $password) {
echo "Sorry, that password does not match.";
exit;
} else if ($_POST['user'] == $username && $_POST['keypass'] == $password) {
setcookie('PrivatePageLogin', md5($_POST['keypass'].$nonsense));
header("Location: $_SERVER[PHP_SELF]");
} else {
echo "Sorry, you could not be logged in at this time.";
}
}
?>
然后他们被告知将其直接粘贴到下面:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?p=login" method="post">
<label><input type="text" name="user" id="user" /> Name</label><br />
<label><input type="password" name="keypass" id="keypass" /> Password</label><br />
<input type="submit" id="submit" value="Login" />
</form>
在这种情况下,任何东西都不会受到保护。该页面将立即加载所有内容,但页面顶部会有一个用户名和密码字段。从技术上讲,它可以正常工作,同时什么也不保护。
为了使这项工作正常进行,您是否将整个页面内容放在表单标签中?你是做什么的?
这似乎是一个奇怪的问题,但在这个网站的整个存在过程中,人们一直在回答这样的问题。该代码始终有效,但其基本使用说明通常不完整或不正确。
抢先回答几个问题: htaccess 是在浪费时间和精力,与仅仅保护文件或文件夹相比,您花费更多时间试图找出它导致内部服务器错误的原因。
信息不需要天网级AI保护,所以php就可以了。
【问题讨论】: