Я искал простую форму PHP-сценария +, которая перенаправляла пользователей на определенные URL-адреса на основе введенного имени пользователя и пароля.
Код в верхней части страницы:
<?php
session_start();
$data=array("user1"=>array("url"=>"file1.php","password"=>"pass1"),
"user2"=>array("url"=>"file2.php","password"=>"pass2"));
if(isset($_POST['username']) && isset($_POST['password'])) {
if($data[$_POST['username']]['password'] == $_POST['password']) {
$_SESSION['username'] = $_POST['username'] . " " . $_POST['password'];
header('Location: ' . $data[$_POST['username']]['url']);
login('<p class="alert">Incorrect username or password.</p> ');
}
} else {
login();
}
?><?php
function login($response='Please enter your username and password.') {
?>
Это в теле:
<p><?=$response?></p>
<form action="" method="post">
<table width="400" border="0" cellspacing="0" cellpadding="4">
<tr>
<td width="90"><label class="loginform" for="username">Username:</label></td>
<td width="294"><input name="username" type="text" /></td>
</tr>
<tr>
<td><label for="password">Password:</label></td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
<?php } ?>
Этот код работает правильно, но если пользователь вводит неправильный пароль, он перенаправляет на пустую страницу (в частности, он загружает страницу только после последней:
<?php } ?>
Я понимаю, что этот код написан плохо, так что это первая проблема. Я бы очень хотел увидеть хорошо написанную версию (просто учиться и изучать ее). Но если это невозможно, как бы я исправил этот код, чтобы неверный пароль не сломал страницу?
Это странно, потому что, если вы ничего не вводите (просто нажимаете «Отправить»), он говорит «Неверное имя пользователя или пароль», и если вы просто вводите неправильное имя пользователя без пароля, то же самое. Но с именем пользователя + неправильным паролем или только неправильным паролем, он переходит на пустую страницу.
Заранее спасибо!