Доброго времени суток, не давно начал изучение php и не могу разобраться как остаться на странице с формой после её отправки. Функция header переадресовывает на страницу, но не получается её использовать в файле со скриптом куда идёт post запрос ибо при подключении файла выдаёт ошибку "Сайт выполнил переадресацию слишком много раз.". И как можно сделать, чтоб пустая форма не присваивалась массиву и не записывалась пробелами в текстовый файл? guest_book.php : PHP: <?php header('Location: http://php1.local/index.php'); function readf() { $file_txt = __DIR__ . '/guest_book.txt'; $file_string = file_get_contents($file_txt, true); $notes = explode("\n", $file_string); return $notes; } $array = readf(); $array1 = $_POST; if(isset($_POST['review'])) { $fop = fopen(__DIR__ . '/guest_book.txt', 'a+'); fwrite($fop, "\n" . $array1['review']); fclose($fop); } $result = array_merge($array, $array1); foreach($result as $key => $value){ echo $result[$key] = $value, "\n<br \>"; } index.php: HTML: <?php include_once('guest_book.php') ?> <!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Гостевая книга</title> </head> <body> <form name="guest_book" action="guest_book.php" method="post"> <textarea name="review" cols="60" rows="6"></textarea> <br> <button type="submit">Отправить</button> </form> </body> </html>
Это да, но разве в php нет возможности реализовать это всё через один файл подключив его к нужной странице, а не заниматься копированием одного и того же скрипта на разные страницы?
1. переадрессовывать при успехе на страницу, которая тебе нужна. 2. action на ту же страницу 3. слать ajax запрос
action="" уже отменили? --- Добавлено --- Насчёт пустой формы - проверка, PHP: if (empty ($_POST['info'])) { die ('АШЫПКА!'); }
Имелось в виду «объедини». --- Добавлено --- Какого одного и то же скрипта? По одной ветке должен быть вывод формы, по другой – сохранение данных и редирект. Хотя общие составляющие конечно могут быть. --- Добавлено --- Как вариант, при детекте метода POST из одного файла подключаешь другой и обратно уже не возвращаешься. Есть каркасы, где можно сразу разделить обработку между разными файлами в зависимости от типа запроса.