2014-08-28 4 views
1

내 서버에 Joomla를 실행하는 웹 사이트가 있습니다. public_html 안에 새로운 디렉토리를 만들었습니다.이 디렉토리 안에는 Codeigniter 응용 프로그램이 있습니다. Codeigniter와 Joomla를 처음 접했을 때 Codeigniter를 사용하여 로그인 양식을 만들려고합니다. 사용자 정보를 저장하기 위해 새 테이블을 생성하고 싶지 않습니다. Joomla에 이미 그러한 정보가 있기 때문입니다. #_users라는 Joomla 테이블에서 사용자 정보 (사용자 이름과 암호)를 검색하려고하지만 문제는 암호가 Joomla에서 다른 방식으로 저장된다는 것입니다. 그것은 md5와 salt 문자열을 사용합니다. 가 여기 내 CodeIgniter의에서 모델의 : I 줌라의 사용자 테이블에 연결할 수있어Joomla 사용자 테이블에서 암호를 가져 와서 codeigniter 응용 프로그램에서 사용하십시오.

<?php 
Class User extends CI_Model{ 

function login($username, $password){ 
    $dbjoomla = $this->load->database('my_joomla_db'); 
    $dbjoomla-> select('id, username, password'); 
    $dbjoomla-> from('users'); 
    $dbjoomla-> where('username', $username); 
    $dbjoomla-> where('password', md5($password)); 
    $dbjoomla-> limit(1); 

    $query = $dbjoomla-> get(); 

    if($query -> num_rows() == 1){ 
    return $query->result(); 
    } 
    else{ 
    return false; 
    } 
    } 
} 

($의 dbjoomla가 비어 있지 않습니다 및 설정되어 있기 때문에)하지만, 코드 때문에 암호 형식의 아직 작동하지 않습니다 Joomla에 저장됩니다. md5 ($ password) 만 사용하여 검색 할 수 있습니다. Joomla 암호를 가져 와서 Codeigniter 응용 프로그램에서 확인할 수 있습니까? 그게 가능하니?

+0

당신이'md5 and salt'라고 말하면, Joomla 2.5에 적용된다는 사실을 알고 있기를 바랍니다. Bcrypt는 Joomla 3.2 이후 버전에서 사용됩니다. :) – Lodder

+0

나는 단지 Joomla 인증 및 사용자 플러그인과 JUser의 코드를 따라갈 것입니다. 사용자가 입력 한 암호가 테이블의 암호화 된 암호와 일치하는지 확인하는 것만 큼 사용자의 암호를 얻지 못합니다. 조심스럽게 공부하지 않는 한 인증을하지 마십시오. – Elin

답변

0

Joomla가 암호를 암호화하는 방법을 모르지만 데이터베이스에 소금이있을 수 있습니다.

먼저 -> where ('username', $ username);을 선택하십시오. > 행() 메소드 대신에 - - 당신이 1 개 행을 받고해야하기 때문에, 당신은 사용할 것 그리고

> 결과() 이제

$dbjoomla = $this->load->database('my_joomla_db'); 
$q = $dbjoomla 
      ->select('id, username, password, salt') 
      ->from('users') 
      ->where('username', $username) 
      ->get(); 
$row = $q->row(); 

을 당신이 암호화 된 암호 & 포함 된 행 우리가있어 위와 같이

$JoomlaEncryptedPassword = md5($PasswordGivenByUser.$row->salt); 
if ($JoomlaEncryptedPassword === $row->password) { 
    return $row; 
}else{ 
    return FALSE; 
} 

- 소금, 사용자가 입력 한 암호가 정확한지 확인 할 수 있습니다 (이것은 단지 예입니다 당신은 암호화 암호가 얼마나 있는지 확인 줌라를 검토해야합니다) Joomla가 수행 한 암호화 복제 & comp 우리가 행을 반환하면 OK입니다. 그렇지 않으면 우리는 FALSE를 리턴합니다.

이제는 개념이 분명합니다. Joomla 파일을 통해 파기하는 방법 만 설명하면됩니다. 암호를 구현하여 구현할 수 있습니다.