Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向到codeigniter中的另一个视图后会话到期_Php_Codeigniter_Session_Codeigniter 3 - Fatal编程技术网

Php 重定向到codeigniter中的另一个视图后会话到期

Php 重定向到codeigniter中的另一个视图后会话到期,php,codeigniter,session,codeigniter-3,Php,Codeigniter,Session,Codeigniter 3,我对codeigniter还很陌生。这是我的第一个项目,我正在建设一个项目,我卡在我的登录注册模块。注册功能工作正常,登录后,我的目标是将用户重定向到管理页面,在那里他/她可以看到他的详细信息。但现在的问题是在检查登录凭据并使用此代码设置用户会话之后 $session_data = array( 'username' => $result[0]->user_name, 'email' => $result[0]-&

我对codeigniter还很陌生。这是我的第一个项目,我正在建设一个项目,我卡在我的登录注册模块。注册功能工作正常,登录后,我的目标是将用户重定向到管理页面,在那里他/她可以看到他的详细信息。但现在的问题是在检查登录凭据并使用此代码设置用户会话之后

$session_data = array(
                'username' => $result[0]->user_name,
                'email' => $result[0]->user_email,
                );
$this->session->set_userdata('loggedin', $session_data);
redirect('logincontroller/admin_dashboard');
但我的会话没有设置。当我在我的管理仪表板视图中转储
$this->session->userdata['loggedin']
时,它返回空值或不显示任何内容

这是我的登录控制器的代码

<?php
class Logincontroller extends CI_Controller 
{
    public $outputData = array();
    public $loggedInUser;

    public function __construct() 
    {
        parent::__construct();
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->library('session');
        $this->load->model('login_database');
        $this->load->helper('url');
        $this->load->database();
    }   
    public function index()
    {
        $this->outputData['pagetitle'] = "Login Form";
        $this->load->view('login_form', $this->outputData);
    }

    public function registrationform()
    {
        $this->outputData['pagetitle'] = "Registration Form";
        $this->load->view('registration_form', $this->outputData);
    }

    public function user_registration_process() 
    {

        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
        $this->form_validation->set_rules('email_value', 'Email', 'trim|required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'trim|required');
        if ($this->form_validation->run() == FALSE) 
        {
            $this->outputData['pagetitle'] = "Registration Form";
            $this->load->view('registration_form', $this->outputData);
        } 
        else 
        {
            $data = array(
            'user_name' => $this->input->post('username'),
            'user_email' => $this->input->post('email_value'),
            'user_password' => $this->input->post('password')
            );

            $result = $this->login_database->registration_insert($data);
            if ($result == TRUE) 
            {
                $this->outputData['pagetitle'] = "Login Form";
                $this->outputData['message_display'] = 'Registration Successfully !';
                $this->load->view('login_form', $this->outputData);
            } 
            else 
            {
                $this->outputData['message_display'] = 'Username already exist!';
                $this->outputData['pagetitle'] = "User Registration";
                $this->load->view('registration_form', $this->outputData);
            }
        }
    }

    public function login_process() 
    {
        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required');

        if ($this->form_validation->run() == FALSE) 
        {
            if(isset($this->session->userdata['loggedin']))
            {
                    redirect('logincontroller/admin_dashboard');
            }
            else
            {
                    $this->outputData['pagetitle'] = "Login Form";
                    $this->load->view('login_form', $this->outputData);
            }
        } 
        else 
        {
            $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password')
            );
            $result = $this->login_database->login($data);
            if ($result == TRUE) 
            {
                $username = $this->input->post('username');
                $result = $this->login_database->read_user_information($username);
                if ($result != false) {
                $session_data = array(
                'username' => $result[0]->user_name,
                'email' => $result[0]->user_email,
                );
                $this->session->set_userdata('loggedin', $session_data);
                redirect('logincontroller/admin_dashboard');
                }
            } 
            else 
            {
                $this->outputData['pagetitle'] = "Login Form";
                $this->outputData['error_message'] = "Invalid Username or Password";
                $this->load->view('login_form', $this->outputData);
            }
        }
    }

    public function admin_dashboard()
    {
        $this->outputData['pagetitle'] = "Admin Dashboard";
        $this->load->view('admin_page', $this->outputData);
    }

    public function logout() 
    {
        $sess_array = array(
        'username' => ''
        );
        $this->session->unset_userdata('loggedin', $sess_array);
        $this->outputData['pagetitle'] = "Login Form";
        $this->outputData['message_display'] = 'Successfully Logout';
        $this->load->view('login_form', $this->outputData);
    }
}
我在支持mysql的服务器上使用codeigniter 3.0.6,请参见。在这份文件中说;使用此代码的另一个变量集会话:

<?php class Logincontroller extends CI_Controller 
{
public $outputData = array();
public $loggedInUser;

public function __construct() 
{
    parent::__construct();
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->load->library('session');
    $this->load->model('login_database');
    $this->load->helper('url');
    $this->load->database();
}   
public function index()
{
    $this->outputData['pagetitle'] = "Login Form";
    $this->load->view('login_form', $this->outputData);
}

public function registrationform()
{
    $this->outputData['pagetitle'] = "Registration Form";
    $this->load->view('registration_form', $this->outputData);
}

public function user_registration_process() 
{

    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
    $this->form_validation->set_rules('email_value', 'Email', 'trim|required|valid_email');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');
    if ($this->form_validation->run() == FALSE) 
    {
        $this->outputData['pagetitle'] = "Registration Form";
        $this->load->view('registration_form', $this->outputData);
    } 
    else 
    {
        $data = array(
        'user_name' => $this->input->post('username'),
        'user_email' => $this->input->post('email_value'),
        'user_password' => $this->input->post('password')
        );

        $result = $this->login_database->registration_insert($data);
        if ($result == TRUE) 
        {
            $this->outputData['pagetitle'] = "Login Form";
            $this->outputData['message_display'] = 'Registration Successfully !';
            $this->load->view('login_form', $this->outputData);
        } 
        else 
        {
            $this->outputData['message_display'] = 'Username already exist!';
            $this->outputData['pagetitle'] = "User Registration";
            $this->load->view('registration_form', $this->outputData);
        }
    }
}

public function login_process() 
{
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');

    if ($this->form_validation->run() == FALSE) 
    {
        if(isset($this->session->userdata['loggedin']))
        {
                redirect('logincontroller/admin_dashboard');
        }
        else
        {
                $this->outputData['pagetitle'] = "Login Form";
                $this->load->view('login_form', $this->outputData);
        }
    } 
    else 
    {
        $data = array(
        'username' => $this->input->post('username'),
        'password' => $this->input->post('password')
        );
        $result = $this->login_database->login($data);
        if ($result == TRUE) 
        {
            $username = $this->input->post('username');
            $result = $this->login_database->read_user_information($username);
            if ($result != false) {
            $session_data = array(
            'username' => $result[0]->user_name,
            'email' => $result[0]->user_email,
            );
            $this->session->set_userdata('loggedin', $session_data);
            redirect('logincontroller/admin_dashboard');
            }
        } 
        else 
        {
            $this->outputData['pagetitle'] = "Login Form";
            $this->outputData['error_message'] = "Invalid Username or Password";
            $this->load->view('login_form', $this->outputData);
        }
    }
}

public function admin_dashboard()
{
 if(!(isset($this->session->userdata['loggedin'])))
        {
                $this->outputData['pagetitle'] = "Login Form";
                $this->load->view('login_form', $this->outputData);
        }
    $this->outputData['pagetitle'] = "Admin Dashboard";
    $this->load->view('admin_page', $this->outputData);
}

public function logout() 
{
    $sess_array = array(
    'username' => ''
    );
    $this->session->unset_userdata('loggedin', $sess_array);
    $this->outputData['pagetitle'] = "Login Form";
    $this->outputData['message_display'] = 'Successfully Logout';
    $this->load->view('login_form', $this->outputData);
}
}
$newdata = array(
    'username'  => 'johndoe',
    'email'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);

$this->session->set_userdata($newdata);
因此,您应该如下更改代码:

$this->session->set_userdata($session_data);

PHP7升级-*已知会话/COOKIE错误

这个答案解决了从PHP5升级到PHP7时已知的会话/cookie错误

如果您的CodeIgniter版本为@3.1.0或更低,并且您正在升级到PHP7.1,则需要更新CodeIgniter。 否则,将您的PHP7.1更改为5.6,它将正常工作

$this->session->set_userdata();-那可能很烦人。一旦您重定向或访问站点结构中的其他页面,它将覆盖您的会话

或者你可以这样做

如果您使用的是CI 3.x,并且刚刚将服务器php版本升级到PHP7.x


转到第281行的system/libraries/Session/Session.php并替换ini_set('Session.name',$params['cookie_name');按ini_集('session.id',$params['cookie_name'])

当我在我的登录过程函数中添加你的代码并运行页面并打印
print\r($This->session->userdata)时,此代码对我无效然后我只会得到这个
数组([\uu ci\u last\u regenerate]=>1490872665)
没有用户dataSorry@Shyamali你的代码对我没有帮助。我添加了它,但它不起作用
$newdata = array(
    'username'  => 'johndoe',
    'email'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);

$this->session->set_userdata($newdata);
$this->session->set_userdata($session_data);