Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Подскажите в чем ошибка


Автор: XenOS12 30.1.2013, 17:35
Есть код страницы html:

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Reg</title>
</head>

<body>
<form action="http://localhost/first.php" method="post">
Имя: <input type="text" name="firstName"><br>
Пароль: <input type="password" name="pass"><br>
Месяц рождения:
<select name="month" size="1">
<option selected="selected">Январь</option>
<option>Февраль</option>
<option>Март</option>
<option>Апрель</option>
<option>Май</option>
<option>Июнь</option>
<option>Июль</option>
<option>Август</option>
<option>Сентябрь</option>
<option>Октябрь</option>
<option>Ноябрь</option>
<option>Декабрь</option>
</select>
<br>
Ваш пол:<input type="radio" name="sex" value="male" checked="checked">Мужик
<input type="radio" name="sex" value="female"> Баба<br>
<input type="submit" name="go" value="Зарегистрироваться"> <input type="reset" name="reset" value="Очистить форму">
</form>
</body>
</html>


И код сценария:

Код

<?
if (isset($go)) {
    echo "Имя: $firstName <br>";
    echo "Пароль: $pass <br>";
    echo "Месяц рождения: $month <br>";
    echo "Ваш пол: $sex";
}
else {
    echo"Я ЛОХ\n";
}
?>


Вопрос: почему, когда я заполняю все поля и нажимаю "зарегистрироваться", то выскакивает "Я ЛОХ", а не нужная информация? если сделать "!isset()", то выводятся пустые поля "имя, пароль, месяц, ваш пол". Что я делаю не так?

Автор: ksnk 30.1.2013, 17:39
Можно посоветовать читать более новые книги по PHP.  Использование коротких тегов в php по умолчанию отключено уже давненько, а использование global_register=on признано источником ошибок уже лет с десяток. А в версии 5.4 вообще выкинуто.
Список книг где-то тут в прикрепленных темах есть.

Если коротки - 
Код

if (isset($_POST['go'])) {
...

Автор: XenOS12 30.1.2013, 18:00
ksnk, с этим: 

Код

if (isset($_POST['go'])) {


я перестал "быть лохом", но все равно выводятся пустые поля =(

P.S. Учусь по книжке "Самоучитель PHP5. Издание 3-е". Автор Д.Н. Колисниченко. Фигня книга, да?

Автор: Arantir 30.1.2013, 18:11
XenOS12, если по php 5, то походу фигня, так как $_POST был добавлен, а global_register выключен еще в php 4. Ну или вы плохо учитесь =)

Все переменные из формы складываются в $_POST (массив) с соответствующими именами. Замените все свои переменные с именами полей формы на $_POST["соответствующее_имя_поля"].

Добавлено через 3 минуты и 27 секунд
И при доступе к элементами массива внутри строки переменную надо брать в фигурные скобки: "Имя: {$_POST["firstName"]} <br>"

Автор: XenOS12 30.1.2013, 18:39
Arantir, ksnk, спасибо за ответы. Все заработало. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)