로그인 폼에서 비밀번호가 맞는지 안 맞는지 검사하려고 합니다. 채택완료
안녕하세요? 항상 도움 받고 있습니다. 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개
틀린 부분
$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);
으로 하시면 되겟지요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인