现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性?.
第第一段:实现php手机短信验证功能的基本思路
①.、要找到短信服务提供商,接入短信服务
第二段:手机号码短信验证前台页面效果实现
html xmlns
head
title/title
script type="text/javascript"
/*-------------------------------------------*/
var InterValObj; //timer变量,控制时间
var curCount;//当前剩余秒数
var code = ""; //验证码
function sendMessage() {
curCount = count;
var dealType; //验证方式
tel = $('#tel').val();
if(tel!=''){
//验证手机有效性
if(!myreg.test($('#tel').val()))
{
alert('请输入有效的手机号码!');
return false;
}
//产生验证码
for (var i = 0; i codeLength; i◆◆) {
//设置button效果,开始计时
$("#btnSendCode").attr("disabled", "true");
$("#btnSendCode").val("请在" ◆ curCount ◆ "秒内输入验证码");
InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
//向后台发送处理数据
$.ajax({
type: "POST", //用POST方式传输
dataType: "text", //数据格式:JSON
url: 'yanzhengma.php', //目标地址(根据实际地址)
data: "tel=" ◆ tel ◆ "code=" ◆ code,
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (msg){ }
});
}else{
alert('请填写手机号码');
//timer处理函数
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);//停止计时器
$("#btnSendCode").removeAttr("disabled");//启用按钮
$("#btnSendCode").val("重新发送验证码");
code = ""; //清除验证码.如果不清除,过时间后,输入收到的验证码依然有效
else {
curCount--;
/script
/head
body
input name="tel" id=tel type="text" /
input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" //p
/body
/html
第第三段:调用短信服务器短信接口
整理的页面是yanzhengma.php(具体根据服务商提供信息)
php //提交短信
$post_data = array();
$post_data['userid'] =?短信服务商提供ID;
$post_data['account'] = '短信服务商提供用户名';
$post_data['password'] = '短信服务商提供密码';
// Session保存路径
$sessSavePath = dirname(__FILE__)."/../data/sessions/";
if(is_writeable($sessSavePath) is_readable($sessSavePath)){
session_save_path($sessSavePath);
session_register('mobliecode');
$_SESSION['mobilecode'] = $_POST["code"];
$content='短信验证码:'.$_POST["code"].'【短信验证】';
$post_data['mobile'] = $_POST["tel"];
$post_data['sendtime'] = ''; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值
$url='';
$o='';
foreach ($post_data as $k=$v)
$o.="$k=".$v.'';
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句.
$result = curl_exec($ch);
第四:提交表单信息时对短信验证码验证
//手机验证码开始
session_start();
$svalitel = $_SESSION['mobilecode'];
$vdcodetel = empty($vdcodetel) ? '' : strtolower(trim($vdcodetel));
if(strtolower($vdcodetel)!=$svalitel || $svalitel=='')
ResetVdValue();
//echo "Pageviews=".$vdcodetel;
ShowMsg("手机验证码错误!", '-1');
exit();
①?新建code.php验证码生成文件
php
//生成验证码图片
Header("Content-type: image/PNG");
imagefill($im,0,0,$back); //背景
srand((double)microtime()*1000000);
$vcodes.=$authnum;
for($i=0;$i100;$i◆◆) //加入干扰象素
imagesetpixel($im, rand()p , rand()0 , $randcolor);
ImagePNG($im);
ImageDestroy($im);
$_SESSION['Checknum'] = $vcodes;
在需要显示验证码的页面中加入
input type="text" name="passcode"
img src="code.php"
验证码是通过第一步骤代码中的$_SESSION['Checknum'] = $vcodes;赋的值,所以验证码的值存在$_SESSION['Checknum']当中.在验证页面,使用以下代码,
...
session_start();//启动会话
$code=$_POST["passcode"];
if( $code == $_SESSION["Checknum"])
{...}即可完成验证码登录.
运行截图:
望采纳,谢谢
验证码功能机制实现思路
常规的验证码实现:
a、产生一张png的图片
b、为图片设置背景色
c、设置字体颜色和样式
e、把产生的每个字符调整旋转角度和位置画到png图片上
f、加入噪点和干扰线防止注册机器分析原图片来恶意注册
g、输出图片
h、释放图片所占内存
i、将验证码保存到session或是数据库
j、将和输入的验证码进行对比
短信(邮箱)验证码机制:
b、把产生的每个字符保存到session或是数据库
c、将验证码发送到用户的手机(邮箱)
d、用户在规定时间内进行输入
e、将验证码从session或是数据库中取出
f、将和输入的验证码进行对比验证
简单的说,手机验证和手机注册是差不多的.
手机验证:
首先你在php代码中生成一串字符串,可以保存在session里面,然后在把这串字符串通过短信服务(这一步需要去买,找代理,前提你获得了用户的正确手机号码)发给用户,然后提供一个输入框给用户输入收到的验证码在和session中的比对.
手机注册:
前面的部分都是和上面一样,多出来的步骤就是验证成功后把信息存入用户数据库而已,最多在存入之前让用户再输入一点用户其他信息.
以上验证码可以扩展一下,比如有效时间,直接在session中设置有效时间,过期作废的限制就可以了.
php登陆页面◆验证码的实现,参考如下:
①.、首先新建一个php站点;
$im_color=imagecolorallocate($im,100,100,100); ?//填充验证码背景为灰色
//实用循环画四条随机颜色的干扰线
$_SESSION["y"]=$n;
$p=0;
$p=$p◆10;
$num=substr($n,$i,1); ?//把验证码数字一个一个的取出来
//设置每个验证码数字不同的颜色,数字角度偏差和字体.
imagepng($im); ?//输出验证码
imagedestroy($im); //释放内存
用户名文本框昵称为name;
密码文本框为psw;
验证码为yzm;
表单的提交方式为post,提交到check.php.