На установке codeigniter я пытаюсь использовать встроенную функцию $this->input->post()
$this->input->post('some_data')
, однако $this->input->post()
– пустой массив.
print_r($_POST)
дает все переменные полностью и правильно?
Согласно документам codeigniter, класс ввода «автоматически инициализируется системой, поэтому нет необходимости делать это вручную», оставляя меня интересно, что еще я должен сделать.
Любые мысли о том, как я должен попытаться заставить это работать?
Благодаря!
Вы можете проверить, выглядит ли ваше мнение (правильно):
<form method="post" action="/controller/submit/">
vs (не работает):
<form method="post" action="/controller/submit">
Второй здесь неверен, потому что он перенаправляет, не перенося пост-переменные.
Объяснение:
Когда в конце URL-адреса нет косой черты, это означает, что это указывает на файл.
Теперь, когда веб-сервер ищет файл, он видит, что это действительно каталог и отправляет в браузер переадресацию с косой чертой.
Браузер делает новый запрос на новый URL с косой чертой, но не публикует содержимое формы. Вот где содержимое формы теряется.
Чтобы использовать $this->input->post()
инициализируйте хелпер формы. Вы можете сделать это по умолчанию в config.
Включили ли вы защиту /applicaiton/config/config.php
в /applicaiton/config/config.php
?
Если так $this->input->post()
будет пустым. Вы можете попытаться сделать $this->input->post('submit')
который не должен быть пустым.
Есть несколько вещей, которые вы можете найти, чтобы помочь решить эту проблему.
Что-то изменилось или было расширено в основных файлах CodeIgniter. Убедитесь, что system/core/Input.php
является исходной копией и содержимым application/library
и application/core
для дополнительных файлов
Используются ли другие методы ввода? Каков результат этого при запуске рядом с вашим вызовом print_r
?
echo $this->input->user_agent();
Какие данные выводятся из print_r
? Посмотрите в application/config/config.php
для строки $config['global_xss_filtering']
. Установлено ли значение TRUE
или FALSE
? Если TRUE
возможно, у фильтра скриптов для кросс-сайтов есть проблемы с данными, которые вы публикуете (вряд ли я думаю)
Моя проблема заключалась в вызове ajax. Я использовал это:
type: 'posts',
вместо
type: 'post',
Синтаксис, D'oh!
Модернизация с 2.2.x до 3.0.x – причина метода post не срабатывает. Если вы обновляете CI 3.x, вам нужно сохранить index_page в файле конфигурации. Также проверьте файл .htaccess для mod_rewrite. CI_3.x
$config['index_page'] = ''; // ci 2.x $config['index_page'] = 'index.php'; // ci 3.x
Мой .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> <IfModule !mod_rewrite.c> ErrorDocument 404 /index.php </IfModule>
использование
var_dump($this->input->post());
См. Снимок экрана. Здесь я причисляю все значения столбца
Наконец, проблема решена сегодня. Проблема была в файле .htaccess
.
Изучение себя: ДОЛЖНО ПРОЧИТАТЬ ДОКУМЕНТАЦИЮ КОДЕКСИНГЕРА более тщательно.
Попробуйте это, измените
$config['base_url'] = 'http://mywebsite.cl/';
в
$config['base_url'] = 'http://www.mywebsite.cl/';
Некоторые провайдеры автоматически добавляют www, https и т. Д. К вашему URL, в большинстве случаев это вызывает эту проблему
Проблема в том, что $this->input->post()
не поддерживает получение всех данных POST, а только конкретные данные, например $this->input->post('my_post_var').
Вот почему var_dump($this->input->post());
пусто.
Несколько решений, придерживайтесь $ _POST для извлечения всех данных POST или назначайте переменные из каждого элемента POST, который вам нужен, например:
// variables will be false if not post data exists $var_1 = $this->input->post('my_post_var_1'); $var_2 = $this->input->post('my_post_var_2'); $var_3 = $this->input->post('my_post_var_3');
Однако, поскольку приведенный выше код не очень суровый, мне нравится делать следующее:
if(!empty($_POST)) { // get all post data in one nice array foreach ($_POST as $key => $value) { $insert[$key] = $value; } } else { // user hasen't submitted anything yet! }
Чтобы увидеть все значение post, попробуйте var_dump($this->input->post(ALL));
Решено следующее:
Не исключено ли следующее перенаправление: .htacess, который будет запускать $ this-> input-> post ('name') на контроллере, в моем случае он работал отлично.
abs, Хосе Камарго]