developerm 发表于 2016-1-4 18:23:06

关于url跳转中的名称显示

我现在登录页面访问使用的控制器名为Welcome,所有和用户相关的使用一个控制器User,User其中有一个login方法,调用模型User_model进行验证。

现在的问题是:
登录页面的URL是http://127.0.0.1/Welcome/login, 不管登录失败还是成功,URL显示的是http://127.0.0.1/index.php/User/login
我是在User中的login方法中设置视图显示,失败如下:
$this->load->view('templates/header');
$this->load->view('login_failure',$data);
$this->load->view('templates/footer');

成功则显示另一个控制器对应的视图
$this->load->view('templates/header_admin',$data);
$this->load->view('Admin/index');
$this->load->view('templates/footer_admin');

我如何让URL显示为:失败:http://127.0.0.1/Welcome/login_failure,成功则为:http://127.0.0.1/Admin/index
谢谢!

Closer 发表于 2016-1-4 18:30:06

本帖最后由 Closer 于 2016-1-4 18:38 编辑

內容不夠詳盡
沒辦法幫你

需要知道你的驗證機制
知道了之後用 if 就能解決了

一般有兩種模式 :
1. 同方法,不同視圖
2. 不同方法,重新導頁
static/image/hrline/line3.png
這個是你要的 ?
CI 手冊 - URL 輔助函數

 

developerm 发表于 2016-1-5 09:56:48

Closer 发表于 2016-1-4 18:30
內容不夠詳盡
沒辦法幫你



是第一种模式,同方法login,进行不同视图的显示。
代码如下:public function login()//登录验证
        {
        $this->load->helper('form');
    $this->load->library('form_validation');
        $data['email'] = $this->input->post('email');
        $data['pwd'] = $this->input->post('pwd');
    $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('pwd', 'Password', 'required');

    if ($this->form_validation->run() === FALSE)
    {
      $this->load->helper('url');
                $this->load->view('templates/header');
      $this->load->view('login');
      $this->load->view('templates/footer');

    }
    else
    {
                $this->load->helper('url');
      $data['userid'] = $this->User_model->check_login($data);

                if (empty($data['userid']))
                {
                        $data['type'] = '登录失败';
                        $data['info'] = '账号或密码错误';
                        $this->load->view('templates/header');
                        $this->load->view('login_failure',$data);
                        $this->load->view('templates/footer');
                }
                else{
                        //设置session
                        $sessiondata = array(
                        'name'=> $data['userid']['user_name'],
                        'email'   => $data['userid']['user_email'],
                        'logged_in' => TRUE
                        );
                        $data['title']='index';
                        $this->session->set_userdata($sessiondata);
                        $this->load->view('templates/header_admin',$data);
                        $this->load->view('Admin/index');
                        $this->load->view('templates/footer_admin');
                }
               
        }
        }

Closer 发表于 2016-1-5 11:20:06

本帖最后由 Closer 于 2016-1-5 11:21 编辑

developerm 发表于 2016-1-5 09:56
是第一种模式,同方法login,进行不同视图的显示。
代码如下:
你要的方式,可能要選第二種
我註解的最後四行,改放到 Admin/index 裡面


public function login() { //登录验证

        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('pwd', 'Password', 'required');
       
        $data['email'] = $this->input->post('email');
        $data['pwd'] = $this->input->post('pwd');
        $data['userid'] = $this->User_model->check_login($data);

        if ($this->form_validation->run() === FALSE || empty($data['userid'])) {
                $data2['type'] = '登录失败';
                $data2['info'] = '账号或密码错误';
                $this->load->view('templates/header');
                $this->load->view('login', $data2);
                $this->load->view('templates/footer');
        } else {
                //设置session
                $sessiondata = array(
                        'name' => $data['userid']['user_name'],
                        'email' => $data['userid']['user_email'],
                        'logged_in' => TRUE
                );
                $this->session->set_userdata($sessiondata);
               
                // 重新導頁
                redirect('Admin'); // 預設讀取 index 方法
               
                // $data['title']='index';
                // $this->load->view('templates/header_admin', $data);
                // $this->load->view('Admin/index');
                // $this->load->view('templates/footer_admin');
        }
       
}

developerm 发表于 2016-1-6 15:41:19

Closer 发表于 2016-1-5 11:20
你要的方式,可能要選第二種
我註解的最後四行,改放到 Admin/index 裡面



非常感谢,已正常
页: [1]
查看完整版本: 关于url跳转中的名称显示