我已经创建了一个帮助器类authentication_helper
,其中我创建了一个用于检查会话的单个函数varify_session()
。我正在使用jquery,其中我使用setTimeout
通过ajax调用来调用somee函数但是这个函数的调用转到核心PHP代码类,现在当我在核心php中调用varify_session()
时它不起作用,但当我在codeigniter类中调用然后它工作,所以我应该怎么做在核心PHP代码中调用它,以便它还检查会话与1 setTimeout函数。
我的帮助文件位于
/www
/sample
/application
/helpers
/authentication_helper
/controller
/core_php.php
/other php clases
,authentication_helper
内的代码就是这个
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function varify_session(){
$CI = &get_instance();
$user_session_id = $CI->session->userdata('logged_in');
if($user_session_id == '') {
redirect('login');
}
}
?>
答案 0 :(得分:0)
CodeIgniter中的Helper文件只是嵌入了函数的php文件。关于它们没有特别的“CodeIgniter”。
您只需要将该特定文件包含在“核心PHP代码类”中:
// inside your core php class
include('path/to/my/ci/application/helper/authentication_helper.php');
<强>更新强>
好的,在阅读了一些评论并仔细查看您的问题之后,我注意到您的结构设置不正确,无法按照设计使用的方式使用CodeIgniter。
我的第一个问题是:“core_php.php
文件实际上做了什么?您是否尝试将其用作控制器?或者您只是将其用作对象?”强>
如果您尝试将其用作控制器 - 那么请不要。通过扩展CI_Controller
将其变为actual CodeIgniter Controller Class。然后,您将像任何其他帮助程序一样加载身份验证帮助程序:$this->load->helper('authentication');
如果您只是将它用作对象(我认为是这种情况),则将其放入libraries
文件夹并从CodeIgniter中调用它加载文件(意味着您可以使用CI实例)。将该文件放入libraries
文件夹后,您可以使用$this->load->library('core_php');
加载它 - 然后您可以使用以下代码调用该文件中的方法:$this->core_php->method_name();
。在需要它的core_php方法中,您可以使用以下代码加载身份验证帮助程序:$this->load->helper('authentication');
以这种方式设置文件将利用CodeIgniter加载机制,并允许您访问CI实例 - 这就是当您收到Trying to get property of non-object
错误时遇到的问题(您试图获取来自CI引导程序之外的CI实例。
如果此设置无效,那么我们需要查看相关文件的实际内容。