Làm sao lấy các phần tử trong mảng lấy từ model ra để gán vào session trong controller (php mvc)

Cho em hỏi dại các bác tí.

Số là em đang mò mẫm mần cái code đăng nhập trong PHP MVC.

Sau khi vượt qua được kiểm tra email, passwork, lấy được dữ liệu của user từ model đem lên controller và vardum ra được rồi, nhưng không biết cách nào để lấy UserName và Level của user ra gán vào Session.

Cách cách đệ đã thử:

  1. Chuyển dữ liệu thành mảng rồi dùng foreach duyệt mảng để gán phần tử vào biến rồi gán biến vào session -> báo lỗi.

  2. Chuyển dữ liệu thành mảng rồi truy xuất kiểu : $TênMảng[‘tên phần tử’] để gán vào session -> báo lỗi.

Dù biết đây có thể là kiến thức cơ bản, nhưng đệ mới dzô học 2 tháng php, đệ đã hỏi các bác gú gồ, dzu túp và test thử các kiểu trong 3 ngày mà vẫn chưa được, mong các anh chị đàn anh đừng chê trách nhé.

Mong nhận được chỉ giáo từ các anh chị em!

Đây là Thủ tục trong Controller:

public function Ckin()
	{
		$user = $this->input->post('Email');
		$user = strip_tags($user);
		$user = addslashes($user);
		$keyGau = $this->input->post('Pass');
		$keyGau = strip_tags($keyGau);
		$keyGau = addslashes($keyGau);

		if($user == null && $keyGau == null )
		{
			$Thongbao['ThongbaoCK'] = array('Tb' => 'Thiếu Email và Mật khẩu!',
											'Us' => '',
											'Pa' => ''
											);
			$this->load->view('GauLogin', $Thongbao);
		}
		elseif ($user == null) 
		{
			$Thongbao['ThongbaoCK'] = array('Tb' => 'Thiếu Email đăng nhập!',
											'Us' => $user,
											'Pa' => $keyGau
											);
			$this->load->view('GauLogin', $Thongbao);
		}
		elseif ($keyGau == null) 
		{
			$Thongbao['ThongbaoCK'] = array('Tb' => 'Thiếu Mật khẩu đăng nhập!',
											'Us' => $user,
											'Pa' => $keyGau
											);
			$this->load->view('GauLogin', $Thongbao);
		}
		else
			{
				$this->load->model('DangNhap_M');
				$Check = $this->DangNhap_M->KiemTra($user, $keyGau);

			//$Check là dữ liệu chứ thông tin user lấy ra từ database.	

				if ($Check == null) 
					{
						$Thongbao['ThongbaoCK'] = array('Tb' => 'Sai Email hoặc Mật Khẩu!',
											'Us' => $user,
											'Pa' => $keyGau
											);
						$this->load->view('GauLogin', $Thongbao);
					}
					else 
					{	
						$dulieu = array('dulieudata' => $Check);
						$this->session->set_userdata('User',$dulieudata['NickName']);
						$this->session->set_userdata('Level',$dulieudata['NumQuyenLuc']);

				//Thắc mắc: Mình làm như vậy thì báo lỗi không đi tiếp được mong anh chị em chỉ giáo!

						$this->load->view('Home');
					}

				}
			
		}

}

Đây là thủ tục trong Model:

		public function KiemTra($Gauvao, $Pass)
	{
		$this->db->select('*');
		$this->db->where('GauMeo',$Gauvao) ->where('DorKey',$Pass) ; 
		$Thongbao = $this->db->get('mapuer');
//mapuer là tên bảng chứa dữ liệu user đăng nhập.

		$Thongbao = $Thongbao -> result_array();
		return $Thongbao;
	}

Đây là Database - bảng chứa dữ liệu user đăng nhập:

Đây là thông báo ở trang kết quả:

Báo lỗi gì thì bác đưa lên cho ae xem cùng chứ ỉm đi thế thì ai biết đâu mà fix =))
mình không biết PHP nhưng chắc có câu báo lỗi thì có thể giúp bác được :smiley:

2 Likes

Bạn nên dùng markdown thay vì image để hiển thị code nhé.

3 Likes

Camr ơn bác, Mình đã sửa lại, thêm phần báo lỗi và đưa code lên, bác chỉ giáo giúp mình với :slight_smile:

Cảm ơn bác đã hướng dẫn, bác check giúp mình xem nhé. Chúc bác luôn vui vẻ :slight_smile:

Không có biến $dulieudata

$dulieu = array('dulieudata' => $Check);
$this->session->set_userdata('User',$dulieudata['NickName']);
$this->session->set_userdata('Level',$dulieudata['NumQuyenLuc']);

Thử sửa thành

$dulieu = array('dulieudata' => $Check);
$this->session->set_userdata('User', $dulieu['dulieudata']['NickName']);
$this->session->set_userdata('Level', $dulieu['dulieudata']['NumQuyenLuc']);

hoặc

$this->session->set_userdata('User', $Check['NickName']);
$this->session->set_userdata('Level', $Check['NumQuyenLuc']);
4 Likes

Cảm ơn bác, mình thử liền đây :slight_smile:

Chào bác, cả hai cách bác hướng dẫn không hiểu sao vẫn không được. Cảm ơn bác nhiều nhé!

Ở trên show lỗi Undefined variable: dulieudata. Mình chỉ chỗ sửa rồi.

Còn cái hình bạn mới post là Undefined index: NickName. Nghĩa là $Check không có key là NickName. Giờ var_dump biến $Check, echo nó ra kiểm tra tên chính xác của 'NickName` là gì.

3 Likes

Nhờ bác chỉ giáo với, Mình var_dum và ra như vậy:

return $Thongbao; chuyển thành return $Thongbao[0]; trong method KiemTra của Model

3 Likes

Nếu vậy nó sẽ trả về cho Controller Giá trị là phần tử đầu tiên của mảng = Id của user phải không bác?

À mình hiểu rồi, cảm ơn bác nhiều :slight_smile:

Cảm ơn các bác nhiều lắm, cuối cùng nhờ sự chỉ giáo của các bác mà mình đã làm được. Chúc các bác bữa tối ngon miệng nhé ! :smile: :blush:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?