За последние 24 часа нас посетили 94452 программиста и 6239 роботов. Сейчас ищут 3336 программистов ...

как остаться на той же страницы после отправки формы?

Тема в разделе "PHP для новичков", создана пользователем Olegh25, 20 июл 2018.

  1. Olegh25

    Olegh25 Новичок

    С нами с:
    19 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток, не давно начал изучение php и не могу разобраться как остаться на странице с формой после её отправки. Функция header переадресовывает на страницу, но не получается её использовать в файле со скриптом куда идёт post запрос ибо при подключении файла выдаёт ошибку "Сайт выполнил переадресацию слишком много раз.".
    И как можно сделать, чтоб пустая форма не присваивалась массиву и не записывалась пробелами в текстовый файл?
    guest_book.php :
    PHP:
    1. <?php
    2.     header('Location: http://php1.local/index.php');
    3.  
    4.     function readf()
    5.     {
    6.         $file_txt  = __DIR__ . '/guest_book.txt';
    7.         $file_string = file_get_contents($file_txt, true);
    8.         $notes = explode("\n", $file_string);
    9.         return $notes;
    10.     }
    11.     $array = readf();
    12.     $array1 = $_POST;
    13.     if(isset($_POST['review'])) {
    14.         $fop = fopen(__DIR__ . '/guest_book.txt', 'a+');
    15.         fwrite($fop, "\n" . $array1['review']);
    16.         fclose($fop);
    17.     }
    18.     $result = array_merge($array, $array1);
    19.     foreach($result as $key => $value){
    20.         echo $result[$key] = $value, "\n<br \>";
    21.     }
    index.php:
    HTML:
    1. <?php include_once('guest_book.php') ?>
    2. <!doctype html>
    3. <html lang="ru">
    4.     <meta charset="UTF-8">
    5.     <meta name="viewport"
    6.          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    7.     <meta http-equiv="X-UA-Compatible" content="ie=edge">
    8.     <title>Гостевая книга</title>
    9. </head>
    10.     <form name="guest_book" action="guest_book.php" method="post">
    11.         <textarea name="review" cols="60" rows="6"></textarea> <br>
    12.         <button type="submit">Отправить</button>
    13.     </form>
    14. </body>
    15. </html>
     
  2. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    как вариант - соедини форму с обработчиком на одной страничке, на ней и останешься. ))
     
  3. Olegh25

    Olegh25 Новичок

    С нами с:
    19 июл 2018
    Сообщения:
    2
    Симпатии:
    0
    Это да, но разве в php нет возможности реализовать это всё через один файл подключив его к нужной странице, а не заниматься копированием одного и того же скрипта на разные страницы?
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    1. переадрессовывать при успехе на страницу, которая тебе нужна.
    2. action на ту же страницу
    3. слать ajax запрос
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.151
    Симпатии:
    108
    Адрес:
    Украина
    action="" уже отменили?
    --- Добавлено ---
    Насчёт пустой формы - проверка,
    PHP:
    1. if (empty ($_POST['info'])) {
    2.    die ('АШЫПКА!');
    3. }
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Имелось в виду «объедини».
    --- Добавлено ---
    Какого одного и то же скрипта? По одной ветке должен быть вывод формы, по другой – сохранение данных и редирект. Хотя общие составляющие конечно могут быть.
    --- Добавлено ---
    Как вариант, при детекте метода POST из одного файла подключаешь другой и обратно уже не возвращаешься.

    Есть каркасы, где можно сразу разделить обработку между разными файлами в зависимости от типа запроса.