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

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

호다 2년 전 조회 1,860

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

제가 랜덤 인증번호를 생성해서 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개

채택된 답변
+20 포인트

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

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

 

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

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

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

답변에 대한 댓글 1개

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

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

플라이
2년 전

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

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

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

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

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

그래서 블랙캣77님 답변은

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

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

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

예:

 

 

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

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

 

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

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

cuwaaang
2년 전

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

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

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

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

2년 전

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

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

답변에 대한 댓글 1개

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

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

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

로그인