我想获得欢迎管理站点(crud)的会话fname,对于我已经拥有它的会话用户名,因为它已经声明$_SESSION['username'] = $this->input->post('username');
,我的问题如何从数据库创建会话fname?
数据库SQL
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`password` varchar(32) NOT NULL,
`fname` varchar(30) DEFAULT NULL,
`lname` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
)
控制器
<?php if(!defined('BASEPATH')) exit('Tidak ada akses!');
class C_login extends CI_Controller{
function __construct(){
session_start();
parent::__construct();
$this->load->model('m_user');
}
public function index(){
if(isset($_SESSION['username'])){
redirect('crud');
}
$this->form_validation->set_rules('username','Username','required');
$this->form_validation->set_rules('password','Password','required');
if ($this->form_validation->run() == TRUE){
$this->load->model('m_user');
$result = $this->m_user->cek_login(
$this->input->post('username'),
$this->input->post('password')
);
if($result == TRUE){
$_SESSION['username'] = $this->input->post('username');
redirect('crud');
}
}
$this->load->view('login/v_form');
}
public function daftar(){
$data = array(
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password)')),
'fname' => $this->input->post('fname'),
'lname' => $this->input->post('lname')
);
$this->m_user->tambah_user($data);
$this->load->view('login/v_daftar',$data);
}
public function logout(){
session_destroy();
$this->index();
}
}
模型
<?php if(!defined('BASEPATH')) exit('Tidak ada access!');
class M_user extends CI_Model{
function __construct(){
parent::__construct();
}
function cek_login($username,$password){
$query = $this->db->where('username',$username)
->where('password',md5($password))
->limit(1)
->get('users');
if ($query->num_rows() > 0){
return $query->row_array();
}
else{
return FALSE;
}
}
function tambah_user($data){
return $this->db->insert('users', $data);
}
}
答案 0 :(得分:1)
首先,您不应该将输入发布到会话中,您应该首先针对数据库进行验证。您的输入应该针对SQL注入等进行清理。
我个人会使用CI的会话库(你需要在autoload配置中自动加载它)
然后它就是你模型中的这些行,或者你可以将$ data发送到控制器并从那里将它添加到会话中。
if ($query->num_rows() === 1){
$row = $query->row();
$data = array (
'username'=> $row->id,
'fname' => $row->fname
);
$this->session->set_userdata($data);
}
然后,如果你想使用会话,你需要像这样调用它
echo $this->session->userdata('username');
这将回显您可以根据需要使用的用户ID。