Codeigniter 构造函数运行不正常
Codeingiter construct function is not working well
我正在尝试创建登录系统。我的登录系统工作 100% 完美,但问题是它不能通过会话正确重定向。当我尝试索引中的函数时它工作正常但是如果我将函数移动到父构造那么它就不好了。我认为父结构存在任何问题,因为它也没有在父结构中加载库和模型。所以我必须调用每个函数中的所有内容。检查我尝试的代码:
这段代码工作正常:
<?php
/**
*
*/
class Adminpanel04736 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
}
public function index()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->view('admin/dashboard');
}
public function list_of_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result['post_list']=$this->admin_blog_post->post_list();
$this->load->view('admin/post_list',$result);
}
// post delete id is comming from post_list php to delete the post
public function post_bin($post_delete_id)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->trash_post($post_delete_id);
if ($result) {
redirect('adminpanel04736/list_of_post'); # code...
}
}
public function my_bin_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result['re']=$this->admin_blog_post->trash_bin_post();
$this->load->view('admin/trashed_post',$result);
}
// recycleing the post to repost
public function recycle_post($re)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->repost($re);
if ($result) {
redirect('adminpanel/my_bin_post');
}
}
public function add_new_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->view('admin/add_new_post');
}
// id is comming from delete post page to delete the post permenently
public function destroy_post($id)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->destroy_post_permenently($id);
if ($result) {
redirect('adminpanel04736/my_bin_post');
}
}
public function post_content()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->adding_the_posts($_POST);
if ($result) {
redirect('adminpanel04736/list_of_post');
}
}
public function admin_login()
{
$this->load->view('admin/lock1');
}
public function loginauthticate()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('admin_password','Password','required');
if ($this->form_validation->run()) {
$this->load->model('admin_blog_post');
$verification=$this->admin_blog_post->login_validation($_POST);
if ($verification) {
$username=$_POST['admin_user'];
$password=$_POST['admin_password'];
$session_data= array(
'admin_user' => $username
);
$this->session->set_userdata($session_data);
redirect(base_url().'adminpanel04736/');
}
else
{
$this->session->set_flashdata('error','Invalid Password');
redirect(base_url().'adminpanel04736/admin_login');
}
}
else
{
$this->admin_login();
}
}
}
?>
但这让我错误重定向了太多次。也不要在所有函数中加载库:
<?php
/**
*
*/
class Adminpanel04736 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
}
public function index()
{
$this->load->view('admin/dashboard');
}
public function list_of_post()
{
$this->load->model('admin_blog_post');
$result['post_list']=$this->admin_blog_post->post_list();
$this->load->view('admin/post_list',$result);
}
// post delete id is comming from post_list php to delete the post
public function post_bin($post_delete_id)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->trash_post($post_delete_id);
if ($result) {
redirect('adminpanel04736/list_of_post'); # code...
}
}
public function my_bin_post()
{
$this->load->model('admin_blog_post');
$result['re']=$this->admin_blog_post->trash_bin_post();
$this->load->view('admin/trashed_post',$result);
}
// recycleing the post to repost
public function recycle_post($re)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->repost($re);
if ($result) {
redirect('adminpanel/my_bin_post');
}
}
public function add_new_post()
{
$this->load->view('admin/add_new_post');
}
// id is comming from delete post page to delete the post permenently
public function destroy_post($id)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->destroy_post_permenently($id);
if ($result) {
redirect('adminpanel04736/my_bin_post');
}
}
public function post_content()
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->adding_the_posts($_POST);
if ($result) {
redirect('adminpanel04736/list_of_post');
}
}
public function admin_login()
{
$this->load->view('admin/lock1');
}
public function loginauthticate()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('admin_password','Password','required');
if ($this->form_validation->run()) {
$this->load->model('admin_blog_post');
$verification=$this->admin_blog_post->login_validation($_POST);
if ($verification) {
$username=$_POST['admin_user'];
$password=$_POST['admin_password'];
$session_data= array(
'admin_user' => $username
);
$this->session->set_userdata($session_data);
redirect(base_url().'adminpanel04736/');
}
else
{
$this->session->set_flashdata('error','Invalid Password');
redirect(base_url().'adminpanel04736/admin_login');
}
}
else
{
$this->admin_login();
}
}
}
?>
您的 admin_login 是 Adminpanel04736 class 的方法。
但是当调用任何方法(包括 admin_login)并且用户尚未登录时,您将再次重定向到 admin_login。因此,您将获得无限重定向而不是登录过程。
将 admin_login 移出 class 或在重定向前检查方法名称,如
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='' and
$this->uri->segment(2) !== 'admin_login'))
{
redirect(base_url().'adminpanel04736/admin_login');
}
}
在使用 redirect()
之前,您应该载入:$this->load->helper('url');
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='' and
$this->uri->segment(2) !== 'admin_login'))
{
redirect(base_url().'adminpanel04736/admin_login');
}
}
我正在尝试创建登录系统。我的登录系统工作 100% 完美,但问题是它不能通过会话正确重定向。当我尝试索引中的函数时它工作正常但是如果我将函数移动到父构造那么它就不好了。我认为父结构存在任何问题,因为它也没有在父结构中加载库和模型。所以我必须调用每个函数中的所有内容。检查我尝试的代码:
这段代码工作正常:
<?php
/**
*
*/
class Adminpanel04736 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
}
public function index()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->view('admin/dashboard');
}
public function list_of_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result['post_list']=$this->admin_blog_post->post_list();
$this->load->view('admin/post_list',$result);
}
// post delete id is comming from post_list php to delete the post
public function post_bin($post_delete_id)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->trash_post($post_delete_id);
if ($result) {
redirect('adminpanel04736/list_of_post'); # code...
}
}
public function my_bin_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result['re']=$this->admin_blog_post->trash_bin_post();
$this->load->view('admin/trashed_post',$result);
}
// recycleing the post to repost
public function recycle_post($re)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->repost($re);
if ($result) {
redirect('adminpanel/my_bin_post');
}
}
public function add_new_post()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->view('admin/add_new_post');
}
// id is comming from delete post page to delete the post permenently
public function destroy_post($id)
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->destroy_post_permenently($id);
if ($result) {
redirect('adminpanel04736/my_bin_post');
}
}
public function post_content()
{
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->adding_the_posts($_POST);
if ($result) {
redirect('adminpanel04736/list_of_post');
}
}
public function admin_login()
{
$this->load->view('admin/lock1');
}
public function loginauthticate()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('admin_password','Password','required');
if ($this->form_validation->run()) {
$this->load->model('admin_blog_post');
$verification=$this->admin_blog_post->login_validation($_POST);
if ($verification) {
$username=$_POST['admin_user'];
$password=$_POST['admin_password'];
$session_data= array(
'admin_user' => $username
);
$this->session->set_userdata($session_data);
redirect(base_url().'adminpanel04736/');
}
else
{
$this->session->set_flashdata('error','Invalid Password');
redirect(base_url().'adminpanel04736/admin_login');
}
}
else
{
$this->admin_login();
}
}
}
?>
但这让我错误重定向了太多次。也不要在所有函数中加载库:
<?php
/**
*
*/
class Adminpanel04736 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='')
{
redirect(base_url().'adminpanel04736/admin_login');
}
}
public function index()
{
$this->load->view('admin/dashboard');
}
public function list_of_post()
{
$this->load->model('admin_blog_post');
$result['post_list']=$this->admin_blog_post->post_list();
$this->load->view('admin/post_list',$result);
}
// post delete id is comming from post_list php to delete the post
public function post_bin($post_delete_id)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->trash_post($post_delete_id);
if ($result) {
redirect('adminpanel04736/list_of_post'); # code...
}
}
public function my_bin_post()
{
$this->load->model('admin_blog_post');
$result['re']=$this->admin_blog_post->trash_bin_post();
$this->load->view('admin/trashed_post',$result);
}
// recycleing the post to repost
public function recycle_post($re)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->repost($re);
if ($result) {
redirect('adminpanel/my_bin_post');
}
}
public function add_new_post()
{
$this->load->view('admin/add_new_post');
}
// id is comming from delete post page to delete the post permenently
public function destroy_post($id)
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->destroy_post_permenently($id);
if ($result) {
redirect('adminpanel04736/my_bin_post');
}
}
public function post_content()
{
$this->load->model('admin_blog_post');
$result=$this->admin_blog_post->adding_the_posts($_POST);
if ($result) {
redirect('adminpanel04736/list_of_post');
}
}
public function admin_login()
{
$this->load->view('admin/lock1');
}
public function loginauthticate()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('admin_password','Password','required');
if ($this->form_validation->run()) {
$this->load->model('admin_blog_post');
$verification=$this->admin_blog_post->login_validation($_POST);
if ($verification) {
$username=$_POST['admin_user'];
$password=$_POST['admin_password'];
$session_data= array(
'admin_user' => $username
);
$this->session->set_userdata($session_data);
redirect(base_url().'adminpanel04736/');
}
else
{
$this->session->set_flashdata('error','Invalid Password');
redirect(base_url().'adminpanel04736/admin_login');
}
}
else
{
$this->admin_login();
}
}
}
?>
您的 admin_login 是 Adminpanel04736 class 的方法。 但是当调用任何方法(包括 admin_login)并且用户尚未登录时,您将再次重定向到 admin_login。因此,您将获得无限重定向而不是登录过程。
将 admin_login 移出 class 或在重定向前检查方法名称,如
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='' and
$this->uri->segment(2) !== 'admin_login'))
{
redirect(base_url().'adminpanel04736/admin_login');
}
}
在使用 redirect()
之前,您应该载入:$this->load->helper('url');
function __construct()
{
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('admin_user')=='' and
$this->uri->segment(2) !== 'admin_login'))
{
redirect(base_url().'adminpanel04736/admin_login');
}
}