php 워드프레스 개발

문자인증 로직 변경

최혁재 2024. 2. 15. 21:02

원래 문자인증 코드 짤때 그냥 세션에다 인증번호 담고 인증번호 입력하면 삭제했는데 
워드프레스에서 제공하는 set_transient() 이걸쓰면 엄청 간편하게 wp_options 테이블에 값이 저장되고
설정한 시간이 지나면 자동으로 삭제된다
set_transient()관련링크 https://developer.wordpress.org/reference/functions/set_transient/

   

public function user_phone_certify_send(){
   
        $phone_number = sanitize_text_field($_POST['phone']);
        $user_id = sanitize_text_field($_POST['user_id']);
        $auth_number = rand(100000, 999999);
        check_ajax_referer('yourdomain_security_'. $user_id, 'yourdomain_nonce');
        $message = "인증번호:{$auth_number}
        3분 내 인증을 완료해주세요.
        ";
        set_transient('yourdomain_expert_phone_certify_number', $auth_number, 3 * MINUTE_IN_SECONDS);
       
        $count = $certify_number = get_transient('yourdomain_expert_phone_certify_number_count');
        $count = $count ? $count : 0;
        $count++;
       
        set_transient('yourdomain_expert_phone_certify_number_count', $count, 3 * MINUTE_IN_SECONDS);
       
        if ($count < 5) {
            $send = your_sms_send_function_here($phone_number, $message);
            if (isset($send['result']) && $send['result'] == 'error') {
                $result = array(
                    'success' => false,
                    'msg'     => $send['message'],
                );
            } else {
                $result = array(
                    'success' => true,
                    'msg'     => '인증번호가 발송 되었습니다.',
                );
            }
        } else {
            $result = array(
                'success' => false,
                'msg'     => '너무 많이 요청했습니다. 잠시 후 요청해주세요.',
            );
        }
        wp_send_json($result);
    }


참고코드