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

5분이 지나면 데이터가 지워지는 코드가 작동을 안 합니다. 코드 좀 봐주세요. 채택완료

안녕하세요? 항상 도움 잘 받고 있습니다.

제가 랜덤 인증번호를 생성해서 DB 에 업데이트 하고 메일로 보내는 기능을 구현했는데

5분 뒤에 이 인증번호가 '' 가 되어야 하고 인증번호 생성시간도 0000-00-00 00:00:00 이 되게 하려고 하는데 어떻게 해야하나요? 아래는 제가 만든 코드 입니다.  

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개

채택된 답변
+20 포인트

생성 시각이 있다면 굳이 초기화? 할 필요가 없습니다.

5분후(마감 시각)을 조건으로 처리하면 되니까요.

 

불필요한 데이터를 삭제하는 거라면

하루 한 번 처리해도 되지 않을까요?

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

답변에 대한 댓글 1개

인증번호 시간 생성해서 생성시간에서 5분이 지나면 쓰지 못하게 설정을 했습니다.

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

@엑스엠엘 님이 말씀하신 기준으로 시간체크를 해서 처리하는 방법으로 하시는게 효율적인 방법입니다.

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

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

본문 코드가 실행되야 막줄이 실행될텐데요

인증받는 사람들이 많으면 모르겠지만 뜨믄뜨믄있으면....

그래서 블랙캣77님 답변은

막줄을 따로 reset.php 라고 만들고

console.cron-job.org  이런 사이트에서

예를 들어 1분마다 reset.php를 실행하게 해주면 된다는 뜻입니다.

예:

 

 

글쓰는데 오래거렸더니 아래 좋은 댓글이 많이 달렸네요.

제 생각에도 엑스엠엘님 댓글이 정답이라 봅니다.

 

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

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

쿼리를 자동으로 처리하려면 서버단에다가 설정을해야하고

그 비밀번호찾기같은 인증은 메일을보내고 다시 리턴이 왔을때 받아서 지움

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

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

해당은 누가 인증을 해야지 마지막에 시간을 체크하고 리셋을 하겠네요. 따로 리셋하는 페이지를 만드시고 크론탭을 이용해서 일정 시간마다 체크를 하셔야 할거 같습니다.

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

답변에 대한 댓글 1개

단순히 시간이 지나서 자동으로 초기화가 되는건 안되나요? 보통 인증번호 시스템은 어떤 식으로 데이터 관리하나요?

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

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

로그인

전체 질문 목록