【发布时间】:2015-06-26 22:32:13
【问题描述】:
如何将表单中的数据数组()存储到 Codeigniter 中的会话中?
我想存储电子邮件数据,以便在模型的帮助下使用它从数据库中检索名字。
以下是我的代码,我无法正常工作:
public function index()
{
if (isset($this->session->userdata['logged_in'])) {
redirect('admin_panel');
}
$this->load->library('form_validation');
$this->form_validation->set_rules('email_address', 'Email Address', 'required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
if ($this->form_validation->run() !== false) {
$this->load->model('admin_model');
// then validation passed . Get data from the base
$res = $this->admin_model->verify_user($this->input->post('email_address'), $this->input->post('password'));
if ($res !== false) {
// person has an account
$session_data = array(
'id' => $row[0]->id,
'email' => $row[0]->email_address,
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
redirect('admin_panel');
}
很高兴知道这样做的正确方法。我对 Codeigniter 还很陌生,最近才熟悉 MVC。
我很抱歉没有提供足够的细节。我只发布了部分代码。我只对如何将登录表单数据存储到会话中以及如何检索它感兴趣。
下面是控制器的完整代码——nxlogin.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Nxlogin extends CI_Controller {
function __contruct()
{
parent::__contruct();
session_start();
}
public function index()
{
if (isset($this->session->userdata['logged_in'])) {
redirect('admin_panel');
}
$this->load->library('form_validation');
$this->form_validation->set_rules('email_address', 'Email Address', 'required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]');
if ($this->form_validation->run() !== false) {
$this->load->model('admin_model');
// then validation passed . Get data from the base
$res = $this->admin_model->verify_user($this->input->post('email_address'), $this->input->post('password'));
if ($res !== false) {
// person has an account
$session_data = array(
'id' => $row[0]->id,
'email' => $row[0]->email_address,
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
redirect('admin_panel');
}
}
$this->load->view('login_view');
}
public function logout()
{
$sess_array = array(
'id' => '',
'email' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
redirect('nxlogin');
}
}
这是我的模型 - admin_model.php
<?php
class Admin_model extends CI_Model {
function __construct()
{
}
public function verify_user($email, $password)
{
$q = $this->db->where('email_address', $email)->where('password', sha1($password))->limit(1)->get('adminusers');
if ($q->num_rows > 0) {
return $q->row();
}
return false;
}
public function get_data($id)
{
$q = $this->db->get_where('adminusers', array('id' => $id));
if ($q->num_rows > 0) {
return $q->result();
}
return false;
}
}
现在我要做的是将电子邮件存储到会话数组中,然后在 admin_panel.php-控制器中使用它从具有该电子邮件的特定数据库行中检索数据(如全名);这是管理主页。代码是:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin_panel extends CI_Controller {
public function __construct()
{
session_start();
parent::__construct();
if (!isset($this->session->userdata['logged_in'])) {
redirect('nxlogin');
}
}
public function index()
{
$this->load->view('admin_panel');
}
public function profile()
{
if (isset($this->session->userdata['logged_in']))
{
$id = isset($this->session->userdata['logged_in']) ;
$this->load->model('admin_model');
$data['query'] = $this->admin_model->get_data($id);
$this->load->view('profile', $data);
}
}
}
我还看到您在将信息存储到会话数组时使用了此代码 -
$session_data = array(
'id' => $row[0]->id,
'email' => $row[0]->email_address,
);
为什么两者都是 $row[0]?
【问题讨论】:
标签: php codeigniter session