2013-04-18 65 views
0

我想获得欢迎管理网站(crud)的会话fname,对于会话用户名我已经拥有它,因为它已经解密$_SESSION['username'] = $this->input->post('username');,我的问题如何从数据库创建会话fname?如何在codeigniter中检索数据而无需发布?

数据库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); 
    } 
} 

回答

1

第一关,就不应发布输入到会话,你应该先验证它反对分贝。您的投入应消毒的SQL注入等

我个人,将与CI的会话库做到这一点(你需要自动加载它在自动加载配置)

然后,它是沿着这些路线的东西你模型,或者您可以将$数据发送到控制器,并从那里将其添加到会话中。

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。

+0

thx安东它的作品,我是codeigniter顺便新手,如果你有任何链接教程也许可以帮助:D – Niinii 2013-04-18 06:29:40

+0

我假设你正在关注视频教程(这很好)。尝试处理模型中的数据,然后将数组发送到控制器,然后发送到视图。不要使用Objects,像上面的例子那样使用数组。阅读CI参考。写得很好。 – Ando 2013-04-18 16:12:15

相关问题