gpt4 book ai didi

php - PHP 中的简单密码保护

转载 作者:行者123 更新时间:2023-12-02 06:24:16 25 4
gpt4 key购买 nike

我正在阅读我的“学习 PHP”一书中的一个非常有趣的章节,并且遇到了一个代码示例,我想修改它并在我的个人网站上使用(以保护一个简单的文档,没有什么“大”,它这就是为什么我也不加密密码的原因)。

我已经使用了 php-sample,但我根本无法让它工作。
在这里(不要被长度吓到,它真的很简单):

<?php

if ($_POST['_submit_check']) {
if ($form_errors = validate_form()) {
show_form($form_errors);
} else {
process_form();
}
} else {
show_form();
}

function show_form($errors = '') {
echo '<form method="POST" action="' . $_SERVER['PHP_SELF'] . '">';

if ($errors) {
echo '<br>'
echo implode('<br>', $errors);
echo '<br>';
}

echo 'Username: ';
echo '<input type="text" name="username" value="Username goes here">';
echo '<br>'

echo 'Password: ';
echo '<input type="password" name="password">';
echo '<br>'

echo '<input type="submit" name="submit" value="Log In">';
echo '<input type="hidden" name="_submit_check" value="1">'; //when the form is entered, this returns true and the first line of the document is good to go

echo '</form>';
}

function validate_form() {
$errors = array();

$users = array('admin' => 'pass123',
'notsoadmin' => 'pass1234');


if (!array_key_exists($_POST['username']) {
$errors[] = "Please enter username and password";
}

$saved_password = $users[ $_POST['password'] ];
if ($saved_password != $_POST['password']) {
echo "Password and username don't match. Please try again";
}

return $errors;
}

function process_form() {
$_SESSION['username'] = $_POST['username'];

echo "Welcome, $_SESSION[username]";
}

?>

在我的 HTML 和东西之前我还添加了这个:

<?php session_start(); ?>

显然我错过了一些东西......也许是 $form_errors 就在一开始,这导致了问题(即“什么都没有发生”),它在我的书中,但我不确定它为什么/来自哪里?

最佳答案

不应该...

    $saved_password = $users[ $_POST['password'] ];
if ($saved_password != $_POST['password']) {
...
}

实际上是..

    $saved_password = $users[ $_POST['username'] ];
if ($saved_password != $_POST['password']) {
...
}

即您应该在 $users 中查找用户名条目而不是密码

顺便说一句,像那样存储原始密码是非常糟糕的做法。考虑 HASH荷兰国际集团和SALT正在处理它们。

检查 this question出门求资料

关于php - PHP 中的简单密码保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3676968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com