Не работает простая форма отправки

Тема в разделе "Как сделать...", создана пользователем Юрий73, 6 июл 2017.

  1. Юрий73

    Юрий73 Постоялец

    Регистр.:
    6 янв 2015
    Сообщения:
    78
    Симпатии:
    77
    Подскажите пожалуйста, в чем может быть ошибка. Обычный пример из учебника и не работает. Форма отправки данных с контроллером:

    Файл index.php:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Твое Имя</title>
    </head>
    <?php
    if (!isset($_REQUEST['firstname']))
    {
    include 'form.html.php';
    }
    else
    {
    $firstName = $_REQUEST['firstname'];
    $lastName = $_REQUEST['lastname'];
    if ($firstName == 'Kevin' and $lastName == 'Yank')
    {
    $output = 'Добро пожаловать, о блистательный правитель!';
    }
    else
    {
    $output = 'Добро пожаловать на наш веб-сайт, ' .
    htmlspecialchars($firstName, ENT_QUOTES, 'UTF-8') . ' ' .
    htmlspecialchars($lastName, ENT_QUOTES, 'UTF-8') . '!';

    include 'welcome.html.php';
    }
    ?>
    выдает ошибку Parse error: syntax error, unexpected $end in C:\OpenServer\domains\kevin.log\welcome\index.php on line 28

    Файл form.html.php:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Пример Формы </title>
    </head>
    <body>
    <br><br><br>
    <br>
    <form action="" method="POST">
    <div><label for="firstname">Имя:&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" name="firstname" id="firstname"></label>
    </div>
    <div><label for="lastname">Фамилия:
    <input type="text" name="lastname" id="lastname"></label>
    </div>
    <div><input type="submit" value= "Поехали"</div>
    </form>
    </body>
    </html>

    Файл welcome.html.php:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Твое Имя</title>
    </head>
    <body><p><?php echo $output; ?></p></body>
    </html>
     

    Вложения:

    • welcome.rar
      Размер файла:
      1,1 КБ
      Просмотров:
      2
  2. GW_SHARK

    GW_SHARK Создатель

    Регистр.:
    5 июл 2014
    Сообщения:
    48
    Симпатии:
    28
    не хватает одной } после else
     
  3. Юрий73

    Юрий73 Постоялец

    Регистр.:
    6 янв 2015
    Сообщения:
    78
    Симпатии:
    77
    Большое спасибо, действительно. А Вы не можете подсказать : по чему данное условие не выполняется
    if ($firstName == 'Kevin' and $lastName == 'Yank')
    {
    $output = 'Добро пожаловать, о блистательный правитель!';
    }
    Когда набираешь имя Kevin фамилию Yank
     
  4. GW_SHARK

    GW_SHARK Создатель

    Регистр.:
    5 июл 2014
    Сообщения:
    48
    Симпатии:
    28
    этот код выглядит нормально, где проблема с твоими firstname и lastName, ищи там. Ну и вообще, сам учись свой код проверять :) быстрее начнешь рубить
     
  5. Албибеков

    Албибеков Писатель

    Регистр.:
    24 июн 2016
    Сообщения:
    1
    Симпатии:
    2
    Может так?
    if (isset($firstName == 'Kevin' and $lastName == 'Yank'))
    {
     
  6. Minor

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    158
    Симпатии:
    52
    По коду вроде все верно, выведи что у тебя там в $_REQUEST передается, через print_r например. Кстати а почему не используется $_POST ?
     
  7. xackera

    xackera Создатель

    Регистр.:
    2 мар 2013
    Сообщения:
    11
    Симпатии:
    0
    1) смотри, что пришло в массиве $_REQUEST (как подсказали выше)
    2) если в $_REQUEST всё норм, попробуй отделить каждое условие отдельными скобками:
    if (($firstName == 'Kevin') and ($lastName == 'Yank'))
    {
    $output = 'Добро пожаловать, о блистательный правитель!';
    }
     
  8. mazahaka1990

    mazahaka1990 Писатель

    Регистр.:
    3 фев 2016
    Сообщения:
    7
    Симпатии:
    1
    Только не используй такой код в реальном проекте, логины и пароли для проверки должны храниться в БД.
     
  9. itdating

    itdating Писатель

    Регистр.:
    16 окт 2013
    Сообщения:
    0
    Симпатии:
    0
    Правильно подсказывают. Вместо $_REQUEST используй $_POST. И на обработке можешь проверить echo $_POST ['имя переменной формы']
     
  10. Heavenanvil

    Heavenanvil Писатель

    Регистр.:
    10 авг 2017
    Сообщения:
    5
    Симпатии:
    1
    Для безопасности посоветовал бы также проверять вводимые данные.
    Хотя бы обработать через Перейти по ссылке