本文目錄一覽:
- 1、我想在我的PHP網站里加一個驗證碼,滑動那種
- 2、php實現驗證碼,能給具體的代碼嗎 在這謝謝過各位高手了
- 3、php中 為什麼驗證碼 必須要開啟 ob
- 4、如何用PHP生成驗證碼
- 5、PHP 驗證碼怎樣設置?
我想在我的PHP網站里加一個驗證碼,滑動那種
你也真敢想。
網頁驗證碼一般是在後台生成一個驗證碼在後台生成好圖片返回給網頁顯示,用戶輸入的信息與後端保存的信息再進行驗證。
如果後端的信息返回到前端是已文字的形式,就起不到安全的作用了。
你的這個功能可以這樣設計,但作用不大。我來說說我的思路吧
首先後端返回一個數字類型的驗證碼,前端獲取數字行的驗證用js+css組織實現特效。你在上圖的黑色部分設定一個擋扳的html元素(這個元素距離左邊的三角形滑動塊的距離就是後端返回的數字),左邊滑塊滑動多少距離達這個隱藏區塊,獲取這個數值,保存下來。
php實現驗證碼,能給具體的代碼嗎 在這謝謝過各位高手了
index.php:
?php
/* index.php start*/
if(!empty($_POST)) {
session_start();
if($_POST[‘seccode’] == $_SESSION[‘seccode’]) {
echo ‘scriptalert(“驗證成功”)/script’;
} else {
echo ‘scriptalert(“驗證失敗”)/script’;
}
session_destroy();
}
?
form action=”” method=”post” /
img id=”seccode” src=”seccode.php?rand=”.?=rand()? / input type=”text” name=”seccode” / input type=”submit” value=”submit” /
input type=”button” onclick=”document.getElementById(‘seccode’).src = ‘seccode.php?reload=1’ + Math.random()” value=”change one”/
/form
?php
/* index.php end*/
?
******************************
seccode.php:
?php
/*seccode.php start*/
session_start();
if(isset($_SESSION[‘seccode’]) empty($_GET[‘reload’])) {
$arr = $_SESSION[‘seccode’];
} else {
for($i=0; $i4; $i++) {
$arr[] = rand(0, 9);
}
$_SESSION[‘seccode’] = implode($arr);
}
$im = imagecreate(90, 25);
$backgroundcolor = imagecolorallocate ($im, 255, 255, 255);
for($i = 0; $i 4; $i++) {
$s = iconv(‘GBK’, ‘UTF-8’, $arr[$i]);
$x = $i * 20 + mt_rand(0, 4) – 2;// 隨機X
$y = mt_rand(0, 4); // 隨機Y
$angle = mt_rand(0,4);// 隨機角度
$text_color = imagecolorallocate($im, mt_rand(50, 255), mt_rand(50, 128), mt_rand(50, 255)); // 隨機顏色
imagettftext($im,20, $angle,$x,20+$y,$text_color,”C:\\Windows\\Fonts\\SIMSUN.TTC”,$s);
}
// 線條
$linenums = mt_rand(10, 32);
for($i=0; $i = $linenums; $i++) {
$linecolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
$linex = mt_rand(0, 62);
$liney = mt_rand(0, 25);
imageline($im, $linex, $liney, $linex + mt_rand(0, 4) – 2, $liney + mt_rand(0, 4) – 2, $linecolor);
}
// 雜點
for($i=0; $i = 64; $i++) {
$pointcolor = imagecolorallocate($im, mt_rand(50, 255), mt_rand(50, 255), mt_rand(50, 255));
imagesetpixel($im, mt_rand(0, 62), mt_rand(0, 25), $pointcolor);
}
// 邊框
$bordercolor = imagecolorallocate($im , 150, 150, 150);
imagerectangle($im, 0, 0, 89, 24, $bordercolor);
header(‘Content-type: image/png’);
imagepng($im);
imagedestroy($im);
/*seccode.php end*/
?
php中 為什麼驗證碼 必須要開啟 ob
php中驗證碼必須要開啟gd 組件 這個東西是創建圖的。
你說的ob 應該是ob_start()這個 ,打開緩衝區。
因為圖片和正常的html格式不一樣,在php中必須得聲明輸出的是圖片格式,才可以輸出圖片也就是header.
header 代碼前面不能有輸出。所以必須打開緩衝區。把緩衝區的內容清理點才可以。
如何用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);//釋放圖片所佔內存
}
PHP 驗證碼怎樣設置?
補充:
驗證碼可以同cookie或者session的方式傳遞數據,
不用有特別的設置,不過要安裝GD庫,否則不能顯示圖片.
隨便放在哪裡都可以,
顯示是以圖片方式顯示,
例如驗證碼的程序文件是ck.php
那麼顯示就是
img src = “ck.php”
驗證碼有很多種編寫方式,當然是眾說紛紜,
凡是程序都不會有一個統一的格式,只有統一的思路.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/155425.html