CI 묻고 답하기

제목 메일 발송 테스트 실패 / 관리자 로그인 실패 / 관리자 패스워드 암호화 해제
카테고리 CIBOARD
글쓴이 대니삼촌 작성시각 2023/11/26 10:37:20
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 2549   RSS

안녕하세요.

씨아이보드 Lite 을 설치해서 https://tnkn.fun 라는 웹사이트를 만든 사람입니다.

문제는 메일 발송이 되지 않아 회원정보 찾기를 못하여 로그인을 못하는 사용자가 더러 있는거 같습니다.

지금까지 제가 해 온 해결책은 검색을 통해 라이브러리에 있는 CB_Email.php 의 맨 아래 코드를 아래와 같이 변경하고

function __construct()     

{                 

     $this->CI =& get_instance();         

     $config = array(           

             'protocol' => $this->CI->config->item('email_protocal'),           

             'smtp_host' => $this->CI->config->item('email_smtp_host'),           

             'smtp_port' => $this->CI->config->item('email_smtp_port'),           

             'smtp_user' => $this->CI->config->item('email_smtp_user'),           

             'smtp_pass' => $this->CI->config->item('email_smtp_pass'),           

             'smtp_crypto' => $this->CI->config->item('email_smtp_crypto'),           

             'mailtype' => 'html',           

             'newline' => "\r\n",           

      );           

       parent::__construct($config);     

}

config 에 있는 cb_config.php 에서 설정을 아래와 같이 바꾼 것입니다.

/** * CiBoard 주 : smtp email 을 사용하시는 경우 세팅해주세요 */

$config['email_protocal'] = 'SMTP'; // mail/sendmail/smtp

$config['email_smtp_host'] = 'mail.privateemail.com';

$config['email_smtp_user'] = '메일주소@tnkn.fun';

$config['email_smtp_pass'] = '비밀번호';

$config['email_smtp_port'] = '465';

$config['email_smtp_crypto'] = 'ssl'; // SMTP Encryption. Can be null, tls or ssl.

 

애러 메시지는 나오지 않고 메일 발송 했다는 메시지만 나오는데 실상 메일은 가지 않습니다.

무엇이 잘못 된건지 알려 주시면 감사하겠습니다.

 

--------

엎친데 덮친 격으로

어제 관리자 이메일을 바꾸고 로그인을 시도하는데 계속 실패합니다.

이메일 인증 박스에 체크를 하지 않았습니다.

무슨 방법이 있을까요? 

문제는 이멜발송이 안되어 회원정보찾기가 안됩니다.

그래서 로그인이 안되고 새로 바꾼 이멜과 원래의 비밀번호로 로그인이 안됩니다.

비밀번호는 바꾸지 않았습니다.

그래서 phpmyadmin 으로 가서 관리자 비밀번호를 보니 암호화 되어 있더군요.

검색을 해서 해독하는 방법을 봐도 어떻게 하는지 모르겠습니다.

패스워드는 password_hash 함수로 암호화 처리 되어 있다는데

암호를 푸는 방법을 잘 모르겠습니다. 감사합니다.

 

메뉴얼에 보니 다음과 같은 코드가 있는데 이 코드를 어떻게 해야

암호화된 패스워드를 해독할 수 있는지요?

 

$encrypted_string = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84';

$plaintext_string = $this->encrypt->decode($encrypted_string);

 

--------------------

암호화된 패스워드는 단방향이기 때문에 해독이 불가하다고 하여 아래와 같은 코드로 패스워드를 다시 만들어 phpmyadmin 에서 변경하면 되었습니다.

<?php

$conn = mysqli_connect('MySQL DB서버 host',

    'MySQL DB서버 접속 id,

    'MySQL DB서버 접속 password',

    'MySQL DB명');

    mysqli_set_charset($conn, "utf8");

echo password_hash("새로운 비밀번호", PASSWORD_BCRYPT);

?>

위와 같은 내용으로 pwtest.php을 만들어서 주소창에 입력하고 봤더니암호화 된 새로운 비밀번호가 나타났습니다.

pwtest.php는 index.php가 있는 디렉토리에 생성되어야 합니다.

 

새로 만든 패스워드를 암호화 하여 phpmyadmin에서 패스워드를 교체하면 됩니다.

그래서 관리자 로그인 성공했습니다.

태그 이메일,암호화,패스워드
관련링크 https://tnkn.fun
 다음글 관리자 로그인 실패 (2)
 이전글 라우터 설정 관련 문의 (1)

댓글

변종원(웅파) / 2023/11/26 11:09:14 / 추천 0
메일이 발송은 됐지만 에러는 나중에 오게 됩니다. 매뉴얼에 이메일 로그 찍는게 있으니 출력해보시고 ci로그도 확인해보세요
변종원(웅파) / 2023/11/29 13:00:35 / 추천 0

메일 발송은 프로그램상의 문제 보다는 smtp(발송쪽) 문제가 더 많습니다. 

내 쪽에서는 상대방 메일서버에 보냈기 때문에 성공으로 뜨는거고(내쪽 문제가 있으면 여기서 실패로 뜹니다)

상대방쪽에서 메일을 못 받았는데 그 에러를 확인하지 못하는게 현재 상태입니다.

https://www.ciboard.co.kr/user_guide/kr/libraries/email.html#CI_Email::print_debugger 참고해서 에러메세지 출력해보세요.

smtp를 뭘 사용하는지도 올려보시구요. 메일발송 생각보다 까다롭습니다. 도메인에 대한 화이트 리스트 등록도 해야하고.. (화이트 리스트 등록 안되면 메일 거절하는 곳도 있습니다)

일단 어떤 에러가 났는지부터 확인하세요. (디버깅 기초입니다)

변종원(웅파) / 2023/11/29 13:03:52 / 추천 0

ciboard 소스를 못봐서 어떤 식으로 비밀번호를 암호화 하는지 모르겠지만(복호화 가능하도록 처리하지는 않았을걸로 생각됩니다.)

복호화가 안되는 암호화이면 해당 비밀번호를 직접 암호화 해서 바꾸시는 방법이 있습니다.

복호화 안되는 암호화는 입력받은 비밀번호를 암호화 해서 db의 비밀번호와 비교하는 방식입니다. 그래서 db에 어떤 비밀번호가 있는지 알수가 없습니다.

운영자 등록부분 찾아서 어떤 암호화를 했는지 보시고 그 암호화 방식으로 원하는 비밀번호를 만드셔서 db의 비밀번호를 교체하시면 됩니다. 

대니삼촌 / 2023/11/29 20:29:55 / 추천 0
예 말씀하신대로 새로운 비밀번호를 암호화 해서 바꾸니 로그인 되었습니다. 감사합니다.