로그인 폼에서 비밀번호가 맞는지 안 맞는지 검사하려고 합니다.

로그인 폼에서 비밀번호가 맞는지 안 맞는지 검사하려고 합니다.

QA

로그인 폼에서 비밀번호가 맞는지 안 맞는지 검사하려고 합니다.

본문

안녕하세요? 항상 도움 받고 있습니다. login_check.php 부분 참고해서 코드를 만들었는데 암호화된 비밀 번호는 어떻게 해야 체크할 수 있는지 모르겠습니다. 도와주세요. 

아래는 코드 입니다. 

 

<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');

if(isset($_POST['login_id']) && isset($_POST['mb_email']) && isset($_POST['mb_password'])) {
    $login_id = $_POST['login_id'];
    $mb_email = $_POST['mb_email'];
    $mb_password = $_POST['mb_password'];

    $sql = "SELECT * FROM g5_member WHERE mb_email = '$mb_email' AND mb_id = '$login_id' AND mb_password = '$mb_password'";
    $row = sql_fetch($sql);

    if (!$row['mb_id'] || !login_password_check($row, $mb_password, $row['mb_password'])) {
        echo "id_or_password_not_found";
    } else if (!$row['mb_email']) {
        echo "email_not_found";
    } else {
        $certification_number = rand(100000, 999999); // 랜덤 인증번호 생성

        $sql2 = " UPDATE g5_member SET mb_certification_number = '$certification_number' WHERE mb_email = '$mb_email' ";
        sql_query($sql2);

        // 이메일 발송 처리
        $name = "마케팅코리아"; // 보내는 사람 이름
        $fmail = "*** 개인정보보호를 위한 이메일주소 노출방지 ***"; // 보내는 사람 이메일 주소
        $to = $mb_email;
        $subject = "인증번호 안내";
        $content = "인증번호는 $certification_number 입니다.";

        $mailer_error = mailer($name, $fmail, $to, $subject, $content, 1); // mailer 함수 호출 후 결과 저장

        if ($mailer_error) {
            echo "success";
        } else {
            echo "error";
        }
    }

    exit();
}
?>
 

 

이 질문에 댓글 쓰기 :

답변 1

틀린 부분

$sql = "SELECT * FROM g5_member WHERE mb_email = '$mb_email' AND mb_id = '$login_id' AND mb_password = '$mb_password'";

이미 DB에 들어간 mb_password 는 암호화 되어 들어갔을테고.. $mb_password는 유저가 작성한 비밀번호 그대로 일텐데 DB에서 100% 비교가 안되겠지유?

보통 1차로 아이디를 체크 합니다.

 

$sql = "SELECT * FROM g5_member WHERE mb_email = '$mb_email' AND mb_id = '$login_id' DB의 값을 가져온 이후 

작성 하신

if (!$row['mb_id'] || !login_password_check($row, $mb_password, $row['mb_password'])) { 를 비교하게 되어있는것이지요..

단, 저 조건에서는 mb_id가 존재 할 경우이지만 이미 상단에서 쿼리문을 던지기 전 나와야 햇을테니..

 

<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');

if(isset($_POST['login_id']) && isset($_POST['mb_email']) && isset($_POST['mb_password'])) {
    $login_id = $_POST['login_id'];
    $mb_email = $_POST['mb_email'];
    $mb_password = $_POST['mb_password'];

    $sql = "SELECT * FROM g5_member WHERE mb_email = '$mb_email' AND mb_id = '$login_id' ";
    $row = sql_fetch($sql);

    if (!login_password_check($row, $mb_password, $row['mb_password'])) {
        echo "id_or_password_not_found";

    }
} else {

    if (!$row['mb_email']) {
        echo "email_not_found";

    }
    $certification_number = rand(100000, 999999); // 랜덤 인증번호 생성

    $sql2 = " UPDATE g5_member SET mb_certification_number = '$certification_number' WHERE mb_email = '$mb_email' ";
    sql_query($sql2);

 

으로 하시면 되겟지요

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 15,331
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT