2012-11-27 71 views
0

我嘗試在Codeigniter中創建一個簡單的用戶登錄,但我無法通過Post獲取表單數據。CodeIgniter無法發佈數據

看Simple代碼 控制器

class User extends CI_Controller{ 

function login(){ 


    $this->load->helper('form'); 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('username', 'username', 'required'); 
    $this->form_validation->set_rules('password', 'password', 'required'); 
    $this->form_validation->set_error_delimiters('<em>','</em>'); 

    if($this->input->post('weiter')){ 

     if($this->form_validation->run()){ 
      echo "okay"; 

     } 
    }else{ 
     $this->load->view("templates/header"); 
     $this->load->view("user/login"); 
     $this->load->view("templates/footer"); 
    } 





} 

}

路由配置

$route['user/login'] = 'user/login'; 

形式:

<?php echo form_open("user/login");?> 
<table> 

    <tr> 
     <td><label for="username">Username</label></td> 
     <td><input type="text" name="username"></td> 
    </tr> 
    <tr> 
     <td><label for="password">Passwort</label></td> 
     <td><input type="password" name="password"></td> 
    </tr> 
    <tr> 
     <td><input type="submit" name="weiter"></td> 
     <td></td> 
    </tr> 
</table> 

當我用Chrome瀏覽器中的開發工具看時,它看到的是Post,但返回狀態是404,爲什麼我可以幫助某人?

+0

這是無關緊要的(你可以從你的項目中刪除它)。如果這個頁面的網址是http://example.com/user/login,你可以把<?php echo form_open(); ?> –

回答

0

我能看到的問題是你的form_open(「user/login」);沒有返回正確的網址,只是將其刪除和測試,使用下面的代碼視圖

<form method="post"> 
<table> 

    <tr> 
     <td><label for="username">Username</label></td> 
     <td><input type="text" name="username"></td> 
    </tr> 
    <tr> 
     <td><label for="password">Passwort</label></td> 
     <td><input type="password" name="password"></td> 
    </tr> 
    <tr> 
     <td><input type="submit" name="weiter"></td> 
     <td></td> 
    </tr> 
</table> 
</form> 

您可以選擇刪除您的路由規則$route['user/login'] = 'user/login';因爲你不需要它,如果你不改變控制器的名稱或方法名稱作爲價值。

+0

hm不,不是這個問題,我檢測到的問題是,默認的控制器可以獲取發佈數據,但所有其他控制器不是,結果代碼是由所有404只是通過default_controller不是...我不明白那麼:D – user1122294

+0

一次只能在一個控制器中獲取值,我好奇如何試圖訪問其他控制器中的值 –

+0

我使它成爲頂端,我發現所有控制器都顯示在瀏覽器上,只是他們有一個404錯誤代碼,困惑。我的事件不需要添加控制器到路由只是當我想用他的特定路徑覆蓋他們,它通常? :D – user1122294

0

好的,問題解決了,不好,但它的工作原理。 我已經在config.php中設置了屬性index_page爲''爲一個 明確的URL,但是當設置'index.php'一切正常...

不知道這是否正常或不

0

您是否嘗試過使用base_url()?也許你的.htaccess有問題。嘗試使用下面的代碼。

<?php 
    echo form_open(base_url('user/login')); 
    ?> 
    <table> 

<tr> 
    <td><label for="username">Username</label></td> 
    <td><input type="text" name="username"></td> 
</tr> 
<tr> 
    <td><label for="password">Passwort</label></td> 
    <td><input type="password" name="password"></td> 
</tr> 
<tr> 
    <td><input type="submit" name="weiter"></td> 
    <td></td> 
    </tr> 
</table> 
    <?php echo form_close(); 
     ?>