테스트 사이트 - 개발 중인 베타 버전입니다

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

호다 2년 전 조회 1,414

안녕하세요? 항상 도움 받고 있습니다. login_check.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 = "admin@makorang.com"; // 보내는 사람 이메일 주소         $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개

채택된 답변
+20 포인트
toqurk
2년 전

틀린 부분

$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가 존재 할 경우이지만 이미 상단에서 쿼리문을 던지기 전 나와야 햇을테니..

 

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);

 

으로 하시면 되겟지요

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인