2013-02-01 26 views
0

我有一个codeigniter控制器,具有以下check()函数来检查用户名和密码。Codeigniter链接,修改它们

http://localhost/prakash/modules/index.php/login/login/login/login/login/login/check 

每当我提交表单(从视图),上面的链接生成。我如何克服它。我可以在控制器中使用redirect('login')而不是$this->load->view('login/login_form');,但这样它就不会在窗体中显示验证错误。

我的控制器是

function check(){ 

     $this->form_validation->set_rules('username', 'Username', 'required'); 
     if($this->form_validation->run()==FALSE){ 
      $this->load->view('login/login_form'); 
     }else{ 
      $this->load->model('loginModel'); 
      $query = $this->loginModel->validate(); 
      if($query){ 
       $data = array('username' => $this->input->post('username'), 
           'is_logged_in' => true 
          ); 
       $this->session->set_userdata($data); 
       //redirecting to appropriate page 
       redirect('success'); 
      }else{ 
       $this->session->set_flashdata('loginCheck','Username/Password Comination Incorrect!'); 
       redirect('login'); 
      } 
     } 

    } 

我的观点是

<section class="main"> 
<form class="form-1" action="login/check" method="post"> 
    <?php echo "<p class=\"text-error\">{$this->session->flashdata('loginCheck')}</p>"; ?> 
    <?php echo validation_errors(); ?> 
    <p class="field"> 
     <input type="text" name="username" placeholder="Username or email"> 
     <i class="icon-user icon-large"></i> 
    </p> 
     <p class="field"> 
      <input type="password" name="password" placeholder="Password"> 
      <i class="icon-lock icon-large"></i> 
    </p> 
    <p class="submit"> 
     <button type="submit" name="submit"><i class="icon-arrow-right icon-large"></i></button> 
    </p> 
</form> 
</section> 
+0

雅,一个登录盈是另一个加.. ???? – prakashchhetri

回答

0

问题是与form标签

变化

的action属性

<form class="form-1" action="/login/check" method="post"> 

或者更好(如果你使用的是网址助手)

<form class="form-1" action="<?php echo base_url() ?>login/check" method="post"> 

为什么会发生?

您正在使用的值是相对于当前网址的path

HTML form action Attribute

实施例1

实施例2

实施例3

我每次提交表单时
+0

Ya谢谢..我使用了基本的URL base_url(),但由于我的链接是与index.php/login/check,它没有工作,因此我用'site_url()'来代替,它工作正常。然而,有没有一种好的方法来摆脱index.php的东西,而不会碰到令人讨厌的错误? – prakashchhetri

+0

使用.htaccess重定向您的请求,以通过index.php如果你是在Apache。 – itachi

+0

看到这篇文章http://stackoverflow.com/questions/6809373/remove-index-php-from-url-codeigniter/12926692#12926692 – user20232359723568423357842364