Php 如何使用codeigniter在登录表单中设置会话
我是codeigniter的新手。我无法在登录表单中设置会话 我的模型页面是user.php:Php 如何使用codeigniter在登录表单中设置会话,php,codeigniter,Php,Codeigniter,我是codeigniter的新手。我无法在登录表单中设置会话 我的模型页面是user.php: <?php class User extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); $this->load->library('session'); $th
<?php
class User extends CI_Model
{
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->library('session');
$this->load->helper('url');
}
public function login_model($username,$password)
{
$where = array('username'=>$username, 'password'=>$password);
$query = $this->db->get_where('signtable', $where);
if($query->num_rows() == 1)
{
$row = $query->row();
$data = array(
'user_logged_in' => TRUE,
'password' => $row->password,
'username' => $row->username);
$this->session->set_userdata($data);
}
else
{
echo "invalid username or password";
}
}
}
?>
我的控制器页面是login1.php:
<?php
class Login1 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('User');
$this->load->helper('form');
}
public function index()
{
if($this->input->post())
{
$this->load->library('form_validation');
$this->form_validation->set_rules('name','Username','required|callback_username_check|trim|xss_clean');
$this->form_validation->set_rules('pass','Password','required|callback_password_check|trim');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login');
}
else
{
$username = $this->input->post('name');
$password = $this->input->post('pass');
$this->User->login_model($username,$password);
}
}
$this->load->view('login');
}
}
?>
我的另一个控制器页面是login2.php
<?php
class Login2 extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('User');
$this->load->helper('url');
}
public function index ()
{
$this->load->model('Retrieve_model');
$data['result'] = $this->Retrieve_model->retrieve();
$this->load->view('logout',$data);
}
}
?>
我的会话控制页面是session_ctrl.php:
<?php
class Session_ctrl extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->helper('url');
$this->load->database();
$this->load->model('User');
}
public function index()
{
if($this->User->login_model($username,$password))
{
redirect('login2','refresh');
}
else
{
redirect('login1','refresh');
}
$this->load->view('login');
}
}
?>
我的登录视图页面是login.php:
<?php
echo validation_errors();
echo form_open('login1');
?>
<html>
<body>
<tr>
<td>Username <input type="text" name="name" value = "<?php echo set_value('name'); ?>"></td><td><?php echo form_error("name");?></td><br><br>
<td>Password <input type="password" name="pass" ></td><td><?php echo form_error("pass");?></td><br><br>
<input type="submit" name="submit" value ="LogIn">
<?php form_close(); ?>
</tr></body>
</html>
控制器中的用户名
public function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('name','Username','required|callback_username_check|trim|xss_clean');
$this->form_validation->set_rules('pass','Password','required|callback_password_check|trim');
if ($this->form_validation->run() == FALSE){
echo "Invalid User Loging";
# $this->load->view('login');
}
else{
$username = $this->input->post('name');
$password = $this->input->post('pass');
$result = $this->model_name->check_login($username,$password);
if ($result != FALSE ) {
# Inavlid User...
$this->load->view('login');
}
else{
# Valid user
$this->load->view('home');
}
}
}
在型号中
public function check_login($username,$password)
{
$query = $this->db->query("SELECT * FROM signtable WHERE username = '$username' AND password = '$password' ")
$result = $query->result_array();
$count =count($result);
if(empty($count) || $count >1){
return FALSE;
}
else{
$data = array(
'user_logged_in' => TRUE,
'username' => '$username'
);
$this->session->set_userdata($data);
}
}
表格应该是开放的
echo form_open('controller_name/index');
尝试在方法中加载会话
public function login_model($username,$password)
{
$this->load->library('session'); # Load session
$where = array('username'=>$username, 'password'=>$password);
$query = $this->db->get_where('signtable', $where);
if($query->num_rows() == 1){
$row = $query->row();
$data = array(
'user_logged_in' => TRUE,
'password' => $row->password,
'username' => $row->username);
$this->session->set_userdata($data);
}else{
echo "invalid username or password";
}
}
并通过这种方式调用会话-
$this->session->userdata('username');
你有什么问题??正在检索会话值??错误??可以指定吗?1)'username'=>'$rusername'
2)if(空($count)|$count>1){
2nd 1n我要知道亲爱的Saty我知道有很多错误。为了得到补救,我发布了这个。你能帮我吗
$this->session->userdata('username');