0

ウェルカム管理サイト (crud) のセッション fname を取得したいのですが、セッション ユーザー名については、既に delclare であるため、既に持ってい$_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);
    }
}
4

1 に答える 1

1

まず、入力をセッションに投稿しないでください。最初にデータベースに対して検証する必要があります。入力は、SQL インジェクションなどのためにサニタイズする必要があります。

個人的には、CI のセッション ライブラリを使用して実行します (自動ロード構成で自動ロードする必要があります)。

次に、モデルのこれらの行に沿ったものです。または、$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 がエコーされます。

于 2013-04-18T06:07:35.497 に答える