重定向时,codeigniter控制器名称在地址中出现两次

时间:2018-04-19 06:38:18

标签: php codeigniter redirect

我是codeigniter的新手,所以这可能只是一个基本的错误,但在任何其他的讨论中我仍然无法找到任何答案..使用codeigniter 3.1.7 here is the login page

如果我使用垃圾或正确的值登录,它应该将我重定向到个人资料页面或同一页面,但相反,它给了我这个......

you can see that the Controller name is given twice here

我的Control登录功能代码是

function admin_login_view()
 {
    $this->load->view('admin_login');
 }

 function admin_login()
 {          
    $a = $this->input->post('id');
    $b = $this->input->post('pass');

    $flag = "admin";                    
    $attempt = $this->Model->login($a,$b,$flag);
    if($attempt=="admin")
    {
        $_SESSION["user"]=$a;
        return redirect('Control/view_administration');
    }
    elseif ($attempt=="id")
    {
        $msg= "The Admin-id doesn't exists.";
        $this->session->set_flashdata('admin_id',$msg);
        return redirect('Control/admin_login_view');
    }       
    elseif($attempt=="pass")
    {
        $msg="The password is wrong.";
        $this->session->set_flashdata('admin_pass',$msg);
        return redirect('Control/admin_login_view');
    }                       
    else
    {
        $msg="Login failed.";
        $this->session->set_flashdata('admin_fail',$msg);
        return redirect('Control/admin_login_view');
    }                                           
 }

我已经尝试了所有列出的解决方案

  1. 是的,我的控制器和模型文件/类名是相同的,并且在第一个字母上有大写字母 names of my controller and model

  2. 我的.htaccess文件包含用户指南网站要求我保留的内容,虽然我不知道任何代码写在那里...如果有什么我需要在这里更改请在你之前解释它是什么给我一堆代码......:p .htaccess

  3. 我的基本路径是:

    $config['base_url'] = 'http://localhost/CodeIgniter-3.1.7/';

  4. 索引设置为:

     `$config['index_page'] = 'index.php';`
    

    我的路线文件包含:

    $route['default_controller'] = 'Control';
    $route['404_override'] = '';
     $route['translate_uri_dashes'] = FALSE;`
    

    我到处搜索,但没有任何解决方案以任何方式帮助我...我可能在这里做了一个noob错误但请帮助

3 个答案:

答案 0 :(得分:1)

您必须在代码中进行多项更改:

1)由于您在网址中有index.php,您还必须在base_url

中添加此内容
$config['base_url'] = 'http://localhost/CodeIgniter-3.1.7/index.php/';

2)使用base_url()并在其中传递您的网址以获得正确的网址重定向。同时在return

之前删除不必要的redirect关键字
function admin_login_view()
 {
    $this->load->view('admin_login');
 }

 function admin_login()
 {          
    $a = $this->input->post('id');
    $b = $this->input->post('pass');

    $flag = "admin";                    
    $attempt = $this->Model->login($a,$b,$flag);
    if($attempt=="admin")
    {
        $_SESSION["user"]=$a;
        redirect(base_url('Control/view_administration'));
    }
    elseif ($attempt=="id")
    {
        $msg= "The Admin-id doesn't exists.";
        $this->session->set_flashdata('admin_id',$msg);
        redirect(base_url('Control/admin_login_view'));
    }       
    elseif($attempt=="pass")
    {
        $msg="The password is wrong.";
        $this->session->set_flashdata('admin_pass',$msg);
        redirect(base_url('Control/admin_login_view'));
    }                       
    else
    {
        $msg="Login failed.";
        $this->session->set_flashdata('admin_fail',$msg);
        redirect(base_url('Control/admin_login_view'));
    }                                           
 }

答案 1 :(得分:1)

请尝试这样

redirect(base_url().'Control/admin_login_view',refresh);

答案 2 :(得分:1)

解决!!!我!! NOOB MISTAKE !! 解决了我实际上将'action = Control / method'添加到调用控制器函数的表单中......并将其更改为只有函数名解决了....

问题是这里提到的控件被添加到url以及routes.php中提到的默认控制器

这是一个noob错误,抱歉打扰你,并感谢你的帮助  附:一个常规的重定向功能最终正在起作用:p