【问题标题】:codeigniter controller name comes twice in address when redirected重定向时,codeigniter 控制器名称在地址中出现两次
【发布时间】:2018-09-29 13:21:06
【问题描述】:

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

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

我的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. 是的,我的控制器和模型文件/类名称相同,并且第一个字母大写

  2. 我的 .htaccess 文件包含用户指南站点要求我保留的内容,尽管我不知道那里写了任何代码...如果我需要在这里更改某些内容,请在您面前解释它是什么给我一堆代码...:p

  3. 我的基本路径是:

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

索引设置为:

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

我的路线文件包含:

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

我到处搜索,但没有任何解决方案对我有任何帮助......我可能在这里犯了一个菜鸟错误,但请帮助

【问题讨论】:

  • 你期望什么 - 如果你使用相对路径,那么这会发生 - 一种可能的方法可能是 redirect(base_url('Control/admin_login_view'));
  • 没有解决问题
  • @shreejitpal 你试过我的答案了吗?
  • 它不起作用@desai
  • 可能是缓存问题换个浏览器试试...或者清空缓存

标签: php codeigniter redirect


【解决方案1】:

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

1) 由于您在 URL 中有 index.php,因此您还必须在您的 base_url 中添加它

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

2) 使用base_url() 并在其中传递您的网址以获得正确的网址重定向。还要去掉redirect之前不必要的return关键字

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'));
    }                                           
 }

【讨论】:

  • 好@B。德赛。
  • 加上将 index.php 添加到基本 url 会弄乱我的 css 链接
【解决方案2】:

请这样尝试

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

【讨论】:

    【解决方案3】:

    解决了!!!我!!菜鸟错误! 解决了我实际上在调用控制器函数的表单中添加了“action=Control/method”......并将其更改为仅函数名解决了它......

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

    这是一个菜鸟错误,很抱歉打扰您,感谢您的所有帮助 p.s.一个常规的重定向功能最终起作用了:p

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2021-12-05
      • 2018-09-25
      相关资源
      最近更新 更多