亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Codeigniter 不顯示以用戶名記錄的當前會話

Codeigniter 不顯示以用戶名記錄的當前會話

PHP
青春有我 2022-10-22 15:22:27
我想顯示當前用戶的姓名。在視圖中 (dashboard.php)<?php $username = $this->session->userdata('logged_in');echo $username;?>我的數據庫在表“用戶”中有一個字段“名稱”。用戶名保存在這里。但我得到的輸出只是“名稱”所以,我在下面添加了這個<?php $username = $this->session->userdata('logged_in');echo $username;print_r($this->session->all_userdata());?>輸出是名稱數組([__ci_last_regenerate] => 1583656504 [name] => name [] => [logged_in] => 1)問題在哪里?我注冊了新用戶,值已正確保存在數據庫中,我也可以登錄。但無法顯示登錄用戶名。Login.php(控制器)<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class Login extends CI_Controller {function __construct() {parent::__construct();// Load url helper        $this->load->helper('url');        $this->load->library(['form_validation','session']);        $this->load->database();        //load the Login Model        $this->load->model('UserLogin', 'login');}    public function index()    {        $logged_in = $this->session->userdata('logged_in');        if($logged_in){            //if yes redirect to welcome page            redirect(base_url().'app/dashboard');        }     $data['title'] = 'Login';        $this->load->view('app/login', $data);    }        public function doLogin() {        //get the input fields from login form        $name = $this->input->post('name');        $email = $this->input->post('email');        $password = sha1($this->input->post('password'));        //send the email pass to query if the user is present or not        $check_login = $this->login->checkLogin($email, $password);        //if the result is query result is 1 then valid user        if ($check_login) {         // $this->session->set_userdata('logged_in', true);         $this->session->set_userdata('logged_in', $check_login);            redirect(base_url().'app/dashboard');           }}
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

您的方法有幾個問題,您正在打印用戶名


$username = $this->session->userdata('logged_in');

echo $username; 

但是您沒有在任何地方分配用戶名,因此要完成此操作,您可以在登錄類中進行一些選擇


class UserLogin extends CI_Model{

  public function checkLogin($email, $password) {

    $this->db->where('email', $email);

    $this->db->where('password', $password);

    $query = $this->db->get('users');

      if($query->num_rows())

      {

        $user = $query->row_array();

        print_r($user); die(); // remove die after testing

        return $user;

      }

  return false;

}

比你能回聲:


$user = $this->session->userdata('logged_in');

echo $user['username'];

第二個問題是這種方式登錄用戶非常不安全,您可以對密碼進行md5或其他加密。IE:


$this->db->where('password', md5( $password));

或更好的用戶ion_auth library,默認情況下為您提供各種選項。


查看完整回答
反對 回復 2022-10-22
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

更改以下CheckLogin()類似然后檢查用戶數據


public function checkLogin($email, $password) {

    $this->db->where('email', $email);

    $this->db->where('password', $password);

    $query = $this->db->get('users');

    if($query->num_rows() == '1'){

        $data = $query->row_array();

        $this->session->set_userdata(array('name'=>$data['name'],'loggedin'=>'1'));         

    }

    return $query->num_rows();


查看完整回答
反對 回復 2022-10-22
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

請嘗試更改模型


class UserLogin extends CI_Model

{

     public function checkLogin($email, $password) {


    $this->db->where('email', $email);

    $this->db->where('password', $password);

    return $this->db->get('users');



}


查看完整回答
反對 回復 2022-10-22
  • 3 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號