2014-06-14 2 views
0

내 라이브러리 파일에 대한 사용자 로그인을 만들고 있습니다. 하지만 내 user_query-> 행이 작동하지 않습니다. 사용자 가이드를 읽는 중 수정하는 방법을 모릅니다.

$this->user_id = $user_query->row('user_id'); 
$this->username = $user_query->row('username'); 
$this->CI->session->userdata('user_id') = $user_query->row('user_id'); 

치명적인 오류 : C에서 쓰기 컨텍스트에서 메소드 반환 값을 사용할 수 없습니다 : \ XAMPP \ htdocs를 \ CodeIgniter의-CMS \ 라인 Users.php \ 시스템 \ 라이브러리 69

치명적인 오류 :이 수 '이 t은 C에 쓰기 컨텍스트에서 메소드 반환 값을 사용 : \ XAMPP \ htdocs를 \ 행에 Users.php \ CodeIgniter의-CMS를 \ 시스템 \ 라이브러리 (65)

public function login() { 
$user_query = $this->CI->db->query("SELECT * FROM " . $this->CI->db->dbprefix . "user WHERE username = '" . $this->CI->db->escape($username) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->CI->db->escape($password) . "'))))) OR password = '" . $this->CI->db->escape(md5($password)) . "') AND status = '1'"); 

if ($user_query->num_rows() == 1) { 

$data = array(
'user_id' => $this->user_id, 
'username' => $this->username 
); 

$this->CI->session->set_userdata($data); 

$this->user_id = $user_query->row('user_id'); 
$this->username = $user_query->row('username'); 

line 65 
$this->CI->session->userdata('user_id') = $user_query->row('user_id');  

// Line 69 
$user_group_query = $this->CI->db->query("SELECT permission FROM " . $this->CI->db->dbprefix . "user_group WHERE user_group_id = '" . (int)$user_query->row('user_group_id') . "'"); 

$permissions = unserialize($user_group_query->row('permission')); 

if (is_array($permissions)) { 
foreach ($permissions as $key => $value) { 
$this->permission[$key] = $value; 
} 
} 

} else { 

return false; 

} 

} 

새로운 오류 내가 여기

을에 게재 암호를 제거
Error Number: 1064 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin'' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(''*****''))))) O' at line 1 

SELECT * FROM oc_user WHERE username = ''admin'' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(''******''))))) OR password = ''***************'') AND status = '1' 

Filename: C:\xampp\htdocs\codeigniter-cms\system\database\DB_driver.php 

Line Number: 330 
이 줄을하려고 무엇

답변

1

:

$this->CI->session->userdata('user_id') = $user_query->row('user_id'); 

당신은 세션을 설정하려고합니까? 이 경우에는 set_userdata()를 사용해야합니다 :

$this->CI->session->set_userdata('user_id', $user_query_>row('user_id');  

은 또한, 나는 행() 당신처럼의 사용을 본 적이 없습니다. 나는 [manua] [1] l에 가서 이것을 보았습니다 :

If you want a specific row returned you can submit the row number as a digit in the first parameter.

문자열을 필드 이름으로 사용하는 언급이 없습니다. 어쩌면 당신은 의미 :

$row = $user_query->row(); 
echo $row->user_id; 

내가 그렇게 $user_query->row()->user_id 작동합니다, 체인 될 수 있다고 생각합니다.

$user_query = $this->CI->db->query("SELECT * FROM " . $this->CI->db->dbprefix . " 
user WHERE username = ? 
AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(?))))) OR password = ?) 
AND status = ?", array($username, $password, md5($password), 1)); 
+0

그리고 로그인 기능이 올바른 가지고있는 경우뿐만 아니라 오류를 갖는 권한하지 않도록하기 : 댓글

편집

사용은 더 나은 그 불쾌한 탈출 문제를 피할 수, 쿼리를 매개 변수화. –

+0

업데이트 된 답변보기 –

+0

모두 시도했는데 오류가 하나 더 있습니다. 첫 번째 주제 –