【问题标题】:CodeIgniter prevent display of controller/method in URLCodeIgniter 阻止在 URL 中显示控制器/方法
【发布时间】:2012-11-26 06:36:31
【问题描述】:

我正在使用 CodeIgniter,并且我的路由设置如下:

$route["(:num)"] ="login/login_by_id/$1";

这基本上意味着当 URL 看起来像这样:

http://mydomain.com/12345

这将有效地将值 12345 传递给 login 控制器的 login_by_id 方法。当我直接输入 URL 时,一切正常。我遇到问题的地方是当我尝试加载视图时。这些是调用视图的行:

$data['content'] = 'login_view';
$data['title']   = 'Login';
$data['error_msg'] = 'Invalid password.  Please try again.';
$this->load->view('login_template', $data); 

我的问题是,不是让用户回到这里:

http://mydomain.com/12345

浏览器将用户引导至此 URL:

http://mydomain.com/login/login_by_id

如何更改代码以使我的用户返回到他们之前所在的相同 URL?我不想在 URL 地址中显示控制器/方法。

谢谢。

【问题讨论】:

  • 您想在用户输入错误密码时将其重定向回登录表单。我说得对吗。
  • 是的,这正是我想要做的。
  • 检查我的答案完全基于codeIgniter表单类。
  • 是的,谢谢,但您的回答包括我没有的对 admin_model 和 set_form_validation 的引用。
  • 你是我的型号名称 codeIgntier 的新手。您只需要添加您的型号名称。您可以删除该 set_form_validation 行。那是通过在codeIgntier中使用表单验证类来进行表单验证。

标签: php codeigniter url-rewriting


【解决方案1】:

在控制器中的函数(点击提交按钮后调用的函数)中。

public function post_login()

  {

      $error_in_validation=set_form_validation($this->config->item('login_form'));

        if($error_in_validation){
            show_form_validation_error('controller_name/login');
        }
        else
        {
            $email=$this->input->post('email');
            $passwd=$this->input->post('passwd');
            $ret=$this->admin_model->user_login($email, $passwd);

            if($ret == NULL){

                $model=array();
                $model['error_msg']=$this->config->item('login_form_error_code_1');;
                $this->load->view('login',$model);              
            }
            else{
                redirect("home");
            }

        }

    }

【讨论】:

    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多