開發環境準備
- 本功能以LAMP為開發環境,請確保電腦上已安裝LAMP,具體安裝過程參見ubuntu下 LAMP的安裝。
- 安裝LAMP后,還要確保安裝curl。安裝過程如下
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
sudo /etc/init.d/apache2 restart //重啟Apache服務器
實際場景
生活中,我們經常會遇到利用手機驗證碼驗證身份的情況。其大致流程如下:
- 輸入手機號碼,點擊獲取驗證碼后,服務器生成一個驗證碼,將手機號和驗證碼作為一條記錄插入到數據庫中,同時調用第三方短信接口,將驗證碼發送到手機上。
- 我們接收到驗證碼后,在網頁上填寫驗證碼,點擊提交。服務器接受驗證碼和手機號,在數據庫中進行查找,若有符合的記錄,則可以確定是本人操作,可放行讓其進行余下操作。否則不允許繼續操作。
實戰過程
-
尋找合適的短信接口。
本文以API Store中的凱德通短信接口為例。
點擊獲取apikey,獲取屬于你的apikey。
-
獲取驗證碼的頁面
-
輸入手機號碼,點擊獲取驗證碼
此部分的代碼為
<?php
header('Content-type:text/html;charset=utf-8');
$phonenum=$_POST["phonenumber"];
$code=rand(100000,999999);
$content="【snoweek學習過程】".$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);
// 執行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 "發送成功";
}else{
$message['send']='fail';
$json_message=json_encode($message);
echo $json_message;
//echo "發送失敗";
}
?>
其實現的功能有兩部分:
. 給手機發送驗證碼
. 將驗證碼和手機號存入數據庫
-
填寫驗證碼,點擊提交
此部分的功能是,將手機號和驗證碼一起提交,在數據庫中進行查找,若有符合的記錄,則可以確定是本人操作,可放行讓其進行余下操作。否則不允許繼續操作。
補充:
- 以上實戰開發忽略了實際情況的細節部分,如時間限制等。著重講解手機短信驗證功能的流程。
- 此項目的完整代碼可以到我的github,php-message-test進行下載。