Maison >développement back-end >Problème PHP >Comment implémenter la vérification SMS en php

Comment implémenter la vérification SMS en php

藏色散人
藏色散人original
2022-11-07 09:34:102340parcourir

Comment implémenter la vérification SMS en PHP : 1. Créez un compte et téléchargez l'interface ; 2. Configurez les variables de paramètres ; 3. Appelez l'interface pour tester SMS ; 4. Passez le code "if(strtolower($_SESSION["captcha) "]) == strtolower ($captcha)){echo $_POST["captcha"]."...";$_SESSION["captcha"] = "";if(...)..." Il suffit d'implémenter vérification.

Comment implémenter la vérification SMS en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

Comment implémenter la vérification SMS en php ?

php réalise l'ensemble du processus de vérification du code SMS du téléphone portable

Dans notre travail et notre vie, lorsque nous utilisons divers sites Web et applications, que ce soit lors de l'inscription, du paiement ou de la modification des mots de passe, etc., nous devons obtenir une vérification SMS codes de vérification. Alors, comment le code de vérification est-il envoyé ? Ensuite, en prenant Huaxing Cloud SMS comme exemple (uniquement à titre d'exemple, principalement pour comprendre les idées de mise en œuvre), je présenterai en détail le processus de mise en œuvre de l'envoi de codes de vérification SMS en PHP (tout en réalisant le mécanisme de code de vérification SMS anti-swiping et communication cryptée).

1. Idée de mise en œuvre

Comment implémenter la vérification SMS en php

2. Processus de mise en œuvre

1. Créez un compte

Inscrivez-vous à un compte SMS Huaxing Cloud, remplissez les informations de base, et une personne dédiée vous contactera pour ouvrir un compte, et un petit nombre de messages SMS seront envoyés à l'avance pour tests.

2. Interface de téléchargement

Cliquez sur "Centre produit" pour accéder à la page du produit, sélectionnez l'interface SMS cloud sécurisée PHP correspondante et les documents d'interface SMS cloud version HTTPS à télécharger :

Comment implémenter la vérification SMS en php

3 ; .Variables des paramètres de configuration

Configurez le fichier demo_https.php :

(1) Copiez les méthodes curlPost, curlGet et sendSMS dans le fichier demo_https.php aux emplacements correspondants dans le projet. Si vous avez besoin d'obtenir le solde, copiez. la méthode getBalance en même temps.

(2) Modifiez le code d'enregistrement ($reg_code), le mot de passe ($reg_pw), la signature ($signature) et le contenu du message texte ($content) dans la méthode sendSMS avec vos propres informations. Remarque : Il peut être nécessaire de signaler le contenu des messages texte.

(3) Modifiez le numéro de téléphone mobile cible et le contenu conformément aux règles de commentaire dans le code, et appelez simplement la méthode sendSMS où vous devez envoyer des messages texte.

4. Modèle de rapport SMS

Envoyez le contenu à envoyer au personnel du service client de Huaxing, qui vérifiera les listes noires, les mots sensibles, etc. pour terminer le travail de rapport.

5. Appelez l'interface pour tester les SMS

Effectuez une série de préparatifs préliminaires et testez réellement la situation d'envoi de SMS en appelant l'interface SMS du cloud php.

3. Exécutez le code

Vérifiez la version HTTPS du document d'interface SMS cloud pour afficher l'adresse de l'interface, la description des paramètres et des exemples. Après avoir appelé le code ci-dessous pour configurer les paramètres, appelez cette méthode pour tester l'envoi de messages SMS et imprimez. la valeur de retour. Vous pouvez vérifier le code d'erreur dans le document.

image_captcha.php génère un code de vérification d'image (mécanisme anti-swipe)

<?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="Comment implémenter la vérification SMS en php" ><br/></div>
<div> <input type="submit" value="验证"></div>
</form>
</body>
</html>

sendsms.php code d'exécution back-end :

<?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 "验证码提交不正确!";
}

Suivez l'exemple pour utiliser le numéro d'enregistrement et mot de passe fournis par le service client pour tester l'envoi du code de vérification SMS du numéro de téléphone portable, selon l'interface. Les codes de retour et les documents peuvent être développés davantage selon vos propres besoins.

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn