1

我认为我做的一切都很好,但是为什么我的验证不起作用。每次执行 else 语句时,即使我输入了有效数据。

public function login ()
{
    // Redirect a user if he's already logged in
    $dashboard = base_url().'dashboard';
    $this->user_model->loggedin() == FALSE || redirect($dashboard);

    // Set form
    $this->form_validation->set_rules('email','Email','required');
    $this->form_validation->set_rules('password','Password','required');

    // Process form
    if ($this->form_validation->run() == TRUE) {

        echo "Validation Success";
    }else{

        $this->session->set_flashdata('validation_errors', validation_errors().'<p>Please enter valid email and password</p>' );
        redirect(base_url().'login', 'refresh');

    }

编辑

我正在使用 Dreamhost VPS。

4

1 回答 1

0

除非您在另一台服务器上的另一个 codeigniter 项目中,否则只需使用 redirect('name_of_controller/name_of_method')无需放置,base_url()因为它已经使用基本 url 作为其条件。

并在您的验证消息上设置一条消息,例如$this->form_validation->set_message('rule','message')

在http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#settingerrors阅读更多内容

而且您还没有向我们展示视图,请向我们展示您如何在视图上发布错误消息。

1.)var_dump()如果确实设置了验证错误,则有一个会话

2.) 你加载了会话库吗?

3.) 你确定你在视图上访问正确的会话变量吗?

于 2013-05-03T03:43:01.380 回答