5분이 지나면 데이터가 지워지는 코드가 작동을 안 합니다. 코드 좀 봐주세요.
본문
안녕하세요? 항상 도움 잘 받고 있습니다.
제가 랜덤 인증번호를 생성해서 DB 에 업데이트 하고 메일로 보내는 기능을 구현했는데
5분 뒤에 이 인증번호가 '' 가 되어야 하고 인증번호 생성시간도 0000-00-00 00:00:00 이 되게 하려고 하는데 어떻게 해야하나요?
아래는 제가 만든 코드 입니다.
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
if(isset($_POST['login_id']) && isset($_POST['mb_email'])) {
$login_id = $_POST['login_id'];
$mb_email = $_POST['mb_email'];
$sql = "SELECT * FROM g5_member WHERE mb_id = '$login_id'";
$row = sql_fetch($sql);
if (!$row['mb_id']) {
echo "id_not_found";
} else if ($row['mb_email'] !== $mb_email) {
echo "email_not_found";
} else {
$certification_number = rand(100000, 999999); // 랜덤 인증번호 생성
$sql2 = "UPDATE g5_member SET mb_certification_number = '$certification_number', mb_certification_number_creation_time = '".G5_TIME_YMDHIS."' 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();
}
$expirationTime = date('Y-m-d H:i:s', strtotime('-5 minutes'));
$sql = "UPDATE g5_member SET mb_certification_number_creation_time = '0000-00-00 00:00:00', mb_certification_number = '' WHERE mb_certification_number_creation_time < '$expirationTime'";
sql_query($sql);
?>
답변 5
생성 시각이 있다면 굳이 초기화? 할 필요가 없습니다.
5분후(마감 시각)을 조건으로 처리하면 되니까요.
불필요한 데이터를 삭제하는 거라면
하루 한 번 처리해도 되지 않을까요?
해당은 누가 인증을 해야지 마지막에 시간을 체크하고 리셋을 하겠네요. 따로 리셋하는 페이지를 만드시고 크론탭을 이용해서 일정 시간마다 체크를 하셔야 할거 같습니다.
쿼리를 자동으로 처리하려면 서버단에다가 설정을해야하고
그 비밀번호찾기같은 인증은 메일을보내고 다시 리턴이 왔을때 받아서 지움
본문 코드가 실행되야 막줄이 실행될텐데요
인증받는 사람들이 많으면 모르겠지만 뜨믄뜨믄있으면....
그래서 블랙캣77님 답변은
막줄을 따로 reset.php 라고 만들고
console.cron-job.org 이런 사이트에서
예를 들어 1분마다 reset.php를 실행하게 해주면 된다는 뜻입니다.
예:
글쓰는데 오래거렸더니 아래 좋은 댓글이 많이 달렸네요.
제 생각에도 엑스엠엘님 댓글이 정답이라 봅니다.