Я читал довольно интересную главу в своей книге «Изучение PHP» и наткнулся на пример кода, который я хотел изменить и использовать на моем личном веб-сайте (для защиты простого документа, ничего «большого», который поэтому я тоже не шифрую пароли).
Я использовал php-пример и просто не могу заставить его работать.
Вот оно (не пугайтесь длины, это действительно просто):
<?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
в самом начале, что вызывает проблему (что "ничего не происходит"), это было в моей книге, но я не уверен, почему / где исходит из?