Я изучаю php. Книга, которую я читаю, это "PHP и mysql web development".
Для кода на стр. 394 он имеет следующие ошибки: Не могли бы вы сказать мне, что случилось?
Коды таковы:
<?php
$name = $_POST['name'];
$password = $_POST['password'];
if ((!isset($name)) || (!isset($password)))
{
?>
<h1>Please log in<h1>
<p> This page is secret.</p>
<form method="post" action="secret.php">
<p>Username: <input type="text" name="name"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" name="submit" value="Log in"></p>
</form>
<?php
}
else if (($name == "user") && ($password =="pass"))
{
echo "<h1>Here it is</h1>";
echo "<p>I bet you are glad you can see this secret page.</p>";
}
else{
echo "<h1> Go Away</h1>";
echo "<p>You are not authorized to use this </p>";
}
Вы должны проверить значения $_POST
, а затем присвоить. Вы делаете обратный.
Должно быть так:
if(isset($_POST['name'], $_POST['password'])) {
$name = $_POST['name'];
$password = $_POST['password'];
// rest of code
}
Не могли бы вы рассказать мне, что случилось?
Вы недостаточно внимательны. У вашей книги есть дополнительный символ в начале строк.
@ $name = $_POST['name'];
@ $password = $_POST['password'];
@
- подавление ошибок.
Мое предложение:
Не используйте эту книгу. Это старое и уродливое.
Если вы отправляете на ту же страницу, где находится ваша форма, вы должны сделать следующее:
$name = isset($_POST['name']) ? $_POST['name'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";
Собственная функция isset
проверяет, существует ли переменная.