developerm 发表于 2016-1-22 15:11:48

访问错误,但视图和控制器及方法都存在

我将我的代码更新到万网的虚拟主机中,目录结构和本地一致。
我在route.php中配置的默认控制器是Welcome,整个这个控制器中的方法对应的视图都可访问。但在登录方法(login)中进行验证登录成功后的跳转确提示:
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php
login方法对应的视图,验证的控制器为User中的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');
   
    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
    {

      $data['user'] = $this->User_model->check_login($data);
if (empty($data['user']))
{
   $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['user']['user_name'],
   'email'   => $data['user']['user_email'],
   'phone' => $data['user']['user_phone'],
   'logged_in' => TRUE
   );
   
   $this->session->set_userdata($sessiondata);
   redirect('Admin'); // 預設讀取 index 方法
}

}


登录验证后,便出现上面的错误提示,没有找到Admin/index.php
而我在控制器中有一个叫Admin的,视图中的一个admin/index.php文件,为何会提示找不到,加载不了呢?是什么原因,求教。

developerm 发表于 2016-1-22 15:15:36

Admin控制器中的index方法代码如下:

public function index($page = 'index')
    {
                if ( ! file_exists(APPPATH.'/views/admin/'.$page.'.php'))
    {
      // Whoops, we don't have a page for that!
      show_404();
    }

    $data['title'] = ucfirst($page); // Capitalize the first letter
        if(empty($this->session->userdata('name')))
                {

                        $this->load->view('templates/header');
                        $this->load->view('welcome_message');
                        $this->load->view('templates/footer');
                }
                else
                {
        $this->load->view('templates/header_admin',$data);
        $this->load->view('Admin/index');
        $this->load->view('templates/footer_admin');
                }
    }

developerm 发表于 2016-1-22 17:38:32

本帖最后由 developerm 于 2016-1-22 17:44 编辑

Closer 发表于 2016-1-22 17:34
你的 index.php 有放入下列代碼嗎 ?
你是说Admin控制器中吗?如果是,则有放这段代码的

你看是否是index方法有问题?



<?php
class Admin extends CI_Controller {
    public function __construct()
    {
      parent::__construct();
      $this->load->helper('url');
      $this->load->helper('url_helper');
$this->load->library('session');//加载session类
    }

public function index($page = 'index')
    {
if ( ! file_exists(APPPATH.'/views/admin/'.$page.'.php'))
    {
      // Whoops, we don't have a page for that!
      show_404();
    }
    $data['title'] = ucfirst($page); // Capitalize the first letter
if(empty($this->session->userdata('name')))
{
   $this->load->view('templates/header');
   $this->load->view('welcome_message');
   $this->load->view('templates/footer');
}
else
{
$this->load->view('templates/header_admin',$data);
$this->load->view('Admin/index');
$this->load->view('templates/footer_admin');
}
    }



developerm 发表于 2016-1-22 18:30:18

本帖最后由 developerm 于 2016-1-22 22:48 编辑

我刚把整个Admin的控制器代码注释掉,只留下以下代码:

<?php
class Admin extends CI_Controller {

    public function __construct()
    {
      parent::__construct();
      $this->load->helper('url');
      $this->load->helper('url_helper');
                $this->load->library('session');//加载session类
    }
      public function index()
      {
                $this->load->view('templates/header_admin',$data);
                $this->load->view('Admin/index');
                $this->load->view('templates/footer_admin');
      }



此时会提示以下错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: controllers/Admin.php
Line Number: 13
Backtrace:

developerm 发表于 2016-1-22 15:14:35

直接访问(http://www.xx.cn/Admin/index)控制器加方法也一样的提示

Closer 发表于 2016-1-22 15:17:28

當你前往 Admin 時
應該不會自動導向 index.php
所以你還要另外在 route.php 內設定

或是直接給它完整路徑
redirect('Admin/index');

Closer 发表于 2016-1-22 15:20:29

能否提供 route.php 的代碼?

developerm 发表于 2016-1-22 15:21:49

本帖最后由 developerm 于 2016-1-22 15:32 编辑

Closer 发表于 2016-1-22 15:20
能否提供 route.php 的代碼?

defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;


其他的都是注释掉的

环境是php5.5,ci是3.2

Closer 发表于 2016-1-22 15:39:36

本帖最后由 Closer 于 2016-1-22 15:41 编辑

我本來懷疑你 route 有重新定位路徑
但實際上又沒改

因為你的
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php
是說找不到 Admin 底下的 ancestral.php 檔

你 login 成功登入後
導向的網址是 ?

另外可以試試看 redirect('Admin/index'); 或 redirect( site_url('Admin/index') );
static/image/hrline/line3.png
$this->load->helper('url'); 多載入了一次
 

developerm 发表于 2016-1-22 15:55:06

本帖最后由 developerm 于 2016-1-22 15:59 编辑

Closer 发表于 2016-1-22 15:39
我本來懷疑你 route 有重新定位路徑
但實際上又沒改


登录后,我想进入的就是Admin控制器的index方法对应的admin/index.php页
我设置
redirect('Admin/index');
redirect(site_url('Admin/index'));
这样都不可以,还是一样的提示

多加载的那句已删除掉

Closer 发表于 2016-1-22 16:02:07

本帖最后由 Closer 于 2016-1-22 16:03 编辑

developerm 发表于 2016-1-22 15:55
登录后,我想进入的就是Admin控制器的index方法对应的admin/index.php页
我设置
redirect('Admin/index'); ...
我是問說提供你上方的網址列
看是導向哪裡去

另外
錯誤訊息還是一樣這個 ?
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php

不太可能直接跟你說找不到 ancestral.php
肯定是你哪邊試圖想載入它

 

developerm 发表于 2016-1-22 17:28:36

Closer 发表于 2016-1-22 16:02
我是問說提供你上方的網址列
看是導向哪裡去



你是说我具体的网址吗?

index是我在login登录验证成功后要跳转的地方。这里会出现Unable to load the requested file: Admin/index.php

ancestral是我直接访问的一个测试,直接访问时会出现Unable to load the requested file: Admin/ancestral.php
页: [1] 2 3
查看完整版本: 访问错误,但视图和控制器及方法都存在