2017-06-19 28 views
1

我已成功創建註冊和登錄系統。 我在登錄表單中使用的用戶名和密碼,我希望把用戶ID在其他類似形式的隱藏字段如何在登錄後獲取用戶名codeigniter

登錄模式cliente.php:

public function login($username,$password){ 
    $this->db->select('IdCliente'); 
    $this->db->where('LoginCliente',$username); 
    $this->db->where('PassCliente',$password); 
    $q = $this->db->get('clientes'); 

    if($q->num_rows()>0){ 
     return true; 
    }else{ 
     return false; 
    } 

登錄控制器的login.php:

public function index(){ 
    if($this->session->userdata('LoginCliente')){ 
     redirect('profile'); 
    } 
    if(isset($_POST['password'])){ 
     $this->load->model('cliente'); 
     if($this->cliente->loginemp($_POST['username'],$_POST['password'])){ 
      $this->session->set_userdata('Login',$_POST['username']); 
      redirect('PanelIndex'); 
     }elseif(isset($_POST['password'])){ 
     $this->load->model('cliente'); 
     if($this->cliente->login($_POST['username'],$_POST['password'])){ 
      $this->session->set_userdata('LoginCliente',$_POST['username']); 
      $this->session->userdata('IdCliente'); 
      redirect('profile'); 
     }else{ 
      redirect('login');    
     } 
    } 

    } 

    $this->load->view('inicio/loginview'); 

} 

profile.php

public function index() 
{ 


     $this->load->view("/clientes/clienteindex"); 

} 
+0

如果會話數據存儲在一個會話一次,然後你可以簡單地把它在視圖中像我回答。 **在配置文件(在視圖):** –

+1

我希望你不要保存密碼計劃在數據庫如果使用不好的想法哈希http://php.net/manual/en/function.password-hash .php並驗證http://php.net/manual/en/function.password-verify.php – user4419336

+0

@lalo是否這個問題沒有解決? –

回答

0

如果你想IdCliente您需要先從登錄功能中返回它。

public function login($username,$password){ 
    $this->db->select('IdCliente,LoginCliente'); 
    $this->db->where('LoginCliente',$username); 
    $this->db->where('PassCliente',$password); 
    $q = $this->db->get('clientes'); 

    if($q->num_rows()>0){ 
     return $q->row_array(); 
    }else{ 
     return false; 
    } 
} 

現在在功能指數:

$session_data = $this->cliente->login($_POST['username'],$_POST['password']) 
if(isset($session_data) && !empty($session_data){    
     $this->session->userdata('session_data',$session_data); 
     redirect('profile'); 
} 

在配置文件(在視圖):

$session_data = $this->session->userdata('session_data'); 
    $IdCliente= $session_data['IdCliente']; 
    $LoginCliente= $session_data['LoginCliente']; 
+0

你在指數的意思更換這部分 如果($這個 - >會話級>用戶數據( 'LoginCliente')){ 重定向( '曲線'); } ??? – lalo

+0

是在登錄控制器中。試試這個代碼。在$ session_data是= $這個 - > cliente- –

+0

解析錯誤(T_IF)>登錄($ _ POST [ '用戶名'],$ _ POST [ '密碼']) 如果(isset($ session_data是)&&!空($ session_data是) { – lalo

0

從您的CI庫創建Simple_login.php文件夾,並把這個代碼。

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

/****************** 
* SHAHBLOGGER.COM* 
******************/ 

class Simple_login { 

    // SET SUPER GLOBAL 
    var $CI = NULL; 

    /** 
    * Class constructor 
    * 
    * @return void 
    */ 
    public function __construct() { 
     $this->CI =& get_instance(); 
    } 


    public function login($email, $password, $referer) { 

     //check username and password 
     $query = $this->CI->db->get_where('clientes',array('LoginCliente'=>$username,'PassCliente' => $password)); // better use md5($password) 

     if($query->num_rows() == 1) { 
      //let start query 

      $row = $query; 
      $user = $row->row(); 
      $id = $user->IdCliente; 


      //set session user 

      $this->CI->session->set_userdata('id', $id); 

      redirect($referer); 

     }else{ 

      //redirect them to you login page 
      redirect(site_url('login')); 
     } 
     return false; 
    } 



    /* check If They're login. If yes, set userdata */ 
    public function check_login() { 

     //check session id set or not set. if not set, they're not login 
     if($this->CI->session->userdata('id') == '') { 


      //they're not login so redirect them to login page 
      redirect(site_url('login')); 

     } 
    } 



    // Unset session data 
    public function logout() { 
     $this->CI->session->unset_userdata('id'); 
     redirect(site_url('login')); 
    } 
} 

然後修改您的控制器

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

class Login extends CI_Controller { //<<-- change 'Login' to your own class base on your controller file name 

    public function index() { 

     // Fungsi Login 
     $valid = $this->form_validation; 
     $username= $this->input->post('username'); 
     $password = $this->input->post('password'); 
     $referer = $_SERVER['HTTP_REFERER'];// change where you want user redirect after success login 
     $valid->set_rules('username','Username','required'); 
     $valid->set_rules('password','Password','required'); 


     if($valid->run()) { 

      $this->simple_login->login($username,$password, $referer); 
     } 
     // End login 

      $this->load->view('you_login_view'); 

    } 

    public function logout(){ 
     $this->simple_login->logout(); 
    } 
} 
  1. makesure激活笨自動加載功能。 Follow this link

  2. 調用登錄用戶的ID使用此$this->session->userdata('id');

  3. 使頁面只能通過登錄用戶的用戶訪問,粘貼在控制器$this->simple_login->check_login();

更新時間:立足下面的評論。我已經改變了查詢到修改後的查詢(笨活動記錄),以避免SQL注入

+0

如果sucess登錄後我的網頁是控制器/ profile.php我如何編輯此字段??? ---> $引薦= $ _ SERVER [ 'HTTP_REFERER']; – lalo

+0

發揮與URL mybe SITE_URL( '曲線')。 。如果你的個人資料頁登錄是sitename.com/profile –

+0

它會保持工作。如果你有這個代碼問題,請讓我知道。但是如果它成功地調用用戶ID。請接受我的問題。謝謝 –

相關問題