【问题标题】:Redirecting issues with CodeIgniterCodeIgniter 的重定向问题
【发布时间】:2014-09-12 16:31:09
【问题描述】:

我有一个登录脚本,当登录成功时,我希望它将它们重定向到主页(welcome_message.php),由于某种原因它没有将我链接到这个文件,而是抛出一个 404 并说@987654322 @

我正在使用 CodeIgniters redirect() 函数进行更改。

function validate_credentials() {

    $this->load->model('membership_model');
    $query = $this->membership_model->validate();

    if ($query) { // if users credentials validated
        $data = array('usernames' => $this->input->post('username'), 
        'is_logged_in' => true);

        $this->session->set_userdata($data); //set session data
        redirect('welcome_message'); //redirect to home page
    } else { //incorrect username or password
        $this->index();
    }
}

【问题讨论】:

  • 只是一个提示,但你真的应该(如果可以的话)设置你的 .htaccess 文件来通过 index.php 路由请求,这样你就可以从你的 url 中删除它。这让他们看起来很可怕!
  • 我该怎么做?我是 phgp 的新手
  • 查看此处ellislab.com/codeigniter/user-guide/general/urls.html 并查找“删除 index.php 文件”。即使您对 htaccess 文件一无所知,这也很简单。

标签: php codeigniter redirect


【解决方案1】:

尝试将完整的 URI 传递给重定向函数,如下所示:

redirect(base_url('views/welcome_message'));

当然假设您的控制器是Views,页面(功能)是welcome_message

【讨论】:

  • 做了这个还是不行,还是抛出同样的信息
  • 你在 application/controllers 目录下设置了控制器吗?
  • 我的控制器叫做welcome.php,它有home()函数,它把视图变成welcome_message
  • 这种情况下,你必须使用redirect(base_url('welcome/home'));
【解决方案2】:

您不能直接将浏览器重定向到view 文件,但是您可以将其重定向到controller,这将显示您的视图。在您的示例中,您尝试访问 CodeIgniter(基于您的本地主机上的 musiclear 文件夹)Controller,名称为 views 并从中调用 welcome_message() 方法。但是如果你的真的想要展示它你必须有下一个结构:

  musiclear/
       Application
            Controllers
                   views.php

views.php 内容:

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Views extends CI_Controller {

    function index() {
        // default action, required method
    }

    function welcome_message(){
        $this->load->view('welcome_message');
    }
 }
?>

【讨论】:

    【解决方案3】:

    实际上,当您在 CodeIgniters 中进行重定向时,它会查找您的控制器,您应该通过控制器的功能加载视图。例如:

     function validate_credentials() {
    
            $this->load->model('membership_model');
            $query = $this->membership_model->validate();
    
            if ($query) { // if users credentials validated
                $data = array('usernames' => $this->input->post('username'), 
                'is_logged_in' => true);
    
                $this->session->set_userdata($data); //set session data
                redirect(base_url().'home/welcome'); //redirect to home function
            } else { //incorrect username or password
                $this->index();
            }
        }
    
        function welcome(){
       $this->load->view('welcome_mesage');
    }
    

    【讨论】:

      【解决方案4】:

      您可能忘记了redirect() 函数仅适用于控制器类,即。 让您拥有welcomeclass,以便您可以使用

      重定向它
      redirect('wolcome');
      

      您还重定向了控制器类的功能

      如果你想重定向到welcome 控制器类的page 函数,那么你会写

      redirect('welcome/page');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-27
        • 2016-07-02
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        相关资源
        最近更新 更多