Форма Codeigniter 3 не публикуется

*UPdate, оказалось, что ни одна из форм не публикуется правильно. Все они загружают любой URL-адрес, указанный в действии, но данные POST недоступны.

Мое приложение работает нормально на лампе локально. После загрузки на мой живой сервер форма входа не будет работать. Я использую CI3 и библиотеку Ion Auth.

Я пробовал var_dump($_POST)

который всегда выводит следующее:

array(0) {

}

Так что может показаться, что форма не публикуется. Моя форма:

<?php echo form_open("auth/login");?>
                                <div class="form-group">
                                    <div class="input-group">
                                        <span class="input-group-addon"><i class="fa fa-user"></i>
                                        </span>
                                        <?php echo form_input($identity);?>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="input-group">
                                        <span class="input-group-addon"><i class="fa fa-lock"></i>
                                        </span>
                                        <?php echo form_input($password);?>
                                    </div>
                                </div>
                                <button type="submit" class="btn btn-primary text-theme-xs mr-8">Login</button>
                                <?php echo form_checkbox('remember', '1', FALSE, 'id="remember"');?>
                                <a href="<?= site_url('auth/forgot_password') ?>" class="text-theme-xs pull-right a-black">Forgot your password ?</a>
                            </form>

Пост в URL такой же, как тот, на котором отображается форма, и, как я уже сказал, он отлично работает на лампе. Firebug показывает ошибки в поле пароля и незащищенном сайте, но я предположил, что это не помешает публикации формы?

Я заменил перенаправления на var_dump, но ничего не происходит, проблема в том, что данные _POST не отправляются.

Контроллер:

function login()
{
    $this->data['title'] = "Login";

    //validate form input
    $this->form_validation->set_rules('identity', 'Identity', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');

    if ($this->form_validation->run() == true)
    {
        //check to see if the user is logging in
        //check for "remember me"
        $remember = (bool) $this->input->post('remember');

        if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
        {
            //if the login is successful
            //redirect them back to the home page
            $this->session->set_flashdata('message', $this->ion_auth->messages());
            redirect('/', 'refresh');
        }
        else
        {
            //if the login was un-successful
            //redirect them back to the login page
            $this->session->set_flashdata('message', $this->ion_auth->errors());
            redirect('auth/login', 'refresh'); //use redirects instead of loading views for compatibility with MY_Controller libraries
        }
    }
    else
    {
        //the user is not logging in so display the login page
        //set the flash data error message if there is one
        $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');

        $this->data['identity'] = array('name' => 'identity',
            'id' => 'identity',
            'type' => 'text',
                            'class' => 'form-control',
            'value' => $this->form_validation->set_value('identity'),
                            'placeholder' => 'Username',
        );
        $this->data['password'] = array('name' => 'password',
            'id' => 'password',
            'type' => 'password',
                            'class' => 'form-control',
                            'placeholder' => 'Password',
        );
                    $this->_render_page('templates/head', $this->data);
        $this->_render_page('templates/navbar', $this->data);
                    $this->_render_page('auth/login', $this->data);
                    $this->_render_page('templates/footer', $this->data);
    }
}

Вывод html из контроллера/представления abiove:

<form action="http://www.mydomain.uk/auth/login" method="post" accept-charset="utf-8">

  <p>
    <label for="identity">Email/Username:</label>    <input type="text" name="identity" value="" id="identity" class="form-control" placeholder="Username"  />
  </p>

  <p>
    <label for="password">Password:</label>    <input type="password" name="password" value="" id="password" class="form-control" placeholder="Password"  />
  </p>

  <p>
    <label for="remember">Remember Me:</label>    <input type="checkbox" name="remember" value="1" id="remember" />
  </p>


  <p><input type="submit" name="submit" value="Login"  />
</p>

</form>

person Philwn    schedule 11.07.2015    source источник
comment
У вас правильно настроена форма action?   -  person m_pro_m    schedule 11.07.2015
comment
покажите нам свой код контроллера также в основном посте и в действии используйте <?php echo base_url('auth/login');?> или с index.php <?php echo base_url('index.php/auth/login');?> убедитесь, что помощник по URL загружается автоматически. codeigniter.com/user_guide/libraries/form_validation.html   -  person Mr. ED    schedule 11.07.2015
comment
Я использую form_open('auth/login'), я опубликую контроллер выше. Это стандартный контроллер авторизации Ion.   -  person Philwn    schedule 11.07.2015
comment
Я думаю, что вы неправильно вводите форму   -  person Mr. ED    schedule 11.07.2015
comment
FWIW, я использую CI 3 с Ion Auth и не испытываю никаких проблем. Я также не вижу ничего плохого в вашем опубликованном коде. Если у вас это работает локально, вы должны предположить, что проблема где-то на вашем сервере. Независимо от того, какая функция контроллера или URL-адрес, AFAIK, у вас все равно должен быть массив POST.   -  person Sparky    schedule 11.07.2015
comment
Firebug показывает ошибки, связанные с полем пароля и незащищенным сайтом, но я предположил, что это не помешает опубликовать форму? ~ Нет требований к безопасности браузера для простой публикации формы.   -  person Sparky    schedule 11.07.2015
comment
Я должен спросить... пробовали ли вы также var_dump($_POST) на своей локальной установке, чтобы убедиться, что вы вызываете это в нужном месте?   -  person Sparky    schedule 11.07.2015
comment
Опишите точные наблюдения форма не будет работать ~ Вы получаете экран с ошибкой, страница даже перезагружается и т. д.? Ion Auth очень хорошо дает подробные сообщения об ошибках. У вас включен CSRF в CI или Ion Auth. Я обнаружил, что более надежно использовать встроенную в CI защиту от CSRF, а не встроенную в Ion Auth.   -  person Sparky    schedule 11.07.2015
comment
Страница действительно перезагружается. Я попробовал var_dump ($_post) в проверке формы, поэтому, если это было верно или ложно, и ни одно из них не сработало. Я помещаю это как первую строку метода контроллера, и он выдает пустой массив. Форма в основном не публикует, казалось бы   -  person Philwn    schedule 11.07.2015
comment
Sparky, какая версия php у вас на сервере?   -  person Philwn    schedule 12.07.2015


Ответы (2)


Теперь я решил это, и я очень раздражен собой, так как это было простое исправление из-за ошибки конфигурации. разве самые головокружительные проблемы не всегда таковы?

В любом случае, если у кого-то еще есть такая же проблема, проверьте свой site_url в config.

Мой был настроен на http://www.example.com, однако сервер перенаправил на http://example.com, поэтому использование site_url для публикации было перенаправлено на домен без www с потерей данных публикации.

Теперь пришло время перейти к тому, чем я должен был заниматься на выходных.

Спасибо всем за попытки помочь

person Philwn    schedule 12.07.2015

Попробуйте включить модуль apache2 mod_rewrite

person TomoMiha    schedule 17.07.2017