PHP 手机短信发送验证码

点击链接加入群【php/web 学习课堂】:https://jq.qq.com/?_wv=1027&k=5645xiw

欢迎大家加入,一起讨论学习



本篇设计的知识点有点多,我会分类将,同学们可以选择性的看,当然全学会是最好的。

首先我们要清楚以下要点:

1.短信平台

2.编码模式

3.curl方法

4.接口参数

5.返回值(成功/失败)


我们开始吧:

1.短信平台,有很多,当初同学介绍给我,是“阿里大于”,但由于第一次加入这么大的平台,有点迷,最后的结果是没成功....我找到了另外一些平台,对比了之后,我决定采用 106接口(http://www.106jiekou.com/),我没打广告哟,相信我。我选择的这个平台,价格是没有 阿里大于 优惠的,效率的话,阿里的背景我就不用解释了吧

2.当我们进入106接口官方之后,注册(可以免费试用10条短信),进入个人中心之后,上面有一个“下载接口文档”。我们下载之后,能看到两个文件夹:gbk 和 utf8,两者的区别请参考https://zhidao.baidu.com/question/133119038.html

3.此平台提供了curl方法,我们就选择此方法来实现功能,代码等一切都已写好,只需要我们修改参数,不明白curl的,可以参考:http://www.jb51.net/article/39940.htm

4.参数,不懂参数的同学,请重修一遍,因为这里,你可以不懂任何代码,因为你只需要写出正确的参数,即刻实现功能。他给出了 4个参数:account(帐号)、password(接口密码)、mobile(手机号码)、content(短信内容);还有一个固定的 链接,链接不需要管,是他们平台的接口地址

注:第四个参数(短信内容)不能随意修改,需要参考短信平台提供的“模板”,若要修改成你想要的内容,需要跟平台交流... 人家平台是要赚钱继续运营的,所以给了我们一定限制的,你开通VIP就可以自定义模板,越高权限越大....我真的没打广告,只是我用过,给大家分享经验

5.返回值,当我们填写了参数,运行此代码,就会访问别人的接口地址(他提供的默认链接),成功失败都会返回给我们一个状态吗,是一个数字,我们需要去看他的开发文档,对应他返回的状态吗,给出相应的提示


<?php
header("Content-Type: text/html; charset=utf-8");
function Post($curlPost,$url){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_NOBODY, true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    $return_str = curl_exec($curl);
    curl_close($curl);
    return $return_str;
}

$target = "http://sms.106jiekou.com/utf8/sms.aspx";
//替换成自己的测试账号,参数顺序和wenservice对应
$post_data = "account=账号&password=密码&mobile=手机号码&content=".rawurlencode("您的验证码是:651080565.如需帮助请联系客服");

echo $gets = Post($post_data, $target);

//采用UTF-8编码,要将文件另存为UTF-8格式
//请自己解析$gets字符串并实现自己的逻辑
//100 表示成功,其它的参考文档

?>

以上,参数的意思:

账号、密码,是你在他平台上注册的账号和密码,他需要知道,你是不是他平台的用户,获取了你的账号和密码,就可以去使用属于你的短信套餐;

第三个参数:手机号码,是你要将短信发送给谁的手机号码;

第四个参数:短信内容。上面说过了这个平台的短信模板,是有权限的,我们不能修改,修改的话,就会失败,需要自定义模板,就要充钱成为VIP


复制以上代码,修改前三个参数,可以直接使用,但是需要去平台注册你的账号,可免费试用10条的样子。


这里说一下,有的同学肯定说,这个平台不稳定,不优惠,总之就是不想用他,想用其他平台怎么办?不难,我这里演示的这个过程,你只需要明白,调用别人平台的接口,你就要遵守他的规则,看他的开发者文档,思想基本上都是一样的,只要理清楚了思想,实现起来就不难了。



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现短信发送验证码并设置验证码时效可以按照以下步骤进行: 1. 首先,需要获取用户手机号码和验证码,并在后台进行验证。可以使用 PHP 的正则表达式来验证手机号码格式是否正确。 2. 接下来,可以使用第三方短信服务提供商的 API发送短信验证码。例如,阿里云、腾讯云、百度云等都提供了短信服务 API。 3. 在发送短信验证码时,需要将验证码手机号码存储到数据库中,以便后续验证。 4. 设置验证码时效,可以在存储验证码时记录验证码的生成时间,并在验证时判断当前时间是否超过验证码的有效期。可以使用 PHP 的时间函数来实现。 下面是一个简单的示例代码: ```php // 用户手机号码和验证码 $mobile = $_POST['mobile']; $code = mt_rand(100000, 999999); // 发送短信验证码 $api_key = 'your_api_key'; $api_secret = 'your_api_secret'; $api_url = 'https://api.example.com/sms/send'; $data = array( 'mobile' => $mobile, 'code' => $code, ); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => json_encode($data), ), ); $context = stream_context_create($options); $result = file_get_contents($api_url, false, $context); // 存储验证码及其生成时间 $expires_at = time() + 600; // 设置验证码有效期为10分钟 $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $stmt = $db->prepare('INSERT INTO verification_codes (mobile, code, expires_at) VALUES (?, ?, ?)'); $stmt->execute(array($mobile, $code, $expires_at)); echo '验证码发送,请注意查收。'; ``` 在验证验证码时,可以使用如下代码: ```php $mobile = $_POST['mobile']; $code = $_POST['code']; $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $stmt = $db->prepare('SELECT * FROM verification_codes WHERE mobile = ? AND code = ? AND expires_at > ?'); $stmt->execute(array($mobile, $code, time())); $row = $stmt->fetch(); if ($row) { // 验证码正确,可以进行下一步操作 } else { // 验证码错误或已过期 } ``` 注意,在实际生产环境中,需要对代码进行安全性和可靠性的考虑,例如,防止 XSS、CSRF 攻击,以及保护数据库密码等敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值