開發(fā)環(huán)境準(zhǔn)備
- 本功能以LAMP為開發(fā)環(huán)境,請確保電腦上已安裝LAMP,具體安裝過程參見ubuntu下 LAMP的安裝。
- 安裝LAMP后,還要確保安裝curl。安裝過程如下
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
sudo /etc/init.d/apache2 restart //重啟Apache服務(wù)器
實際場景
生活中,我們經(jīng)常會遇到利用手機驗證碼驗證身份的情況。其大致流程如下:
- 輸入手機號碼,點擊獲取驗證碼后,服務(wù)器生成一個驗證碼,將手機號和驗證碼作為一條記錄插入到數(shù)據(jù)庫中,同時調(diào)用第三方短信接口,將驗證碼發(fā)送到手機上。
- 我們接收到驗證碼后,在網(wǎng)頁上填寫驗證碼,點擊提交。服務(wù)器接受驗證碼和手機號,在數(shù)據(jù)庫中進行查找,若有符合的記錄,則可以確定是本人操作,可放行讓其進行余下操作。否則不允許繼續(xù)操作。
實戰(zhàn)過程
-
尋找合適的短信接口。
本文以API Store中的凱德通短信接口為例。
點擊獲取apikey,獲取屬于你的apikey。
-
獲取驗證碼的頁面
-
輸入手機號碼,點擊獲取驗證碼
此部分的代碼為
<?php
header('Content-type:text/html;charset=utf-8');
$phonenum=$_POST["phonenumber"];
$code=rand(100000,999999);
$content="【snoweek學(xué)習(xí)過程】".$code;
$ch = curl_init();
$url = 'http://apis.baidu.com/kingtto_media/106sms/106sms?mobile='.$phonenum.'&content='.$content;
$header = array(
'apikey:27a3d37cb57bcd235e9253abcda3b66b',
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 執(zhí)行HTTP請求
curl_setopt($ch , CURLOPT_URL , $url);
$res = curl_exec($ch);
//print_r($res);
if(strpos("$#".$res,"ok")){
require "./functions/connect_mysql.php";
require "./functions/code_function.php";
insert_code($phonenum,$code);
$message['send']='success';
$json_message=json_encode($message);
echo $json_message;
//echo "發(fā)送成功";
}else{
$message['send']='fail';
$json_message=json_encode($message);
echo $json_message;
//echo "發(fā)送失敗";
}
?>
其實現(xiàn)的功能有兩部分:
. 給手機發(fā)送驗證碼
. 將驗證碼和手機號存入數(shù)據(jù)庫
-
填寫驗證碼,點擊提交
此部分的功能是,將手機號和驗證碼一起提交,在數(shù)據(jù)庫中進行查找,若有符合的記錄,則可以確定是本人操作,可放行讓其進行余下操作。否則不允許繼續(xù)操作。
補充:
- 以上實戰(zhàn)開發(fā)忽略了實際情況的細節(jié)部分,如時間限制等。著重講解手機短信驗證功能的流程。
- 此項目的完整代碼可以到我的github,php-message-test進行下載。



