php獲取驗證碼
① php 驗證碼
大哥!!!
哪裡沒有起作用了啊!????
checknum.php
你看最後一行你寫了什麼???
session_destroy();
你都銷毀了所有的SESSION
那麼你在code_check.php
肯定是看不到 $_SESSION['CODE'];的啊!!!
你刪除session_destroy();看下
還有就是你在code_check.php這個頁面中
$_SESSION['CODE'];大小寫錯了!!!
應該是$_SESSION['code'];,拜託以後看清楚啊!!
② PHP 驗證碼
問題一、你的驗證碼代碼,沒有發現開啟session,也沒有將隨機產生的字元串保存到session,沒保存,自然就無法比對
問題二、要點擊一下刷新,其實很簡單,給圖片加一個點擊事件,讓圖片重新請求一次伺服器執行php驗證碼文件,需要注意的是,有於緩存的關系,在重新請求伺服器的時候,給驗證碼圖片路徑加一個隨機參數,防止刷新而驗證碼不變化,代碼示例如下:
<img src='code.php' onclick="this.src='code.php?'+Math.random();" />
③ 如何用PHP生成驗證碼
php生成驗證碼,php驗證碼,php怎樣生成驗證碼?
工具/原料
這個驗證碼較實用,大家可以應用到項目中。
方法/步驟
1.
<?php
/*設置文件頭為圖片輸出*/
Header("Content-type:image/JPEG");
/*調用生成驗證碼函數*/
$checkcode=make_rand(4);
/**
*生成驗證碼字元
*@paramint$length驗證碼字元長度
*@returnstring
*/
functionmake_rand($length="32"){
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$result="";
for($i=0;$i<$length;$i++){
$num[$i]=rand(0,25);
$result.=$str[$num[$i]];
}
return$result;
}
2.
/*調用輸出驗證碼圖片函數*/
getAuthImage($checkcode,160,40);
/**
*生成驗證碼圖片
*@paramstring$text驗證碼字元
*/
functiongetAuthImage($text,$w,$y){
/*設置圖片的寬度和高度*/
$im_x=$w;
$im_y=$y;
/*創建圖片*/
$im=imagecreatetruecolor($im_x,$im_y);
$text_c=ImageColorAllocate($im,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
$tmpC0=mt_rand(100,255);
$tmpC1=mt_rand(100,255);
$tmpC2=mt_rand(100,255);
$buttum_c=ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);
imagefill($im,16,13,$buttum_c);
3.
/*字體文件*/
$font='t1.ttf';
for($i=0;$i<strlen($text);$i++)
{
$tmp=substr($text,$i,1);
$array=array(-1,1);
$p=array_rand($array);
$an=$array[$p]*mt_rand(1,10);//角度
$size=28;
imagettftext($im,$size,$an,15+$i*$size,35,$text_c,$font,$tmp);
}
/*將字元寫入文件中*/
$distortion_im=imagecreatetruecolor($im_x,$im_y);
imagefill($distortion_im,16,13,$buttum_c);
for($i=0;$i<$im_x;$i++){
for($j=0;$j<$im_y;$j++){
$rgb=imagecolorat($im,$i,$j);
if((int)($i+20+sin($j/$im_y*2*M_PI)*10)<=imagesx($distortion_im)&&(int)($i+20+sin($j/$im_y*2*M_PI)*10)>=0){
imagesetpixel($distortion_im,(int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4),$j,$rgb);
}
}
}
4.
/*干擾元素點的數量*/
$count=160;
/*創建干擾元素點*/
for($i=0;$i<$count;$i++){
$randcolor=ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($distortion_im,mt_rand()%$im_x,mt_rand()%$im_y,$randcolor);
}
/*創建干擾線條*/
$rand=mt_rand(5,30);
$rand1=mt_rand(15,25);
$rand2=mt_rand(5,10);
for($yy=$rand;$yy<=+$rand+2;$yy++){
for($px=-80;$px<=80;$px=$px+0.1)
{
$x=$px/$rand1;
if($x!=0)
{
$y=sin($x);
}
$py=$y*$rand2;
imagesetpixel($distortion_im,$px+80,$py+$yy,$text_c);
}
}
5.
/*以PNG格式將圖像輸出到瀏覽器*/
ImagePNG($distortion_im);
/*銷毀圖像*/
ImageDestroy($distortion_im);
ImageDestroy($im);
④ 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程序,以備今後有類似的投票活動可以直接拿來使用。
程序採用了PHP的GD庫,原理很簡單,就是先建立一張空白圖片,然後把驗證碼的圖片使用PHP
GD庫中的imagecreatefromjpeg函數建立一個image對象,最後計算圖片的長寬,再次使用PHP內置的image復制到一開始建立的空白圖片上去。
全部代碼如下:
header("Content-type:image/png");
set_time_limit(0);//設置PHP超時時間
$url
=
$_GET['url'];
$url
=
"http://vcer..com/verify";
$imginfo
=
GetImageSize
(
$url
);
$imgw
=
$imginfo
[0];
$imgh
=
$imginfo
[1];
$bg
=
imagecreatetruecolor($imgw,$imgh);
$image
=
imagecreatefromjpeg($url);
imagecolorallocate($image,255,255,255);
image($bg,$image,0,0,
0,0,$imgw,$imgh);
imagedestroy($image);
ImagePng($bg);
此處的代碼支持驗證碼格式為jpg的格式,如果是png或者gif的格式可以參考第二頁。
通過上一頁一個獲取驗證碼圖片到本地的PHP程序,對於驗證碼為jpg格式的圖片是可以正常輸出的,對於png、gif的驗證碼則不能正常使用,今天稍微修改一下PHP代碼,使其可以支持png、gif、jpg三種格式的驗證碼。
PHP判斷圖片的格式可使用php內置的exif_imagetype函數,非常方便,
關於exif_imagetype的詳細使用方法可以訪問:http://php.net/manual/en/function.exif-imagetype.php
header("Content-type:image/png");
set_time_limit(0);//設置PHP超時時間
$url
=
$_GET['url'];
$url
=
"http://vcer..com/verify";
if(empty($url)){
echo
"沒有圖片";
die;
}
$imginfo
=
GetImageSize
(
$url
);
$type
=
exif_imagetype($url);
$imgw
=
$imginfo
[0];
$imgh
=
$imginfo
[1];
$bg
=
imagecreatetruecolor($imgw,$imgh);
if($type==IMAGETYPE_GIF){
$image
=
imagecreatefromgif($url);
}elseif($type==IMAGETYPE_JPEG){
$image
=
imagecreatefromjpeg($url);
}elseif($type==IMAGETYPE_PNG){
$image
=
imagecreatefrompng($url);
}
imagecolorallocate($image,255,255,255);
image($bg,$image,0,0,
0,0,$imgw,$imgh);
imagedestroy($image);
ImagePng($bg);
⑥ 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;$i<4;$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;$i<100;$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 怎麼獲取驗證碼的值
$_SESSION["vcode"] = $vcode;
驗證碼的值就在 $_SESSION["vcode"] 裡面。
⑧ 下面段php代碼怎麼得到驗證碼的值啊(在頁面裡面直接輸出就可以)。
最後兩句:
$name=$_SESSION[ 'str'];
echo $name;
去掉,因為這個php實際上表現為一個圖片,你echo是不會有值的
最後填一句 $_SESSION[ 'str'] = $str;
把這個文件保存為checkimg.php
然後,新建一個同級目錄下的php文件
a.php 如下:
<?php
session_start();
?>
<img src="checkimg.php"/>
驗證碼是:
<?
echo $_SESSION["str"];
?>
⑨ php驗證碼
你把下面語句修改一下:
echo"驗證碼不正確";//否則輸出失敗
增加調試信息,修改後如下:
echo"驗證碼不正確(str=$_SESSION[str],name=$name)";//否則輸出失敗
看看輸出的信息是什麼,然後就容易知道結果了。
⑩ php 怎麼獲取驗證碼的值,接著怎麼寫
驗證碼一般都保存在session中,列印一下session的值,就能看到驗證碼對應的欄位、值;
mp($_SESSION);