谁能帮我写一个PHP的短信验证例程,

作者&投稿:月竹 (若有异议请与网页底部的电邮联系)
如何实现短信验证功能,我是php程序~

代码就不发了,给你讲思路,先随机生成一个短信验证码,然后存入session中。然后通过短信网关发送给对方。最后匹配输入的和session中的是否一区就行了。

在下例中,我们是使用$PHP_AUTH_USER和$PHP_AUTH_PW这两个变量来验证进入者是否合法并允许进入。在本例中被允许登录的用户名称和密码对分别为tnc和nature:
<?
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel buttonn";
exit;
}
else
{
if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") )
{
// 如果是错误的用户名称/密码对,强制再验证
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid.";
exit;
}
else
{
echo "Welcome tnc!";
}
?>

  事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。

<?php

/**

 *

 * User: shikiliu

 * Date: 13-7-11

 */

class TelephoneCheck

{



    /**

     * 取得某个用户某次活动的手机验证码

     * @param $uin 用户ID 小于10000系统保留

     * @param $actId 活动ID  小于1000系统保留

     * @param $telephone 用户手机号

     * @return bool|int 4位数的验证码

     */

    public function getTelephoneCode($uin, $actId, $telephone)

    {


        if ($uin < 10000 || $actId < 1000 || empty($telephone)) {

            return false;

        }


        $time = time();


        $timeFeature = hexdec(substr(md5($time), 0, 3)) & 0x1F1;


        $telephoneFeature = hexdec(substr(md5($telephone), 8, 4));


        $actIdFeature = hexdec(substr(md5($actId), 16, 4));


        $uinFeature = hexdec(substr(md5($uin), 24, 4));


        $sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;


        $sumFeature = $sumFeature % 10000;


        if ($sumFeature < 1000) {

            $sumFeature = 5145;

        }


        $result = $sumFeature | $timeFeature;


        return $result;

    }



    /**

     * 验证用户的手机验证码

     * @param $uin 用户ID 小于10000系统保留

     * @param $actId 活动ID  小于1000系统保留

     * @param $telephone 用户手机号

     * @param $code getTelephoneCode生成的验证码

     * @return bool 是否正确

     */

    public function  checkTelephoneCode($uin, $actId, $telephone, $code)

    {


        if ($uin < 10000 || $actId < 1000 || empty($telephone) || empty($code)) {

            return false;

        }


        $telephoneFeature = hexdec(substr(md5($telephone), 8, 4));


        $actIdFeature = hexdec(substr(md5($actId), 16, 4));


        $uinFeature = hexdec(substr(md5($uin), 24, 4));


        $sumFeature = $telephoneFeature + $actIdFeature + $uinFeature;


        $sumFeature = $sumFeature % 10000;


        if ($sumFeature < 1000) {

            $sumFeature = 5145;

        }


        $sumFeature = $sumFeature & 0xE0E;


        $code = $code & 0xE0E;


        if ($sumFeature == $code) {

            return true;

        }

        return false;

    }

}



$actId = 10001;

$telephone = 13797025562;

$uin = 514540767;



$telCode = new TelephoneCheck();



$code = $telCode->getTelephoneCode($uin, $actId, $telephone);


var_dump($code);


var_dump($telCode->checkTelephoneCode($uin, $actId, $telephone, $code));


var_dump($telCode->checkTelephoneCode($uin, $actId, $telephone, $code+10));



我把刚给朋友修改的一段发你吧,不过,不是你的那个,朋友用的是56短信网的,我测试了,速度还是非常不错的,你要用的话,修改一下调用地址就成,代码如下:

<?php
//56短信网php短信接示例(http://www.56dxw.com)
session_start();
error_reporting(0);
header("content-type:text ml;charset=gb2312");
//帐号配置文件
$comid= "3365"; //企业ID
$username= "test106"; //用户名
$userpwd= "test106"; //密码
$smsnumber= "10690"; //所用平台


function randomkeys($length)
 {
   $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';    //字符池,可任意修改
   for($i=0;$i<$length;$i++)
 {
       $key .= $pattern{mt_rand(0,35)};    //生成php随机数
   }
   return $key;
}


function rstr($str){
  

 print($str);
exit();
}

function sendnote($mobtel,$msg){
 global $username,$userpwd,$smsnumber,$comid;
 $url = "http://jiekou.56dxw.com/sms/HttpInterface.aspx?comid=$comid&username=$username&userpwd=$userpwd&handtel=$mobtel&sendcontent=$msg&sendtime=&smsnumber=$smsnumber";
 $string = file_get_contents($url);
 return  rstr($string);
}
//$_SESSION["code"]="12365";
$_SESSION["code"]=randomkeys(6);
$handtel =$_POST["Tel"];
$msg="您的手机验证码是:".$_SESSION["code"]."【56短信网】";//【56短信网】 可以换成自己的签名,签名一般用公司或网站的简称
//$msg="您的手机验证码是:".$_SESSION["code"];
!$handtel && die('手机号必填');
!$msg && die('发生内容必填');
//echo sendnote($_POST["Tel"],urlencode(mb_convert_encoding($msg, 'gbk' ,'utf-8')));//如果你网站或软件的格式是utf-8的,需要对发送的内容转成gbk的
//$fromuser=iconv("UTF-8","gb2312",$username);
//echo sendnote($_POST["Tel"],urlencode(iconv("UTF-8","gbk",$msg)));//如果你网站或软件的格式是utf-8的,需要对发送的内容转成gbk的
echo sendnote($_POST["Tel"],urlencode($msg));//如果网站本身是gbk的编码,就不用转了
?>



如何用php写一个最简单的程序,比如向浏览器输出一句话,服务器已搭建好...
%f",12,12.3);四、 print_r(); 输出数组、对象等复合数据类型。例如:print_r($array);五、 var_dump(); 可以判断一个变量的类型与长度,并输出变量的数值。例如:var_dump('helloworld!');如果还有更多php问题不懂,可以去后盾网论坛求助专区,可以帮你解答更多问题,我的回答还不错吧!

用PHP创建一个新的文件怎么创建?
1、首先声明一个本地没有的文件。2、然后查看wampserver 本地环境。是没有这个文件的。3、紧接着使用 file_put_contents()来创建这个文件,并写上这个文件存贮。4、查看wampserver 本地环境。出现了这个文件。5、打开这个文件,上面的话就是刚才file_put_contents() 创建的新文件。

php封装一个用户类,里面有登录注册方法,这个要怎么写
\/ 用户类 \/ class User{ public $username;\/\/用户名 public $password;\/\/密码 \/ 登录方法 \/ public function login(){ if(你登录判断条件,一般是用户名和密码去匹配数据库,密码要MD5加密){ return true;}else{ return false;} } \/ 注册方法 \/ public function register(){ username = $_...

如何在html文件里写php程序?
可以使用<?php ?>将php语句包含,然后将html格式改为php。1、新建html文档并使用html模板生成必要元素,然后在body标签中添加一段文字:2、在body标签中输入“<?php ?>”,然后可以在这段代码中间编写php代码,编写完成之后将文件进行保存:3、用鼠标将保存后的文件选中,按下键盘上的“F2”键对文件...

关于php简易留言板的一小段代码..
1、$db=new mysqli('localhost','root','123','dlw');最好写成 mysql_connect('localhost','root','123');mysql_slect_db('dlw');2、 $sql="insert into gustbook values(name,time,words)";sql=$sql.$name;sql=$sql."',now(),'".$note."')";可以写一个sql语句就可以了,不用...

如何做一个简单PHP网站
你试试看使用模板吧,所有的界面设计都是针对一个静态网页进行,这个静态网页里面所有你需要的内容都使用PHP的变量(或者你自己规定的其它特殊格式)来代表,设计布局的时候都是对这么静态网页进行操作。而网站并不直接向外显示网页,网页的所有内容有PHP程序从数据库里面获取,对网页模板里面的变量进行替换后...

php做一个简单练习 输入数字 取绝对值 输入数字不显示结果
你输入框的name和后台post接收的有什么区别你自己看看。其次是html代码要写规范,form标签的action和name值如果没有必要就不用写,而且你写的html代码已经影响到后台接收数据了。你改一下input框的name值为num,将form标签上面只留下method="post"再接着运行就可以看到效果了。

php 用数组写一个课程表 用foreach 来历遍数组,要能够控制输出,当用 ...
感觉你这个不用foreach也可以解决,给你个示例如下:<?php \/\/定义课程数组,键名为周一至周五,二维的数组为当天的课程 classArr = array('1'=> array('语文','数学'),'2'=> array(‘数学','语文'),'3'=>array('XXX','XXX'),'4'=>array('XXX','XXX'),'5'=>array('XXX','XXX...

用php写一程序,判断某一年是否为闰年。(能被4整除,但不能被100整除。能...
<?php time = "2020";function chaxun($time){ if ($time%4==0 && $time%100>0 && $time%400==0){ echo "OK";} else { echo "NO";} } echo chaxun($time);?> 不知道为啥 还得400 能整除

php写代码软件(php编程app)
开发PHP程序时,我们一般都会在本地电脑上安装一个PHP的环境,然后,再在这个PHP环境下开发PHP程序,这样的好处,可以随时编写程序,随时做到很好的测试。在windows电脑上,PHP环境的软件还是很多的,我通常使用的是wampserver这个PHP集成环境软件。wampserver这个软件,集成了PHP、apache服务器、mysql数据库,这些都是我们开发PHP程...

琼中黎族苗族自治县18770649524: PHP短信验证代码 -
单丽木香: 存到$_SESSION或数据库都可以的,如$_SESSION['code'] = "xxxxxx"; 设置时间也可以用$_SESSION的,保存发送验证码的时间,然后用提交的时候再获取当前时间判断是否是指定时间内(如你所说的5分钟)就可以了,如果超过了指定时间提示过期了,否则..你先怎样就怎样了..$_SESSION['time'] = time();当提交的时候就判断if(time()-intval($_SESSION['time'])>(5*60)){echo "提示过期了";}else{echo "YOUR CODE HERE";}

琼中黎族苗族自治县18770649524: php怎么实现注册验证手机验证码 -
单丽木香: 手机注册验证逻辑是这样的: 首先要找短信服务商如:梦网、云信使、互亿无线等等申请短信发送接口. 网站实现流程如下:第一步:用户注册时输入手机号,网站首先要通过JS或者ajax+php验证这个号码是不是正确的手机号. 第二步:用户点击发送手机验证码,通过ajax把手机号传到php,这时php生成一个随机的验证码保存在session中,然后通过短信接口把这个验证码发送到这个手机号中. 第三步:用户输入手机收到的验证码注册.网站用session中的验证码和用户输入的验证码比较.

琼中黎族苗族自治县18770649524: php怎么编写手机短信验证码功能 -
单丽木香: 以前在copy远标做过你的应用应该是这样吧,用户输入手机号码,点击发送短信,用户收到验证码,输入对应的验证码 判断是否正确.需要: 申请一个短信接口,就是点击发送验证码的时候,提交到接口给该号码下发验证码.技术方面的实现: 1、点击获取验证码 2、程序ajax post提交到短信接口 3、短信接口服务商 接口判断用zd户和口令,正确后,下发短信给该号码. 4、用户输入号码,程序判断验证码是否一致.

琼中黎族苗族自治县18770649524: 怎么用php实现手机注册和手机验证 -
单丽木香: 简单的说,手机验证和手机注册是差不多的.手机验证:首先你在php代码中生成一串字符串,可以保存在session里面,然后在把这串字符串通过短信服务(这一步需要去买,找代理,前提你获得了用户的正确手机号码)发给用户,然后提供一个输入框给用户输入收到的验证码在和session中的比对.手机注册:前面的部分都是和上面一样,多出来的步骤就是验证成功后把信息存入用户数据库而已,最多在存入之前让用户再输入一点用户其他信息.以上验证码可以扩展一下,比如有效时间,直接在session中设置有效时间,过期作废的限制就可以了.

琼中黎族苗族自治县18770649524: php获取手机号与验证码往手机上发短信. -
单丽木香: 你流程搞错了.应该是这样子:PHP生成验证码,存进SESSION.将验证码POST到移动API,用户收到后,输入验证码,和SESSION比对.

琼中黎族苗族自治县18770649524: php怎么发送短信验证码 -
单丽木香: 需要有一个短信发送的接口,然后根据它提供的接口api来编写.

琼中黎族苗族自治县18770649524: 求一个PHP格式的验证码代码~谢谢~ -
单丽木香:session_start(); function random($len) {if($i==0) { $str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $s=""; for($i=0;$i$s.=$str[rand(0,35)]; }} return strtoupper($s); } $code=random(4); //随机生成的字符串 $width = 50; //验证码...

琼中黎族苗族自治县18770649524: PHP怎么连接数据库短信接口 -
单丽木香: 你已经有发短信的接口了,只需要再做这个表单就行了,手机号和验证码一起提交验证就行了呀.原理是这样:你的程序根据手机号取得一个号码,然后发往手机号,同时,将此手机号和验证码一同...

琼中黎族苗族自治县18770649524: php实现验证码,能给具体的代码吗 在这谢谢过各位高手了 -
单丽木香: index.php:<br><?php<br>/* index.php start*/<br>if(!empty($_POST)) {<br> session_start();<br> if($_POST['seccode'] == $_SESSION['seccode']) {<br> echo '<script>alert("验证成功")<&#47;script>';<br> } else {<br> echo '<script>alert("验...

琼中黎族苗族自治县18770649524: 怎样用PHP制作验证码 -
单丽木香: //验证码类 class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子private $code;//验证码private $codelen = 4;//验证码长度private $width = 90;//宽度private $height = 40;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网