php 문자 인증 코드 발송 횟수 제한 실례 설명 실현
등록,비밀번호 수정,비밀번호 찾기 등 장면 에서 우 리 는 핸드폰 문자 메 시 지 를 보 내 인증 코드 를 검증 하 는 것 을 만 날 수 있 습 니 다.우 리 는 핸드폰 의 이 문자 인 터 페 이 스 는 구 매 해 야 한 다 는 것 을 잘 알 고 있 습 니 다.브러시 를 방지 하기 위해 우 리 는 문자 인증 코드 의 발송 횟수 에 대한 제한 을 어떻게 방지 해 야 합 니까?
많은 사람들 이 이렇게 한다.사용자 가 문자 인증 코드 를 받 는 핸드폰 번호,ip,브 라 우 저(유일한 표지 사용)를 제한 하 는 것 이다.
본 고 에서 소개 한 방법 은 사용자 가 매일 같은 브 라 우 저 나 같은 ip 주 소 를 통 해 인증 코드 를 10 번 또는 같은 핸드폰 번호 로 문자 인증 코드 를 3 번 만 받 을 수 있 고 세 가지 제한 은'또는'관계 로 제한 되 며 한 가지 제한 을 초과 하면 인증 코드 를 보 내지 않 는 다 는 것 이다.방법 은 서버 에서 사용자 의 핸드폰 번호,ip,ur 를r 표지 가 파일 을 기록 하고 기록 한 다음 에 파일 기록 을 읽 어서 사용자 가 인증 코드 를 보 내 려 고 하 는 횟수 를 판단 하여 제한 합 니 다.
방법 은 다음 과 같다.
문자 인증 코드 를 가 져 오 는 페이지 입 니 다:
<!DOCTYPE html>
<html>
<head></head>
<body>
<!-- uv_r , , cookie 。 ( js , js ) -->
<input type="hidden" name="uv_r" value="" id="uv_r">
</body>
<script type=”text/javascript”>
/*
js cookie ur_r , , ,js cookie, 。
*/
// cookie
var _uuid = getUUID();
if(getCookie("_UUID_UV")!=null && getCookie("_UUID_UV")!=undefined)
{
_uuid = getCookie("_UUID_UV");
}else{
setCookie("_UUID_UV",_uuid);
}
document.getElementById("uv_r").value = _uuid;// hidden
//
function getUUID()
{
var uuid = new Date().getTime();
var randomNum =parseInt(Math.random()*1000);
return uuid+randomNum.toString();
}
// cookie
function setCookie(name,value)
{
var Days = 365;// cookie
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
// cookie
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
</script>
</html>
백 엔 드 PHP 문자 제한 횟수 등의 패키지 클래스:
Class regMod{
// ,
Protected $Root = null;
Public function __construct(){
$this -> Root = APP_PATH."/data/msg_logs/";//
}
// (Ajax )
Public function get_authentication_code(){
if ($_POST['uv_r'] && $_POST['tel']) {
$ip=$_SERVER["REMOTE_ADDR"];//ip
$tel = $_POST['tel'];//
$uv_r = $_POST['uv_r'];//ur_r
if(empty($uv_r)){
$uv_r = 0;
}
}
//
$uvr_num = $this->checkUvr($uv_r);
$tel_num = $this->checkTel($tel);
$ip_num = $this->checkIp($ip);
if ($uvr_num < 10 && $tel_num < 4 && $ip_num < 10) {
Echo " ";// ,
} else {
Echo “ ”;
// , ,
$data = $tel . "|" . $ip . "|" . $uv_r . "|";
if ($uv_r>0 && $uvr_num >= 10) {
$data = $data . "A@";
}
if ($tel_num >= 4) {
$data = $data . "B@";
}
if ($ip_num >= 10) {
$data = $data . "C@";
}
$this->wirteFile("", $data);
$this->ajax_return(0, " !");// ,ajax_return() ( )
}
}
//
// ur_r
Private function checkUvr($data){
$fileName = "Uv_".date("Ymd",time()).".dat";
$filePath = ($this -> Root).$fileName;//
$c_sum = 0;
if(file_exists($filePath)){//
$arr=file_get_contents($filePath);
$row=explode("|",$arr);
$countArr=array_count_values($row);
$c_sum = $countArr[$data];
if($c_sum<10)
{
$this -> wirteFile($filePath,$data."|");
}
return $c_sum;
}else{// , 0
$this -> wirteFile($filePath,$data."|");
return $c_sum;
}
}
// Tel
Private function checkTel($data){
$fileName = "Tel_".date("Ymd",time()).".dat";
$filePath = ($this -> Root).$fileName;
$c_sum = 0;
if(file_exists($filePath)){
$arr=file_get_contents($filePath);
$row=explode("|",$arr);
$countArr=array_count_values($row);
$c_sum = $countArr[$data];
if($c_sum<4)
{
$this -> wirteFile($filePath,$data."|");
}
return $c_sum;
}else{
$this -> wirteFile($filePath,$data."|");
return $c_sum;
}
}
// IP
Private function checkIp($data){
$fileName = "Ip_".date("Ymd",time()).".dat";
$filePath = ($this -> Root).$fileName;
$c_sum = 0;
if(file_exists($filePath)){
$arr=file_get_contents($filePath);
$row=explode("|",$arr);
$countArr=array_count_values($row);
$c_sum = $countArr[$data];
if($c_sum<10)
{
$this -> wirteFile($filePath,$data."|");
}
return $c_sum;
}else{
$this -> wirteFile($filePath,$data."|");
return $c_sum;
}
}
/**
*
* @param $filePath
* @param $data
*/
Private function wirteFile($filePath,$data){
try {
if(!is_dir($this->Root)){// ,
mkdir($this->Root, 0777, true);
}
if($filePath==""){// ,
$filePath = ($this -> Root)."N".date("Ymd",time()).".dat";
}
//
$fp=fopen($filePath,"a+");//
fwrite($fp,$data);//
fclose($fp);//
} catch (Exception $e) { print $e->getMessage(); }
}
}
다음 단 계 는 문자 제한 을 어디서 사용 해 야 하 는 지 하 는 것 이다.예 를 들 어 등록,비밀번호 찾기,비밀번호 수정 등 방법 에서 이 봉 인 된 종 류 를 직접 예화 하면 사용 할 수 있다.php 가 문자 인증번호 발송 횟수 에 대한 제한 실례 설명 을 실현 하 는 데 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 php 가 문자 인증번호 발송 횟수 에 대한 제한 내용 을 실현 하 는 데 관 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시 면 앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.