gpt4 book ai didi

php - 创建 session 时 undefined variable ?

转载 作者:行者123 更新时间:2023-11-29 12:05:00 25 4
gpt4 key购买 nike

我正在尝试在 codeigniter 中创建 session ,并像往常一样按照步骤操作,但是在立即显示 session 数据时,我收到错误 undefined variable 电子邮件,我试图找出错误,但没有成功

// Controller 登录 Controller

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
print_r( debug_backtrace() );
//ini_set('memory_limit', '-1');
//ini_set('max_execution_time', 3000);
ini_set('display_errors',1);
error_reporting(E_ALL);
class LoginController extends CI_Controller
{

public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('html');
$this->load->database();
$this->load->library('form_validation');

}

public function index()
{
//load the login model
$this->load->model('login_model');
// $qry=$this->login_model->validate();



//get the posted values
$username = $this->input->post("username");
$password = $this->input->post("password");

//set validations
$this->form_validation->set_rules("username", "username", "trim|required");
$this->form_validation->set_rules("password", "password", "trim|required");

if ($this->form_validation->run() == FALSE)
{
//validation fails
redirect('Homecontroller/index'); //make new controller for loading a form again
echo "Validation fails"; // even for no name and passwrd
}
else
{
//validation succeeds
if ($this->input->post('submit') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username, $password);
if ($usr_result > 0) //active user record is present
{
//set the session variables
// $sessiondata = array(
// 'username' => $username,
//'loginuser' => TRUE
//);
$this->login_model->set_session($username,$email);//line 58
print_r($this->session->all_userdata()); //to check
return $username;
redirect("Site/member_area");
}
else
{
$this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Invalid username and password!</div>');
redirect('Homecontroller/index');
}
}
else
{
redirect('login/home3');
}
}
}


}?>

//这是我的模型login_model

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();

}

//get the username & password from tbl_usrs
public function get_user($usr, $pwd)
{
$sql = "select * from tbl_usrs where username = '" . $usr . "' and password = '" .$pwd . "' ";
$query = $this->db->query($sql);
return $query->num_rows();
}

public function set_session($username,$email) {
$sql="SELECT id FROM tbl_usrs WHERE username='".$username."' LIMIT 1 ";
$result=$this->db->query($sql);
$row=$result->row();


$sess_data=array (

'id'=>$row->id,
'username'=>$username,
'email'=>$email,//line 30
'is_login'=>TRUE
);

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




} //set_seesion function ends

}?>

这就是我得到的

Array ( [__ci_last_regenerate] => 1438028278 [id] => 4 [username] => aman [email] => [is_login] => 1 ) 

最佳答案

我对 codeigniter 不太熟悉,但我认为问题就在这里

 public function set_session($username,$email) {
$sql="SELECT id FROM tbl_usrs WHERE username='".$username."' LIMIT 1 ";
$result=$this->db->query($sql);
$row=$result->row();


$sess_data=array (

'id'=>$row->id,
'username'=>$username,
'email'=>$email,
'is_login'=>TRUE
);

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

在上面的代码中,您只从数据库中获取id,所以我认为应该如下所示,同时获取idemail

 public function set_session($username,$email) {
$sql="SELECT id, email FROM tbl_usrs WHERE username='".$username."' LIMIT 1 ";
$result=$this->db->query($sql);
$row=$result->row();


$sess_data=array (

'id'=>$row->id,
'username'=>$username,
'email'=>$row->email,
'is_login'=>TRUE
);

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

关于php - 创建 session 时 undefined variable ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com