Cookie Session之驗證例項

2021-09-06 14:31:49 字數 4696 閱讀 6398

為了防止各種自動登入,以及反作弊和破壞,往往會要求登入時讓使用者輸入隨機產生的驗證碼(這組驗證碼是一組數字和字母),這樣可以起到一定的防止他人利用程式讓機器自動反覆登入的情況。在php下要實現這種功能是非常的簡單。注意:產生要求修改php.inn檔案,當然要extension_dir要指向擴充套件的庫資料夾,extension=php_gd2.dll前面的分號要去掉,開啟生成功能。

---------------------------------------------

檔案cookievalidate.php,登入介面

此例為cookie驗證例項

";//取乙個cookie

$validate="";

if(isset($_post["validate"]))else

}?>

檔案pic.php,生成驗證,並且將驗證內容存入cookie。只需要將這兩個php檔案存在同一目錄下,即可看見效果。

<?

header("content-type:image/png");

//定義header,宣告檔案,最好是png,無版權之擾;

$authnum ="";

//定義要顯示的數字,以從中生成新的四位整數驗證碼

$str = 'abcdefghijkmnpqrstuvwxyz1234567890';

//定義用來顯示在上的數字和字母;

$l = strlen($str); //得到字串的長度;

//迴圈隨機抽取四位前面定義的字母和數字;

for($i=1;$i<5;$i++)

setcookie ("authnum",$authnum);

//將四位數字,字母存入cookie中,名稱為authnum;

//生成驗證碼,

srand((double)microtime()*1000000);

$im = imagecreate(60,24);//寬與高;

//主要用到黑白灰三種色;

$black = imagecolorallocate($im, 0,0,0);

$white = imagecolorallocate($im, 255,255,255);

$gray = imagecolorallocate($im, 200,200,200);

//如不用干擾線,注釋就行了;

$li = imagecolorallocate($im, 120,220,200);

for($i=0;$i<3;$i++)

//將四位整數驗證碼繪入

imagefill($im,68,30,$gray);

//字元在的位置;

imagestring($im, 5, 14, 3, $authnum, $white);

for($i=0;$i<90;$i++)

imagepng($im);

imagedestroy($im);

?>

檔案sessionvalidate.php,登入介面

<?php

session_start();

//在頁首先要開啟session,

//error_reporting(2047);

session_destroy();

//將session去掉,以每次都能取新的session值;

//用seesion 效果不錯,也很方便

?>

此例為session驗證例項

<?php

//列印上乙個session;

";

$validate="";

if(isset($_post["validate"]))else }

?>

檔案checknum_session.php,生成驗證,並且將驗證內容存入session。只需要將這兩個php檔案將在同一目錄下,即可看見效果。

<?

header("content-type:image/png");

//生成新的四位整數驗證碼

session_start();//開啟session;

$authnum_session = '';

$str = 'abcdefghijkmnpqrstuvwxyz1234567890';

//定義用來顯示在上的數字和字母;

$l = strlen($str); //得到字串的長度;

//迴圈隨機抽取四位前面定義的字母和數字;

for($i=1;$i<=4;$i++)

session_register("authnum_session");

//用session來做驗證也不錯;註冊session,名稱為authnum_session,

//其它頁面只要包含了該

//即可以通過$_session["authnum_session"]來呼叫

//生成驗證碼,

srand((double)microtime()*1000000);

$im = imagecreate(50,20);//寬與高;

//主要用到黑白灰三種色;

$black = imagecolorallocate($im, 0,0,0);

$white = imagecolorallocate($im, 255,255,255);

$gray = imagecolorallocate($im, 200,200,200);

//將四位整數驗證碼繪入

imagefill($im,68,30,$gray);

//如不用干擾線,注釋就行了;

$li = imagecolorallocate($im, 220,220,220);

for($i=0;$i<3;$i++)

//字元在的位置;

imagestring($im, 5, 8, 2, $authnum_session, $white);

for($i=0;$i<90;$i++)

imagepng($im);

imagedestroy($im);

?>

檔案inputvalidate.php,登入介面

<?

require "validate.php";

//將驗證程式檔案呼叫進來

$randvalidate= mt_rand() ;

//隨機產生加密數字;

//將這組數字存在乙個隱藏的表單裡;

//另外這組數字用來生成驗證上的數字;

//這樣侷限就是只能產生數字驗證;

?>

此例為隱藏乙個表單來驗證的例項

<?php

$validate="";

$c_validate="";if(!empty($_post["c_validate"]))$c_validate=getvalidata($_post["c_validate"]);

//如果hidden表單裡的值不為空,$c_validate等於解密後的值;

";

if(isset($_post["validate"]))else }

?>

檔案validate.php,用來獲取加密的資料。

<?php

function getvalidata($inputvalid)

else

if($i%3==0)else

$eachnum=(int)substr($inputvalid,$i,$subleng);

$bufout .= ($setnum | $eachnum) % 10; }

//取出四位數

$long=strlen($bufout);

$setlen=$long/4;

for($i=0;$i<$long;$i++) }

return($output ); }

?>

檔案authimg.php,用來生成。

//生成驗證碼

srand((double)microtime()*1000000);

$im = imagecreate(60,25);

$black = imagecolorallocate($im, 0,0,0);

$white = imagecolorallocate($im, 255,255,255);

$gray = imagecolorallocate($im, 200,200,200);

imagefill($im,68,30,$gray);

//將四位整數驗證碼繪入

imagestring($im, 5, 14, 5,$getauthnum, $white);

for($i=0;$i<80;$i++) //加入干擾象素

imagepng($im);

imagedestroy($im);

?>

介面鑑權之cookie session和token

一 鑑權 二 引入cookie session和token的原因 目前,大部分介面使用的都是http協議,而http協議是無狀態的,即本次請求和上一次請求是沒有任何關係的,無法共享資訊。比如,像我們現在 下單需要先登入,你登入成功了之後再去下單,伺服器怎麼知道你是已登入狀態呢?三 cookie和se...

Cookie Session機制詳解

cookie通過在客戶端記錄資訊確定使用者身份,session通過在伺服器端記錄資訊確定使用者身份。cookie機制 理論上,乙個使用者的所有請求操作都應該屬於同乙個會話,而另乙個使用者的請求操作則應該屬於另乙個會話。而web應用程式是使用http協議傳輸資料的。http協議是無狀態的協議,一旦資料...

會話技術Cookie Session

1 儲存客戶端的狀態 由乙個問題引出今天的內容,例如 的購物系統,使用者將購買的商品資訊儲存到 因為http協議是無狀態的,也就是說每個客戶訪問伺服器端資源時,伺服器並不知道該客戶端是誰,所以需要會話技術識別客戶端的狀態。會話技術是幫助伺服器記住客戶端狀態 區分客戶端 2 會話技術 從開啟乙個瀏覽器...