>백엔드 개발 >PHP 문제 >PHP에서 SMS 확인을 구현하는 방법

PHP에서 SMS 확인을 구현하는 방법

藏色散人
藏色散人원래의
2022-11-07 09:34:102317검색

PHP에서 SMS 확인을 구현하는 방법: 1. 계정을 등록하고 인터페이스를 다운로드합니다. 2. 매개변수 변수를 구성합니다. 3. SMS를 테스트하기 위해 인터페이스를 호출합니다. 4. "if(strtolower($_SESSION["captcha); "]) == strtolower ($captcha)){echo $_POST["captcha"]."...";$_SESSION["captcha"] = "";if(...)..." 그냥 구현하세요. 확인.

PHP에서 SMS 확인을 구현하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.

PHP에서 SMS 확인을 구현하는 방법은 무엇입니까?

php는 휴대전화 SMS 인증코드의 전 과정을 구현합니다

일과 생활에서 다양한 웹사이트와 APP를 사용할 때, 등록, 결제, 비밀번호 변경 등을 할 때에도 SMS 인증을 받아야 합니다. 그럼 인증코드는 어떻게 전송되나요? 다음으로 Huaxing Cloud SMS를 예로 들어(주로 구현 아이디어를 이해하기 위한 것임) PHP에서 SMS 인증 코드를 보내는 구현 프로세스를 자세히 소개합니다(스와이프 방지 SMS 인증 코드 메커니즘을 구현하고 암호화된 통신).

1. 구현 아이디어

PHP에서 SMS 확인을 구현하는 방법

2. 구현 프로세스

1. 계정 등록

Huaxing Cloud SMS 계정을 등록하고 기본 정보를 입력하면 전담 담당자가 계정 개설을 위해 연락을 드릴 것입니다. 테스트를 위해 소량의 SMS 메시지가 미리 전송됩니다.

2. 인터페이스 다운로드

제품 페이지에 들어가려면 해당 PHP 보안 클라우드 SMS 인터페이스 및 HTTPS 버전 클라우드 SMS 인터페이스 문서를 선택하여 다운로드하세요.

PHP에서 SMS 확인을 구현하는 방법

3 . 구성 매개변수 변수

demo_https.php 파일을 구성합니다.

(1) 데모_https.php 파일의 컬포스트(curlPost), 컬겟(curlGet) 및 sendSMS 메소드를 프로젝트의 해당 위치에 복사합니다. 동시에 getBalance 메소드를 사용합니다.

(2) sendSMS 메소드의 등록 코드($reg_code), 비밀번호($reg_pw), 서명($signature), 문자 메시지 내용($content)을 자신의 정보로 수정합니다. 참고: 문자 메시지의 내용을 보고해야 할 수도 있습니다.

(3) 코드의 댓글 규칙에 따라 대상 휴대폰 번호와 내용을 수정하고, 문자 메시지를 보내야 하는 곳에 sendSMS 메서드를 호출하면 됩니다.

4. SMS 보고 템플릿

화싱 고객 서비스 직원에게 보낼 내용을 제출하면 블랙리스트, 민감한 단어 등을 확인하여 보고 작업을 완료합니다.

5. SMS 테스트를 위한 인터페이스 호출

일련의 사전 준비를 완료하고 PHP 클라우드 SMS 인터페이스를 호출하여 실제로 SMS 전송 상황을 테스트합니다.

3. 코드 실행

클라우드 SMS 인터페이스 문서의 HTTPS 버전을 확인하여 인터페이스 주소, 매개변수 설명 및 예시를 확인하세요. 아래 코드를 호출하여 매개변수를 구성한 후 이 메서드를 호출하여 SMS 메시지 전송을 테스트하고 인쇄하세요. 반환 값은 문서에서 볼 수 있습니다.

image_captcha.php는 이미지 확인 코드를 생성합니다(스와이프 방지 메커니즘).

