ホームページ  >  記事  >  バックエンド開発  >  PHP検証コード生成プログラムのいくつかの方法_PHPチュートリアル

PHP検証コード生成プログラムのいくつかの方法_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:47:571142ブラウズ

PHP 検証コード生成 この機能は、ユーザーが登録、ログイン、または情報を公開する際に、基本的なセキュリティ検証機能としてよく使用されます。以下に、編集者がよく使用される PHP 検証コード生成コードとその応用例をいくつか紹介します。

例 1、配列を直接使用する、この方法は比較的簡単です

コードは次のとおりです コードをコピー


<頭>



$arr=array(2,3,4,5,8,1,9,7,"a","b","c","d","e","f","中", 「国」、「南」、「北」、「大きい」、「小さい」、「多い」、「少ない」);
$b=array_rand($arr,3);

?>





エコー「コード:」;
foreach($b を $key)
{
エコー $arr[$key];
}
?>


(上記のステートメントを php ファイルとして保存します)

header("Content-Type:text/html;charset=utf-8");
echo $_POST["yanzhengma"];
echo $_POST["コード"];
if($_POST["yanzhengma"]==$_POST["code"])
{
echo "確認コードは正しいです";
}
それ以外
{
die("<script>alert('検証コードが間違っています");location="array_rand.php";</script>");
}
?>

(上記のステートメントを yz.php として保存します)


例 2、これも配列を使用していますが、データがもう少し多くなります

コードは次のとおりです コードをコピー

関数 UPCAバーコード($code) {
$lw = 2; $hi = 100;
$Lencode = array('0001101','0011001','0010011','0111101','0100011',
'0110001','0101111','0111011','0110111','0001011');
$Rencode = array('1110010','1100110','1101100','1000010','1011100',
'1001110','1010000','1000100','1001000','1110100');
$ends = '101'; $center = '01010';
/* UPC-A は 11 桁である必要があります。チェックサムを計算します */
if ( strlen($code) != 11 ) { die("UPC-A は 11 桁である必要があります。"); /* EAN-13 チェックサムの桁を計算します */
$ncode = '0'.$code;
$偶数 = 0; $奇数 = 0;
for ($x=0;$x If ($x % 2) { $odd += $ncode[$x] } else { $even += $ncode[$x]; }
$code.=(10 - (($odd * 3 + $even) % 10)) % 10;
/* バイナリ文字列を使用してバーエンコーディングを作成します */
$bars=$ends;
$bars.=$Lencode[$code[0]];
for($x=1;$x $bars.=$Lencode[$code[$x]];
}
$bars.=$center;
for($x=6;$x $bars.=$Rencode[$code[$x]];
}
$bars.=$ends;
/* バーコード画像を生成します */
$img = ImageCreate($lw*95+30,$hi+30);
$fg = ImageColorAllocate($img, 0, 0, 0);
$bg = ImageColorAllocate($img, 255, 255, 255);
ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg);
$shift=10;
for ($x=0;$x if (($x=45 && $x=85)) { $sh=10; } else { $sh=0 }
If ($bars[$x] == '1') { $color = $fg } else { $color = $bg; ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color);
}
/* 人間が読めるラベルを追加します */
ImageString($img,4,5,$hi-5,$code[0],$fg);
for ($x=0;$x ImageString($img,5,$lw*(13+$x*6)+15,$hi+5,$code[$x+1],$fg);
ImageString($img,5,$lw*(53+$x*6)+15,$hi+5,$code[$x+6],$fg);
}
ImageString($img,4,$lw*95+17,$hi-5,$code[11],$fg);
/* ヘッダーとコンテンツを出力します */
header("Content-Type: image/png");
画像PNG($img);
}

UPCAバーコード('12345678901');

?>

例 3、これは比較的完全な Ajax 更新検証コードの例です


vcode.php

コードは次のとおりです コードをコピー

session_start();//セッション関数を有効にする
header("キャッシュ制御: キャッシュなし、再検証が必要");

$im = imagecreate(60,30) //画像の幅と高さを定義します
$vcode=getVCode();//表示する文字を取得します
$bg = imagecolorallocate($im, 255, 255, 255) //画像の背景を定義します
; $txt = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)) //表示する文字の色を定義します
imagestring($im, 8, 0, 0, $vcode, $txt);//画像に文字列を書き込みます
header(Content-type: image/jpeg);//Content-type を定義します
imagejpeg($im);//画像をJPEG形式で表示します
$_SESSION[vcode]=$vcode;//セッションを書き込む

function getVCode(){ //ユーザーが指定した数の文字列をランダムに生成します
$コード番号=4; $チェックコード=""; $string="";// 表示されるオプションの文字列。自分で定義してください
; for($i=0;$i<$codenum;$i ) {
$number=rand(0,2); switch($number){ // オプションの文字列に応じて柔軟に定義できます
ケース 0: $rand_number=rand(0,10);break;
ケース 1: $rand_number=rand(11,36);break; ケース 2: $rand_number=rand(37,62);break; }
$code=substr($string,$rand_number,1); $checkcode=$checkcode.$code
}
$checkcode を返します
}
?>




ログインフォーム.html

                                                                                                                                                                         
                                                                                                                                                                          &lt; td width = "100"&gt;/td&gt;                                                                   認証コード
1 つ変更
                                                                                     

                                                                                                   


                                                                                         

                                                                                  まだ登録されていませんか? 今すぐ登録
パスワードをお忘れですか? パスワードを取得                                                                                          




vcode.js

コードは次のとおりです コードをコピー



<フォーム名="ログインフォーム">
<テーブルクラス="dtable">
                                                                                   

ユーザー名 パスワード
コードは次のとおりです コードをコピー

//この関数は検証コードを取得するために使用されます

関数 getVCode() {
var vcode=document.getElementById('vcode');
vcode.src = 'vcode.php?nocache='+new Date().getTime();
}

//この関数は検証コードを検証するために使用されます
関数 usrVCode() {
if(!checkLogin())return false;
varloginvcode=document.loginform.loginvcode.value;
var xmlhttp1=createAjax();
var data='&loginvcode='+loginvcode;
if (xmlhttp1) {
var state=document.getElementById('state');
xmlhttp1.open('get',?do=vcodedo'+data,true); xmlhttp1.send(null);
xmlhttp1.onreadystatechange=function() {
If (xmlhttp1.readyState==4 && xmlhttp1.status==200) {
setTimeout("state.style.display = 'none';",1000);
var myres=xmlhttp1.responseText;
var result=(myres==1)?"おめでとうございます、確認コードが正しく入力されました!":"申し訳ありませんが、確認コードが間違って入力されました!";
if(myres==0)alert(result);
If(myres==1)usrLogin();
}
他に{
state.style.display = "";
state.style.left=(document.body.offsetWidth-350)/2;
state.style.top=(document.body.offsetHeight-235)/2+document.body.scrollTop;
}
}
}
}

http://www.bkjia.com/PHPjc/632832.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632832.html技術記事 PHP 検証コード生成の機能は、ユーザーが登録、ログイン、または情報を公開する際の基本的なセキュリティ検証機能としてよく使用されます。次のエディターでは、よく使用される PHP 検証コード生成コードと...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。