Codeigniter链接,修改它们

时间:2013-02-01 15:55:50

标签: php 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>

1 个答案:

答案 0 :(得分:0)

问题在于表单标记

的action属性

更改

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

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

或者更好(如果你使用的是url helper)

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

为什么会这样?

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

HTML form action Attribute

示例1

示例2

示例3