2014-11-07 4 views
1

Я использую PHP Framework CodeIgniter.Форма submit возвращает пустые данные

Посмотреть

<?php echo form_open('login/connect'); ?> 
    <table border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td><?php echo form_label('Username', 'username'); ?></td> 
      <td><?php echo form_input(array('id'=>'username', 'name'=>'username')); ?></td> 
     </tr> 
     <tr> 
      <td><?php echo form_label('Password', 'password'); ?></td> 
      <td><?php echo form_password(array('id'=>'password', 'name'=>'password')); ?></td> 
     </tr> 
     <tr> 
      <td></td> 
      <td><?php echo form_submit('login_submit', 'Valider'); ?></td> 
     </tr> 
    </table> 
<?php echo form_close(); ?> 

Когда я пытаюсь представить эту страницу она идет на: http://mywebsite.com/admin/index.php/login/connect

контроллер

класс Войти расширяет CI_Controller {

function __construct() 
{ 
    parent::__construct(); 
} 

function index() 
{ 
    $this->load->view('login'); 
} 

function connect() 
{ 
    $username= $this->input->post('username'); 
    $password=$this->input->post('password'); 
    echo $username.', '.$password; 
} 

}

HTML

<div id="login"> 
    <div id="login-inner"> 
     <h1>Login</h1> 
     <form action="http://myswebsite.com/admin/index.php/login/connect" method="post" accept-charset="utf-8">      
      <table border="0" cellspacing="0" cellpadding="0"> 
       <tr> 
        <td><label for="username">Username</label></td> 
        <td><input type="text" name="username" value="" id="username" /></td> 
       </tr> 
       <tr> 
        <td><label for="password">Password</label></td> 
        <td><input type="password" name="password" value="" id="password" /></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="submit" name="login_submit" value="Valider" /></td> 
       </tr> 
      </table> 
     </form> 
    </div> 
</div> 

Но он возвращает пустой массив.

Может кто-нибудь предложить метод исправить это?

Спасибо.

+1

вы Didnt указанного метода, поэтому он должен быть запросом прибудет –

+0

Покажите свой контроллер. –

+3

@oPi вам не нужно указывать метод в codeigniter, его 'post' по умолчанию. Проверьте https://ellislab.com/codeigniter/user-guide/helpers/form_helper.html –

ответ

0

Я думаю, что он использует CodeIgniter, поэтому form_open() автоматически поместит метод = "post". Можете ли вы поделиться выходным HTML-формой?

Убедитесь, что вы не перенаправляете свой запрос, или почтовые переменные будут сброшены. Попробуйте print_r вместо var_dump ...

+0

Здравствуйте, я пробовал print_r, и это не так (все еще получая пустые данные). – Nikhil

+0

После получения отправленного запроса я получил следующее из заголовка: Код состояния: 301 Перемещено постоянно Это проблема? Если да, как избежать этого (для этого подходит хороший учебник)? Спасибо заранее. – Nikhil

+1

Код статуса 301 представляет собой постоянную переадресацию. Это должна быть проблема. Отслеживайте свой запрос и понимайте «где» перенаправление.Когда происходит перенаправление, переменные POST сбрасываются. Вы должны увидеть свой $ _POST перед переадресацией. Извините, но я не очень опытен с CodeIgniter, но я думаю, что проблема там. – FuMe

0

не использовать $ _POST Попробуйте использовать

$username= $this->input->post('username'); 
$password=$this->input->post('password'); 
+0

Да, правильный метод - это '$ this-> input-> post()', но '$ _POST' также будет работать. Если OP не получает выходной поток '$ _POST', то то же самое происходит с' $ this-> input-> post() ' –

+0

Я пробовал это, но не повезло. – Nikhil

+0

@jogesh_pi После захвата отправленного запроса я получил следующее из заголовка: Код состояния: 301 Постоянно перемещен. Это проблема? Если да, как избежать этого (для этого подходит хороший учебник)? Заранее спасибо. – Nikhil

0

Ввести следующий класс после родителя :: __ construct();

$this->load->helper('url'); 
$this->load->helper('form'); 
Смежные вопросы