<?php
/**
* 字母+数字的验证码生成
*/
// 开启session
session_start();
//1.创建黑色画布
$image = imagecreatetruecolor(100, 30);
//2.为画布定义(背景)颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//3.填充颜色
imagefill($image, 0, 0, $bgcolor);
// 4.设置验证码内容
//4.1 定义验证码的内容
$content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
//4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
$captcha = "";
for ($i = 0; $i < 4; $i++) {
// 字体大小
$fontsize = 10;
// 字体颜色
$fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
// 设置字体内容
$fontcontent = substr($content, mt_rand(0, strlen($content)), 1);
$captcha .= $fontcontent;
// 显示的坐标
$x = ($i * 100 / 4) + mt_rand(5, 10);
$y = mt_rand(5, 10);
// 填充内容到画布中
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION["captcha"] = $captcha;
//4.3 设置背景干扰元素
for ($$i = 0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor);
}
//4.4 设置干扰线
for ($i = 0; $i < 3; $i++) {
$linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor);
}
//5.向浏览器输出图片头信息
header(&#39;content-type:image/png&#39;);
//6.输出图片到浏览器
imagepng($image);
//7.销毁图片
//imagedestroy($image); 
index.html前端代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>短信验证码</title>
</head>
<body>
<form action="./sendsms.php" method="post">
<div>
手机号:<input id="phone" type="text" name="phone" value="" />
</div>
<div>验证码: <input type="text" name="captcha" placeholder="请输入图片中的验证码">
<img  src="image_captcha.php" onclick="this.src=&#39;image_captcha.php?&#39;+new Date().getTime();"    style="max-width:90%"  style="max-width:90%" alt="PHP에서 SMS 확인을 구현하는 방법" ><br/></div>
<div> <input type="submit" value="验证"></div>
</form>
</body>
</html>

sendsms.php 백엔드 실행 코드:

<?php
/**
* 接受用户登陆时提交的验证码
*/
session_start();
//1. 获取到用户提交的验证码、手机号
$phone = $_POST[&#39;phone&#39;];//手机号
$captcha = $_POST["captcha"];
//2. 将session中的验证码和用户提交的验证码进行核对,当成功时提示验证码正确,并销毁之前的session值,不成功则重新提交
if(strtolower($_SESSION["captcha"]) == strtolower($captcha)){
echo $_POST["captcha"]."验证码正确!";
$_SESSION["captcha"] = "";
if(preg_match_all("/^1[34578]\d{9}$/", $phone)) { 
//得到手机号 
$url = &#39;https://www.stongnet.com/sdkhttp/sendsms.aspx&#39;;
$reg_code = &#39;101100-WEB-HUAX-111111&#39;; //华兴软通注册码,请在这里填写您从客服那得到的注册码
$reg_pw = &#39;11111111&#39;; //华兴软通注册码对应的密码,请在这里填写您从客服那得到的密码
$source_add = &#39;&#39;; //子通道号(最长10位,可为空
//$phone = &#39;15891234567&#39;; //手机号码(最多1000个),多个用英文逗号(,)隔开,不可为空
$content = &#39;华兴软通验证码:&#39; . range(1000,9999);; //短信内容(含有中文,特殊符号等非ASCII码的字符,用户必须保证其为UTF-8编码格式)
$param_arry = array();
$param_arry[&#39;reg&#39;] = $reg_code;
$param_arry[&#39;pwd&#39;] = $reg_pw;
$param_arry[&#39;sourceadd&#39;] = $source_add;
$param_arry[&#39;phone&#39;] = $phone;
$param_arry[&#39;content&#39;] = $content;
$ca_info = dirname(__FILE__) . &#39;/cacert.pem&#39;; //根证书文件路径,相对路径和绝对路径均可,推荐使用绝对路径;demo里文件和源码放在一起了,为了安全证书文件最好不要和应用代码放在一起
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($param_array));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); //验证交换证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //检查SSL证书公用名是否存在,并且是否与提供的主机名匹配
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); //设置实现协议为TLS1.0版本
curl_setopt($ch, CURLOPT_CAINFO, $ca_info); 
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if(!empty($error)){ //curl有错误
echo $error;
}else{ //输出请求结果
echo $data;
}
}else{echo "请输入正确手机号";}
}else{
echo "验证码提交不正确!";
}

예를 따라 사용하세요. 인터페이스에 따라 휴대폰 번호 SMS 확인 코드 전송을 테스트하기 위해 고객 서비스에서 제공한 등록 번호 및 비밀번호 반환 코드 및 문서는 귀하의 요구 사항에 따라 추가로 개발될 수 있습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 SMS 확인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.