Codeigniter form POST Empty in Controller from View
Я работаю с Codeigniter. Я создал HTML-форму, которая отправляет данные в контроллер.
Эта форма работала отлично, но внезапно перестала публиковать данные.
HTML:
<form name="frm_search" id="frm_search" method="post" action="http://ip/free/index.php/taskdetails/tabOne/1/ShibNo/asc/">
<input id="order1" name="order1" value="26" type="text" >
<input id="item1" name="item1" value="" type="text" >
</form>
- Я попытался проверить запись данных в браузере, и она показывает данные, которые я ввел в поле ввода.
![enter image description here]()
- В My index.php я поместил следующий код, чтобы увидеть, опубликован ли он:
echo "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "";
$data = file_get_contents('php://input');
echo "DATA: <pre>";
var_dump($data);
var_dump($_POST);
echo "</pre>";
exit;
РЕЗУЛЬТАТ:
CONTENT_TYPE: application/x-www-form-urlencoded
string 'order1=26&item1='
array (size=23)
'order1' => string '26' (length=2)
'item1' => string '' (length=0)
Но когда я печатаю $ _POST в контроллере, я получаю следующее:
Array
(
[order1] =>
[item1] =>
)
Мой код .htaccess выглядит следующим образом:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Может кто-нибудь сказать мне, в чем проблема? Я не могу выяснить, почему, когда данные передаются в контроллер, они становятся нулевыми. Приложение успешно работает более года, но я неожиданно обнаружил эту проблему.
Заранее спасибо. Пожалуйста, дайте мне знать, если вам нужно больше, чтобы помочь мне.
Примечание: Я понял, что после загрузки страницы, если я отредактирую имя ввода для какого-то другого имени, тогда данные будут успешно опубликованы.
то есть: вместо order1, если я изменяю имя моего редактирования с помощью элемента проверки в Chrome на "neworder", то, если я отправляю, данные отправляются со значением в контроллер. Не знаю почему?
Обновление: Я нашел это странным. В наборе-cookie браузера. Это как полная страница барахла.
Каждый раз, когда вызывается страница, я начинаю новый сеанс, но не убиваю существующий сеанс. Это проблема?
Даже если я уничтожу старую сессию и начну новую, я получу e-set cookie в браузере. У меня есть один.. но в моем случае я получаю более 6 установленных файлов cookie в браузере.
Ответы
Ответ 1
Это может быть проблема с .htaccess с RewriteRule, в соответствии с этой проблемой CI github post https://github.com/bcit-ci/CodeIgniter/issues/242:
если используется сервер Apache, тогда mod rewrite должен быть включен, иначе перенаправление будет правильным, но с пустым $_POST.
&
если у вас нет конечной косой черты вашего URL-адреса, сервер отправит 301, которые будут мешать данным POST.
Ваша проблема может быть с
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Попробуйте изменить на:
RewriteRule ^(.*)$ index.php/$1 [PT,L]
(from: не удается получить отправку сообщений в codeigniter) или попытаться установить:
sudo a2enmod rewrite
Надеюсь, что это поможет!