Bagaimana untuk melaksanakan pengesahan SMS dalam php

藏色散人
Lepaskan: 2023-03-17 11:56:01
asal
2292 orang telah melayarinya

Cara melaksanakan pengesahan SMS dalam PHP: 1. Daftar akaun dan muat turun antara muka 2. Konfigurasikan pembolehubah parameter; _SESSION["captcha"] ) == strtolower($captcha)){echo $_POST["captcha"]."...";$_SESSION["captcha"] = "";if(...).. ." Cuma laksanakan pengesahan .

Bagaimana untuk melaksanakan pengesahan SMS dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Bagaimana untuk melaksanakan pengesahan SMS dalam PHP?

PHP melaksanakan keseluruhan proses kod pengesahan SMS

Dalam kerja dan kehidupan kita, apabila menggunakan pelbagai tapak web dan APP, sama ada mendaftar, membayar atau menukar kata laluan, dsb. Semua orang diperlukan untuk mendapatkan kod pengesahan SMS untuk pengesahan, jadi bagaimana kod pengesahan dihantar? Seterusnya, mengambil Huaxing Cloud SMS sebagai contoh (hanya sebagai contoh, terutamanya untuk memahami idea pelaksanaan), saya akan memperkenalkan secara terperinci proses pelaksanaan penghantaran kod pengesahan SMS dalam PHP (sambil merealisasikan mekanisme kod pengesahan SMS anti-swipe dan komunikasi yang disulitkan).

1. Idea pelaksanaan

Bagaimana untuk melaksanakan pengesahan SMS dalam php

Proses pelaksanaan

1 akaun , isikan maklumat asas, dan orang yang berdedikasi akan menghubungi anda untuk membuka akaun, dan sebilangan kecil mesej teks akan dihantar terlebih dahulu untuk ujian.

2. Muat turun antara muka

Klik "Pusat Produk" untuk memasuki halaman produk, pilih antara muka SMS awan selamat PHP yang sepadan dan muat turun dokumen antara muka SMS awan versi HTTPS adalah seperti berikut :

Bagaimana untuk melaksanakan pengesahan SMS dalam php3 Pembolehubah parameter konfigurasi

Konfigurasikan fail demo_https.php:

(1) Tukar curlPost, curlGet, Copy the tiga kaedah sendSMS ke lokasi yang sepadan dalam projek Jika anda perlu mendapatkan baki, salin kaedah getBalance pada masa yang sama.

(2) Ubah suai kod pendaftaran ($reg_code), kata laluan ($reg_pw), tandatangan ($signature), dan kandungan mesej teks ($kandungan) dalam kaedah sendSMS kepada maklumat anda sendiri. Nota: Kandungan mesej teks mungkin perlu dilaporkan.

(3) Ubah suai nombor telefon mudah alih sasaran dan kandungan mengikut peraturan ulasan dalam kod, dan hanya hubungi kaedah sendSMS di mana anda perlu menghantar mesej teks.

4. Templat SMS Laporan

Serahkan kandungan untuk dihantar kepada kakitangan perkhidmatan pelanggan Huaxing, yang akan menyemak senarai hitam, perkataan sensitif, dll. untuk menyelesaikan kerja pelaporan.

5. Panggil antara muka untuk menguji SMS

Lengkapkan satu siri persediaan awal dan benar-benar menguji situasi penghantaran SMS dengan menghubungi antara muka SMS awan php.

3 Jalankan kod

Semak versi HTTPS dokumen antara muka SMS awan untuk melihat alamat antara muka, perihalan parameter dan contoh kaedah untuk menguji penghantaran SMS dan mencetak nilai pulangan, anda boleh melihat kod ralat dalam dokumen

image_captcha.php menjana kod pengesahan imej (mekanisme anti-memberus)

sendsms. php back-end running code:
<?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="Bagaimana untuk melaksanakan pengesahan SMS dalam php" ><br/></div>
<div> <input type="submit" value="验证"></div>
</form>
</body>
</html>
Salin selepas log masuk

Ikut contoh, anda boleh menggunakan nombor pendaftaran dan kata laluan yang disediakan oleh perkhidmatan pelanggan untuk menguji menghantar kod pengesahan SMS ke nombor telefon mudah alih anda, dan melakukan pembangunan berfungsi selanjutnya mengikut keperluan anda sendiri berdasarkan kod pulangan antara muka dan dokumentasi.
<?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 "验证码提交不正确!";
}
Salin selepas log masuk

Pembelajaran yang disyorkan: "

Tutorial Video PHP

"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan SMS dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan