热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php如何实现发送验证码的功能

这篇文章给大家分享的是有关php如何实现发送验证码的功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看

这篇文章给大家分享的是有关php如何实现发送验证码的功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

php实现发送验证码功能的方法:1、创建好HTML和js文件;2、创建“Msm.php”文件,内容为“public function sendmsm(){...}”;3、通过CURL发送HTTP请求即可。

本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

php怎么实现发送验证码的功能?

PHP实现发送短信验证码:

一、html代码

  • 手机号码:
  • 验证码: 获取验证码
  • 二、js代码

    /**
     * 发送验证码
     * @return {[type]} [description]
     */
    function get_svg() {
    var phone = $("input[name='telephone']").val();
     
    if (!(/^1[34578]\d{9}$/.test(phone))) {
    layer.msg("请正确输入手机号!");
    return false;
    }
     
    var url = "/msm/sendmsm/phone/" + phone;
    $.get(url, function (resdata) {
    console.log(resdata);
    layer.msg(resdata.data);
    if (resdata.type == 1) {
    $(".code_btn").attr('onclick', "return false;");
    listion_sendmsm();
    }
    })
    return false;
    }
     
    function listion_sendmsm() {
    var time = 61;
    setTime = setInterval(function () {
    if (time <= 1) {
    clearInterval(setTime);
    $(".code_btn").text("再发一次");
    $(".code_btn").attr(&#39;onclick&#39;, "return get_svg();");
    return;
    }
    time--;
    $(".code_btn").text(time + "s");
     
    }, 1000);
    }

    三、PHP代码实现

    Msm.php

    /**
     * 发送短信
     * @author 
     * @return [type] [description]
     */
    public function sendmsm()
    {
    $phone = input(&#39;phone&#39;);
     
    if(!$phone){
    return WPreturn(&#39;请输入手机号码!&#39;,-1);
    }
     
    $code = rand(1000,9999);
    $_SESSION[&#39;code&#39;] = $code;
    $res = sendmessage($code ,$phone);
    if($res){
    return WPreturn(&#39;发送成功&#39;,1);
    }else{
    return WPreturn(&#39;发送验证码失败!&#39;,-1);
    }
    }
     
    /* *
    * 类名:ChuanglanSmsApi
    * 功能:创蓝短信接口请求类
    * 详细:构造创蓝短信接口请求,获取远程HTTP数据
    * 说明:
    * 以下代码只是样例代码,使用第三方创蓝发送短信接口。
    * 该代码仅供学习,只是提供一个参考。
    */
    public function sendmessage($code, $telephone)
    {
    $conf = getconf(&#39;&#39;);
     
    if(!$code){
    return false;
    }
     
    if(!$telephone){
    return false;
    }
    $content = "您的验证码是:{$code},如非本人操作,请忽略此短信。";
    //创蓝接口参数
    $postArr = array (
    &#39;account&#39;  =>  $conf[&#39;msm_appkey&#39;],
    &#39;password&#39; => $conf[&#39;msm_secretkey&#39;],
    &#39;msg&#39; => urlencode($content),
    &#39;phone&#39; => $telephone,
    &#39;report&#39; => true
    );
     
    $result = $this->curlPost("http://smssh2.253.com/msg/send/json", $postArr);
    $json = json_decode($result);
    if($json -> code != 0){
    return false;
    }else{
    return true;
    }
    }
     
    /**
     * 通过CURL发送HTTP请求
     * @param string $url  //请求URL
     * @param array $postFields //请求参数 
     * @return mixed
     *  
     */
    private function curlPost($url,$postFields){
    $postFields = json_encode($postFields);
    $ch = curl_init ();
    curl_setopt( $ch, CURLOPT_URL, $url ); 
    curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
    &#39;Content-Type: application/json; charset=utf-8&#39;   //json版本需要填写  Content-Type: application/json;
    )
    );
    curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_POST, 1 );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $postFields);
    curl_setopt( $ch, CURLOPT_TIMEOUT,60); 
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0);
    $ret = curl_exec ( $ch );
    if (false == $ret) {
    $result = curl_error(  $ch);
    } else {
    $rsp = curl_getinfo( $ch, CURLINFO_HTTP_CODE);
    if (200 != $rsp) {
    $result = "请求状态 ". $rsp . " " . curl_error($ch);
    } else {
    $result = $ret;
    }
    }
    curl_close ( $ch );
    return $result;
    }


    感谢各位的阅读!关于“php如何实现发送验证码的功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


    推荐阅读
    • EPPlus绘制刻度线的方法及示例代码
      本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
    • PHP图片截取方法及应用实例
      本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
    • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
    • 模板引擎StringTemplate的使用方法和特点
      本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
    • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
    • CSS3选择器的使用方法详解,提高Web开发效率和精准度
      本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
    • android listview OnItemClickListener失效原因
      最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
    • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
    • Java容器中的compareto方法排序原理解析
      本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
    • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
    • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
    • Hibernate延迟加载深入分析-集合属性的延迟加载策略
      本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
    • PHP中的curl_multi系列函数可以实现同时请求多个URL来实现并发,而不是像普通curl函数那样请求后会阻塞,直到结果返回才进行下一个请求。因此在批量请求URL时可通过curl_multi系列函数提升程序的运行效率。curl普通请求$startT ... [详细]
    • ZABBIX 3.0 配置监控NGINX性能【OK】
      1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
    • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
      最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
    author-avatar
    宝林
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有