我正在閱讀我的「學習PHP」書籍中相當有趣的一章,並且遇到了一個代碼示例,我想在我的個人網站上修改和使用該代碼示例(爲了保護簡單的文檔, 「大」,這就是爲什麼我也不加密密碼)。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
,這會導致問題(這是「什麼都沒有發生」),這是在我的書中,但我不知道爲什麼/從哪裏來的?
你期待看到什麼?反而發生了什麼? (你知道,「它不工作」和「什麼都沒有發生」是一種......模糊) – Piskvor 2010-09-09 13:29:49
你是對的,不是很清楚......基本上,我想要的是,如果表單已經最近提交,顯示「歡迎」的事情。如果尚未提交,請顯示錶單。如果提交的表單沒有錯誤,沒有問題。如果提交時出現錯誤,請再次使用「簡易錯誤日誌」 – Latze 2010-09-09 17:27:52