本文目錄一覽:
如何實現php手機簡訊驗證功能
現在網站在建設網站時為了保證用戶信息的真實性,往往會選擇發簡訊給用戶手機發驗證碼信息,只有通過驗證的用戶才可以註冊,這樣保證了用戶的聯繫信息資料的100%的準確性 。
第一、實現php手機簡訊驗證功能的基本思路
1、要找到簡訊服務提供商,接入簡訊服務
2、在網站信息提交頁面請求發送信息
3、伺服器向簡訊服務提供商通信,提交發送請求
4、簡訊服務提供商通過運營商將信息發送到用戶的手機中
二、手機號碼簡訊驗證前台頁面效果實現
!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
html xmlns
head
title/title
script src=”js/jquery-1.4a2.min.js” type=”text/javascript”/script
script type=”text/javascript”
/*——————————————-*/
var InterValObj; //timer變數,控制時間
var count = 60; //間隔函數,1秒執行
var curCount;//當前剩餘秒數
var code = “”; //驗證碼
var codeLength = 6;//驗證碼長度
function sendMessage() {
curCount = count;
var dealType; //驗證方式
tel = $(』#tel』).val();
if(tel!=』』){
//驗證手機有效性
var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
if(!myreg.test($(』#tel』).val()))
{
alert(』請輸入有效的手機號碼!』);
return false;
}
tel = $(』#tel』).val();
//產生驗證碼
for (var i = 0; i codeLength; i++) {
code += parseInt(Math.random() * 9).toString();
}
//設置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–;
$(“#btnSendCode”).val(“請在” + 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[』content』] = mb_convert_encoding($content,』utf-8』, 』gb2312』); //簡訊內容需要用urlencode編碼下
$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();
}
php驗證碼怎麼實現
1. 新建code.php驗證碼生成文件
在此之前必須打開php的GD庫,修改php.ini文件的配置,取消extension=php_gd2.dll前面的分號。代碼如下:
?php
session_start();
//生成驗證碼圖片
Header(“Content-type: image/PNG”);
$im = imagecreate(44,18);
$back = ImageColorAllocate($im, 245,245,245);
imagefill($im,0,0,$back); //背景
srand((double)microtime()*1000000);
//生成4位數字
for($i=0;$i4;$i++){
$font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));
$authnum=rand(1,9);
$vcodes.=$authnum;
imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
}
for($i=0;$i100;$i++) //加入干擾象素
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()p , rand()0 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
$_SESSION[‘Checknum’] = $vcodes;
?
2. 顯示驗證碼圖片
在需要顯示驗證碼的頁面中加入
input type=”text” name=”passcode”
img src=”code.php”
3.判斷並獲取驗證碼的值
驗證碼是通過第一步驟代碼中的$_SESSION[‘Checknum’] = $vcodes;賦的值,所以驗證碼的值存在$_SESSION[‘Checknum’]當中。在驗證頁面,使用以下代碼,
…
session_start();//啟動會話
$code=$_POST[“passcode”];
if( $code == $_SESSION[“Checknum”])
{…}即可完成驗證碼登錄。
運行截圖:
望採納,謝謝
php怎麼實現驗證碼的
驗證碼功能機制實現思路
常規的驗證碼實現:
a、產生一張png的圖片
b、為圖片設置背景色
c、設置字體顏色和樣式
d、產生4位數的隨機的驗證碼
e、把產生的每個字元調整旋轉角度和位置畫到png圖片上
f、加入噪點和干擾線防止註冊機器分析原圖片來惡意註冊
g、輸出圖片
h、釋放圖片所佔內存
i、將驗證碼保存到session或是資料庫
j、將和輸入的驗證碼進行對比
簡訊(郵箱)驗證碼機制:
a、產生4-6位數的隨機的驗證碼
b、把產生的每個字元保存到session或是資料庫
c、將驗證碼發送到用戶的手機(郵箱)
d、用戶在規定時間內進行輸入
e、將驗證碼從session或是資料庫中取出
f、將和輸入的驗證碼進行對比驗證
怎麼用php實現手機註冊和手機驗證
簡單的說,手機驗證和手機註冊是差不多的。
手機驗證:
首先你在php代碼中生成一串字元串,可以保存在session裡面,然後在把這串字元串通過簡訊服務(這一步需要去買,找代理,前提你獲得了用戶的正確手機號碼)發給用戶,然後提供一個輸入框給用戶輸入收到的驗證碼在和session中的比對。
手機註冊:
前面的部分都是和上面一樣,多出來的步驟就是驗證成功後把信息存入用戶資料庫而已,最多在存入之前讓用戶再輸入一點用戶其他信息。
以上驗證碼可以擴展一下,比如有效時間,直接在session中設置有效時間,過期作廢的限制就可以了。
我的php代碼中登陸界面加一個驗證碼,如何實現
php登陸頁面+驗證碼的實現,參考如下:
1、首先新建一個php站點;
2、先新建一個命名為yzm.php文件,雙擊編輯,清空Dreamweaver自動生成的HTML代碼,如下;
?php
session_start();
header(“Content-Type:image/png”); //設置頁面的頭信息輸出為png圖片$im=imagecreate(60,20); //創建一個畫布
$im_color=imagecolorallocate($im,100,100,100); //填充驗證碼背景為灰色
for($i=0;$i4;$i++)
{
$line_color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,60),rand(0,20),rand(0,60),rand(0,20),$line_color);
}
//實用循環畫四條隨機顏色的干擾線
$n=rand(1000,9999);
$_SESSION[“y”]=$n;
$p=0;
for($i=0;$i4;$i++)
{
$p=$p+10;
$num=substr($n,$i,1); //把驗證碼數字一個一個的取出來
$num_color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagettftext($im,rand(10,15),rand(-10,10),$p,rand(10,15),$num_color,”font1.ttf”,$num);
}
//設置每個驗證碼數字不同的顏色,數字角度偏差和字體。
imagepng($im); //輸出驗證碼
imagedestroy($im); //釋放內存
?
3、新建login.php文件;
用戶名文本框昵稱為name;
密碼文本框為psw;
驗證碼為yzm;
表單的提交方式為post,提交到check.php。
原創文章,作者:CGJW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139785.html