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 = "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();
}
$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분후(마감 시각)을 조건으로 처리하면 되니까요.
불필요한 데이터를 삭제하는 거라면
하루 한 번 처리해도 되지 않을까요?
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
본문 코드가 실행되야 막줄이 실행될텐데요
인증받는 사람들이 많으면 모르겠지만 뜨믄뜨믄있으면....
그래서 블랙캣77님 답변은
막줄을 따로 reset.php 라고 만들고
console.cron-job.org 이런 사이트에서
예를 들어 1분마다 reset.php를 실행하게 해주면 된다는 뜻입니다.
예:

글쓰는데 오래거렸더니 아래 좋은 댓글이 많이 달렸네요.
제 생각에도 엑스엠엘님 댓글이 정답이라 봅니다.
댓글을 작성하려면 로그인이 필요합니다.
쿼리를 자동으로 처리하려면 서버단에다가 설정을해야하고
그 비밀번호찾기같은 인증은 메일을보내고 다시 리턴이 왔을때 받아서 지움
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인