会员注册短信验证码收发
发布时间:2015-10-23 16:11 | 人气数:2025
短信发送接口文件:
<?php
session_start();
if($_POST['ajax'] == 'ajax') { //判断是否是AJAX请求
function sendSMS($phone,$content,$verify)
{
$data = array
(
'action'=>'sendOnce', //发送类型
'ac'=>'1001@501063320001EC', //用户账号
'cgid'=>'3360',
'authkey'=>'1395DD077CBA8B7E041F71F01117EB2EEC', //认证密钥
'c'=>$content,
'm'=>$phone //号码,多个号码用逗号隔开
);
$xml= postSMS('http://smsapi.c123.cn/OpenPlatform/OpenApi',$data); //POST方式提交
$re=simplexml_load_string(utf8_encode($xml));
if(trim($re['result'])==1) //发送成功
{
$time = time();
$phone_verify = array("phone"=>$phone,"time"=>$time,'verify'=>$verify);
$_SESSION['phoneVerify'.$phone] = serialize($phone_verify);
echo 1;
}
else //发送失败的返回值
{
echo 0;
}
}
function postSMS($url,$data='')
{
$row = parse_url($url);
$host = $row['host'];
$port = 80;
$file = $row['path'];
$post = '';
while (list($k,$v) = each($data))
{
$post .= rawurlencode($k)."=".rawurlencode($v)."&"; //转URL标准码
}
$post = substr( $post , 0 , -1 );
$len = strlen($post);
$fp = @fsockopen( $host ,$port, $errno, $errstr, 10);
if (!$fp) {
return "$errstr ($errno)\n";
} else {
$receive = '';
$out = "POST $file HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Connection: Close\r\n";
$out .= "Content-Length: $len\r\n\r\n";
$out .= $post;
fwrite($fp, $out);
while (!feof($fp)) {
$receive .= fgets($fp, 128);
}
fclose($fp);
$receive = explode("\r\n\r\n",$receive);
unset($receive[0]);
return implode("",$receive);
}
}
$verify = rand(100000,999999);
$content = '您的手机验证码为:'.$verify.',有效期为10分钟。请及时输入!';
$phone= $_POST['phone'];
sendSMS($phone,$content,$verify);
}
?>
前端展示部分:
<li><input name='phone' type='text' id='phone' maxlength='30' class="input_phone" placeholder="请输入您的手机号码"></li> <li id="rekey"><input name='key' type='text' id='key' maxlength='30' class="input_key" placeholder="请输入验证码"><span class="rightts"><input type="button" value="获取验证码" id='getVerify' /></span></li>JS代码部分:
<script type="text/javascript">
var verify = document.getElementById('getVerify');
verify.onclick = function(){
var phone = document.getElementById('phone').value;
var telReg = !!phone.match(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/);
var t = 60;
if(telReg == false){
alert('手机号码输入错误!请重新输入。');
}else{
document.userinfoform.getVerify.disabled = true;
for(i=1;i<=t;i++) {
window.setTimeout("update_time(" + i + ","+t+")", i * 1000);
}
$.ajax({
url:'/e/class/smsapi.php',
type:'POST',
data:{"phone":phone,"ajax":"ajax"},
async:false,
cache:false,
success:function(data){
if(data == 1){
alert('验证码已发送到你的手机,请及时填写!');
}else{
alert('短信发送失败,查看手机是否输入错误,如无误,请联系我们!');
}
}
})
}
}
function update_time(num,t) {
if(num == t) {
document.userinfoform.getVerify.value =" 重新发送 ";
document.userinfoform.getVerify.disabled=false;
}
else {
var printnr = t-num;
document.userinfoform.getVerify.value = " (" + printnr +")秒后重发";
}
}
</script>
PHP后台操作部分:
/*手机验证码*/
session_start();
$sessarr = "phoneVerify".$phone;
$sessar = unserialize($_SESSION[$sessarr]);
$phone_sms = $sessar[phone]; //发送手机号
$time_sms = $sessar[time]; //短信发送时间
$verify_sms = $sessar[verify]; //短信验证码
if((time() - $time_sms)>600){
printerror("EmptyMember_yzmtime","history.go(-1)",1);
}
if($key != $verify_sms){
printerror("EmptyMember_yzm","history.go(-1)",1);
}
unset($_SESSION[$sessarr]);
关键词:帝国CMS, 会员注册, 手机验证, 验证码, 登陆验证



