本文目錄一覽:
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寫一個介面,隨機生成6位數字,然後以簡訊的形式發送到對應的手機號上。從來沒寫過介面不知道如何寫
簡訊介面需要你有對應的簡訊服務商才行,通常是第三方簡訊服務商,這種服務往往是收費的,收取的費用越多,每天可以發送的簡訊數量越多。
你需要向他們申請簡訊介面,申請成功後會有介面文檔,按照文檔中的規定發送相應的數據即可,通常發送的數據包含:需要發送簡訊的手機號、簡訊內容。
介面寫法通常會在文檔中有寫,甚至有的文檔會附帶範例以供開發者參考。
Php中生成6位隨機數並顯示
Php中生成6位隨機數並顯示實現如下:
1、使用shuffle函數生成隨機數。
?php
$arr=range(100000,999999);
shuffle($arr);
foreach($arr as $values)
{
echo $values.” “;//顯示隨機數
}
?
2、使用array_unique函數生成隨機數。
?php
$arr=array();
while(count($arr)10)
{
$arr[]=rand(1,10);
$arr=array_unique($arr);
}
echo implode(” “,$arr);
?
擴展資料:
PHP生成隨機數的兩種方法:
1、rand()函數:
//無參數:rand()函數用戶獲取隨機數。
echo rand() . “\n”;//得到一個不定位數的隨機數
//帶參數:rand($min,$max),$min表示從XX開始取值,$max表示最大只能為XX。
echo rand(5, 15);//在5~15之間取一個數
注意:mt_rand() 用法跟rand()類似,但是mt_rand()的執行效率更高。
2、使用array_flip函數生成隨機數,可以去掉重複值。
如何用PHP生成驗證碼
PHP生成驗證碼的原理:使用PHP的GD庫,生成一張帶驗證碼的圖片,並將驗證碼保存在Session中。PHP生成驗證碼的大致流程有:
1、產生一張png的圖片;
2、為圖片設置背景色;
3、設置字體顏色和樣式;
4、產生4位數的隨機的驗證碼;
5、把產生的每個字元調整旋轉角度和位置畫到png圖片上;
6、加入噪點和干擾線防止註冊機器分析原圖片來惡意破解驗證碼;
7、輸出圖片;
8、釋放圖片所佔內存。
session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
$code = “”;
for ($i = 0; $i $num; $i++) {
$code .= rand(0, 9);
}
//4位驗證碼也可以用rand(1000,9999)直接生成
//將生成的驗證碼寫入session,備驗證時用
$_SESSION[“helloweba_num”] = $code;
//創建圖片,定義顏色值
header(“Content-type: image/PNG”);
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, 0, 0, 0);
$gray = imagecolorallocate($im, 200, 200, 200);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
//填充背景
imagefill($im, 0, 0, $gray);
//畫邊框
imagerectangle($im, 0, 0, $w-1, $h-1, $black);
//隨機繪製兩條虛線,起干擾作用
$style = array ($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im, $style);
$y1 = rand(0, $h);
$y2 = rand(0, $h);
$y3 = rand(0, $h);
$y4 = rand(0, $h);
imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);
//在畫布上隨機生成大量黑點,起干擾作用;
for ($i = 0; $i 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//將數字隨機顯示在畫布上,字元的水平間距和位置都按一定波動範圍隨機生成
$strx = rand(3, 8);
for ($i = 0; $i $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 12);
}
imagepng($im);//輸出圖片
imagedestroy($im);//釋放圖片所佔內存
}
原創文章,作者:CRNJA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329444.html