我知道这是不好的做法。在将这些密码放入AD环境之前,这是暂时的。关键是,我试图让密码匹配工作,看起来我错过了什么。
基本上,我有一个.secrets
文件,其中包含以下格式的密码:
user1:pass1 user2:pass2 etc, etc
以下是整个PHP文件:
<?php
//If Submit Button Is Clicked Do the Following
if ($_POST['submit']){
$username = $_POST['username'];
$secret_word = $_POST['secret_word'];
$password = $_POST['password'];
$fh = fopen('.secrets','r');
$result = explode(":",$fh);
for($i=0; $i< count($result); $i++){
if($result[$i] === $username && $result[$i+1] === $secret_word) {
echo "Matched";
break;
} else {
echo "Secret Word Incorrect - Please try again";
break;
}
}
fclose($fh);
}
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<p>User:</p>
<input name="username" required="required" type="text" id="username" />
<p>Password:</p>
<input name="password" required="required" type="password" id="password" />
<p>Confirm Password:</p>
<input name="password_confirm" required="required" type="password" id="password_confirm" oninput="check(this)" />
<script language='javascript' type='text/javascript'>
function check(input) {
if (input.value != document.getElementById('password').value) {
input.setCustomValidity('Password Must be Matching.');
} else {
// input is valid -- reset the error message
input.setCustomValidity('');
}
}
</script>
<p>Secret Word:</p>
<input name="secret_word" type="password" required="required" id="secret_word" />
<p><input type="submit" name="submit" /></p>
</form>
唯一不起作用的部分是匹配以及它没有说&#34;匹配&#34;或&#34;不匹配&#34;。我觉得我已经接近这个了,但我一直试图在过去30分钟内让这个工作。 顺便说一下,顺便说一下,我试图匹配用户名和&#34; secret_word&#34;而不是密码字段。
print_r
的输出:
Array
(
[username] => user1
[password] => asdf
[password_confirm] => asdf
[secret_word] => pass1
[submit] => Submit
)
先谢谢。
答案 0 :(得分:1)
您似乎打开了要读取的文件,但实际上并没有继续阅读该文件。
我选择使用PHP的file_get_contents()
来减少冗长。
我接下来要做的就是先拆分行(\n
),然后再拆分:
。如果我们只是提前发送到:
分割,那么您的某些数据会有新的上线 - 您也可以trim()
离开。我刚刚选择了这种方法,因为它更清晰。
更新的代码如下所示:
if ($_POST['submit']){
$username = $_POST['username'];
$secret_word = $_POST['secret_word'];
$password = $_POST['password'];
$file = file_get_contents('.secrets');
$lines = explode("\n", $file);
$matched = false;
for ($i = 0; $i < count($lines); $i++) {
list($stored_user, $stored_pass) = explode(":", $lines[$i]);
if ($stored_user === $username && $stored_pass === $secret_word) {
$matched = true;
break;
}
}
if ($matched) {
echo "Matched!";
} else {
echo "Secret Word Incorrect - Please try again";
}
}