Здравствуйте. Имею: 1. Ubuntu 18.04 2. LAMP (Apache2.4, php7.2, mysql) 3. Исходный код сайта, взятый с хостинга. На хостинге все работает нормально. Локально сайт открывается, ссылки работают, все нормально. В админке пытаюсь добавить запись. Действия следующие: имеется форма ввода, метод у формы POST. В контроллере, который обрабатывает полученные из формы данные, проверяю, переданы ли данные методом POST PHP: if($_SERVER['REQUEST_METHOD'] == 'POST') и далее идет их обработка. Но ничего не происходит. Вывожу на экран содержимое $_SERVER и вижу, что REQUEST_METHOD - GET. Решил проверить содержимое массивов $_POST и $_GET, вывел их на экран раньше проверки метода. Выводятся два пустых массива. Подозреваю, что дело тут в настройках или Apache, или PHP. Подскажите пожалуйста, как все это настроить.
По идее, с дефолтными настройками (всё по-умолчанию) - форма, отправленная методом post должна приходить в массив $_POST и REQUEST_METHOD должен определяться правильно. Что-то даже не припоминаю, какой такой настройкой это можно изменить Возможно, у тебя в форме отправляется файл, но при этом у формы нет атрибута enctype="multipart/form-data" ?
Да нет, я же написал, что на хостинге все работает. И данная конкретная форма содержит три инпута с типом text
Возможно то что выводится на страницу - это уже после редиректа, который часто делают после обработки данных POST. Нужен код формы и обработчика, чтобы не гадать.
На 99,9% засада где-то в др. месте. Роутинг, не подключены нужные расширения или др. расхождения в конфиге сервера/хоста. --- Добавлено --- После тестового вывода поставьте бряк/exit или пишите в файл. Как выше написали, возможно вы видите не «первый» вывод.
Вот я про конфиги и спрашиваю. Где там можно поискать соответствующие настройки? --- Добавлено --- Форма HTML: <form class="admin-form" action='/addgalery' method='post'> <span>Название</span><br/> <input type='text' class="textmenu" name ='galery_name'><br/> <span>Категория</span><br/> <select class="mainmenu" name="category"> <option value="-1"></option> <option value="4">Фото</option> <option value="10">Фото с отдыха</option> <option value="11">Природа</option> <option value="12">Встречи друзей</option> <option value="13">События</option> <option value="14">Просто удачные фото</option> <option value="15">Экскурсии</option> <option value="16">Домашний отдых</option> </select><br/><br/> <p>Ключевые слова</p> <input type="text" class="select-menu" name="keywords" /> <p>Описание</p> <input type="text" class="select-menu" name="description" /><br/> <input class="submit_login" type='submit' name='submit' value ='Добавить'><br/> </form> Контроллер PHP: <?php class Addgalery extends Base { protected $ob_us; protected $menu; protected function input($param = array()) { parent::input($param); $this->ob_us = Model_User::get_instance(); $this->menu = $this->ob_us->get_menu_photo(); if($this->menu == NULL){ exit(); } // в этом месте выводил на экран $_SERVER['REQUEST_METHOD'], получил GET // тут же выводил на экран содержимое $_GET и $_POST, получал пустые массивы if($_SERVER['REQUEST_METHOD'] == 'POST') { // сюда я не попадаю, пытался сделать echo "111", ничего не выводилось $category = (int)$_POST['category']; if(!$category){ exit("Выберите категорию"); } $galery_name = $_POST['galery_name']; $keywords = trim(strip_tags($_POST['keywords'])); $description = trim(strip_tags($_POST['description'])); $this->queryparams = array('galery_name' => $galery_name, 'category' => $category, 'keywords' => $keywords, 'description' => $description ); $result = $this->ob_us->add_galery($this->queryparams); echo $result; if($result > 0 ){ header("Location:/addgalery"); } header("Location:/addgalery"); } } } ?>
После 13 строчки проверьте PHP: var_dump($this->menu); Но перед проверкой закомментируйте строки с 37 по 40 Так же можете проверить еще раз массив $_SERVER, закомментировав эти строки
поэкспериментировать смогу только вечером. Сейчас нахожусь на работе --- Добавлено --- Меню проверял, выводится нормально
Да, вы оказались правы. Если без редиректа, то все вижу нормально. А я еще удивлялся, как это все в базу попадает, а данных я не вижу. Спасибо