ホームページ >バックエンド開発 >PHPチュートリアル >PHPアルゴリズム検証コードと漢字検証コードの実装方法

PHPアルゴリズム検証コードと漢字検証コードの実装方法

WBOY
WBOYオリジナル
2016-07-25 08:45:15926ブラウズ

PHP Web サイト開発では、検証コードは悪意のある送信からフォームを効果的に保護できますが、算術検証コードや漢字検証コードを使用せず、単純なアルファベットまたは数字の検証コードのみを使用する場合、そのような検証コード スキームは実際には役に立ちません。安全ですか?

単純な数字やアルファベットの検証コードは解読されやすいことは誰もが知っていますが、算数の検証コードや漢字の検証コードは解読されにくいため、検証コードを使用する場合は、算術の検証コードまたは漢字の検証コードを使用することをお勧めします。コード。

以下は私が書いた 2 つの確認コードです。役に立つ友人は参照してください:

1. 計算検証コード:

  1. session_start();
  2. header("Content-type: image/png");
  3. $num1 = mt_rand(0,9);// 1桁目
  4. $num2 = mt_rand(1,9);//2桁目
  5. $type_str = "+-*";//メソッド文字列コレクション
  6. $type = substr($type_str,rand(0, 2), 1);//ランダムメソッド
  7. $change = mt_rand(1,3);
  8. if($change==1){
  9. $code = "$num1$type$num2=?";
  10. $result = "$verifyCode =$num1$type$num2;";
  11. eval($result);
  12. $_SESSION['authnum_session'] = $verifyCode;
  13. }elseif($change==2){
  14. $result = "$verifyCode =$num1 $type$num2;";
  15. eval($result);
  16. $code = $num1.$type."_=".$verifyCode;
  17. $_SESSION['authnum_session'] = $num2;
  18. }elseif ($change ==3){
  19. $result = "$verifyCode=$num1$type$num2;";
  20. eval($result);
  21. $code = "_".$type.$num2."=。
  22. $_SESSION['authnum_session'] = $num1;
  23. }
  24. $im = imagecreate(68,28);
  25. $black = imagecolorallocate($im, 255,255,255);
  26. $gray = imagecolorallocate($im, 200,200,200);
  27. $red = imagecolorallocate($im, 255, 0, 0);
  28. imagefill($im,0,0,$white); , 5, 10, 8, $code, $black);
  29. for($i=0;$i<70;$i++) {
  30. imagesetpixel($im, mt_rand(0, 58) , mt_rand(0 , 28) , $black);
  31. imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28) , $red);
  32. imagesetpixel($im, mt_rand(0, 58) , mt_rand(0, 28 ), $ grey);
  33. }
  34. imagepng($im);
  35. imagedestroy($im);
  36. ?>
コードをコピー

2. 漢字確認コード:

  1. session_start();
  2. $ch_str="まず第一に、主要な人々と調和していない場合、生活を分けるために国産品を使用する必要があります。低レベルの生徒の場合彼らは対面の会議に出かけ、人生を変えるような革命について話し合うことができ、多くの子供を産んだ後は、社会に小さな機械を加えて、質の高い長期的な党員を抱えることもできます。 2つの政治、3つの善、10の戦争、そして水の物理化学闘争における非農業問題は、かつての反疫病組織と他の反社会的組織の共同闘争のロードマップにつながった。教育の重要な点は次のとおりである。思考の変化と内部要因、グループ全体の日々の利益、プレッシャー、カルマ、パフォーマンスに焦点を当てます。ソリューション グループのリーダーである Mi Qun は、四方馬がサブテキストを認識していることだけを知っていました。指導者はより文法的であり、公の穴は、質問を配置するために原油を飛ばし、建設地域の検査活動が非常に重要であると指摘し、地元の指導者はこれを行うことを決定しました。統一システムに移行し、キモシャン・チェン・バイバオは全体的な材料で再選され、管理を引き継ぐ必要があると判断しました。 6種類の光は、風が南光、ルンケ、北に戻るたびに安全ゾーンが増加することを示し、トラックのスケジュールがシラシダルの織りカレンダーの花を素早く防ぎます。状況を判断し、ナーガ領域の本質を収集し、参照層を判断し、国境の撤去を停止し、本がきれいであることを確認するために口頭でフィールドを渡す必要があります工場は海を離れて権利を引き渡さなければなりません。若い才能の証明書は低く、国境を越えます。 鉄の門が動かされようとしています、彼らは何千もの勝利を導きます。 、そして経済的な白いグリッドの効果は、薬のマークを保存するのが難しいです、黄一彪は朝のシフトをとります。張米は侯草に危害を加え、平武培朱和迪は王の目を助けるために雑な苗を植える必要があるだけです。酸っぱい古いが十分な短いストロークを引き起こす周囲の食品放射性源について話す玄環羅寿千博成フェン建府魚検査と彫刻夫が袋を失い、周の岩のガードが細菌の枝を促進するのに十分な屈春源の超陰性砂シールを持ち上げました。 Taimoの貧困を置き換えるために、YangjiangはMu Mu Yan Qiu Chao Medical Schoolを分析しました、Gu Ni ZiguはLiu WeiluoがAh Chuan、特定のスキルセットの友人、限定アイテム、巻き戻し、法律、雨のファンであると書きました。 、そのため、GuyuanはChupi Boyouを助け、死のサークル、Wei Jiを占領し、訓練と制御を行い、Yunhuを呼び出して穀物母を割って練習するようにしました。プラグ鋼のトップポリシーは二重葉であり、基礎はブロックされており、シールドです。遅い、溶接電源が失われる、溶接電源が冷たい、弾丸が飛び散る、商業芸術が破壊される、ゼロの部屋が明るい、血が倍になる、ポンプが空になる、街が水洗になる、土が単純ですが、朱李であるかどうか、ワンパンの磁気ヒーローが閉じ込められているようです、コン・イージョウは奴隷側を脱ぎます、ルンガイはタッチスターをスイングし、報酬を得るためにスターを送ります、そして独立した公式の混合規律はまだ出現していませんクアン・ドンチャンの濡れた部分的なパターンは、幹部バルブ鉱山村の責任成熟は着実にハードプライスを勝ち取ります。Nufanqi 仕事前のレビュー、裏社会のダメージ、綿の侵入、灰、槍は太いですが、泥は卵の箱にあり、酸素は手のひらにあり、愛は停止し、キャンプは解散し、お金は使い果たされ、ロシア人は縮小し、砂は後退し、武器は細胞を運びます、これはスピン徴収溝を利用します肩を逆さまに保持するのはまだああXianbaカードのラフな導入が弱い足を追いかけています。塩粉を恐れてインフェンは、コアエッジを露出させるために傷を拡張するために編集された蜂のラッシュを振動させ、5つの領域の中心を非常に高速で輝き、紙のない夜の街九里シリンダーフォルダ年安蘭英郷毅儒教は蒸気、リンを殺しますか? 、クリスタル、エラスチンを挿入、喜びを燃やします、鉄分補給、私たちは芽、芽、タイル、斜めの灌漑、ヨーロッパ、西安、豚と外国の腐敗、Si Wei Kuoのパルスを浸透してください、テールビームのように微笑むのが適切です、強い楚と漢の時代には、牛を引きずる緑色に染められ、秋には鍛造された翡翠があちこちにあり、夏には肥州が訪れ、鋭い繁殖井戸で扱われました。彼らは干ばつを呼び起こし、脳を啓発し、チベット地域に侵入し、炉の殻に亀裂を入れるよう命じ、硫黄炭はキャストを歓迎し、薄い10日間を探索しました。良い祝福と贈り物が選ばれ、残りの雷と煙を鎮める意志があり、文は純粋で、耕作が実行され、沼地はゆっくりと植えられ、陸志帆の領域を越え、潮流を渡り、池が壊れます。船は荒廃し、偽りの光は夫に託され、Zheは妊娠し、貢物は沈み、洗練されています。 車を止め、商品を着て、すべてのネズミを売り、絵を描きます。写真、龍に餌をやる、家を守る、歌を歌う、韓熙、汚物を洗う、腹を受け入れる、鏡を記録する、邪悪な太った村、危険をこする、鐘を讃える、ハンドルを振る、竹の谷について議論する、混乱を売ります、空の橋、オーバー、道路を急いでください、壁のネットワークは野生の遺跡を傍受し、陰謀を企て、クラスをぶら下げ、繁栄を抑制し、援助に耐え、心配し、福清に戻り、集まり、急いで踊り、ケーブルに遭遇します。顧暁陽湖、釘、壊れた音楽、洪水を避けるためにランプを伸ばす、永平黄、六合界、甘狄桂への答え 誰が西安島を攻撃したのか 賢い卵が子供たちを閉じ、胸を解放しました。イー・ジンタンは疲れた制服型デュ・レレを分離し、胡同峰を採用し、梁を追いかけて消費、アルカリ特別な丘、掘削ブレード、ドラマ、ヒーヒーチェスト、ヘンチン映画、ポスト、苗木、遅い突起を追いかけました。ハサミ、スノーチェーン、漁師、顔世帯、ロスポラボーリーグ、楊宗教サイの旗を買う、シリコンカーボンストックをろ過する、座って蒸している寧静は銃に閉じ込められ、リーは暗い穴で犯罪者を救出し、あなたはソングアークが爆発しました、トゥ・ウェイジンアームバリア茶色の土地、ジャンズンドゥバモがサンポシームに到着警察が汚い氷を選んだカンボジアの口何米プラスチックメール趙明パッドカンズンムは庭のアクセントに注文されました香ばしい肉の兄弟ウーミンホイが服を忘れ、サンリンリンが秀をだましました、ダンドゥの耳を借り、虎のペンを剃り、クンランサのお茶が浅いおまんこに滴り、ルンニアンの袖を大量の濡れたビーズで覆い、女性の母親の紫色のオペラタワーハンマーが彼女の古い外見に衝撃を与え、きれいにして刑務所を切り落とし、容疑者のバシャンプーは激しく訴えました喬唐は、ガラスの横にあるパルプを盗んだ男は誰でも、特に反逆的な家畜捕虜に触れるのを許可したというニュースを漏らしました。さびてガラスを掃く宝新葉建秘密ネット江カルシウムショルダーテンドライスローレールホールミックスお父さんは誘導祝福ケンワインロープ貧しい池ドライバブルバッグラングフィードアルミニウムソフト運河穀物の習慣貿易排泄物の反対側のインクに向かう包括的な傾向。降ろす霧の王冠を妨げるビング街莱北は腸を放射し、幸運を払い、驚愕し、数秒を絞り、吊るすムーランセン、砂糖、神聖な凹みのある陶器、遅い蚕と数十億の瞬間";
  3. $len = mb_strlen($ch_str,"utf-8 ");//漢字の長さ
  4. $str = array ();
  5. for($i=0;$i<4;$i++){
  6. $pos = mt_rand(0,$len-5);//開始位置
  7. $str[] = mb_substr($ch_str,$ pos,1,"utf-8");
  8. }
  9. $authnum_session = implode("",$str);
  10. $_SESSION['authnum_session'] = $authnum_session; //セッションに記録
  11. Header("Content-type: image/PNG");
  12. //画像 そして高い
  13. $image_x=100;
  14. $image_y=50;
  15. $im = imagecreate($image_x,$image_y);
  16. //ここでは、画像の背景色は白です
  17. $bkg = ImageColorAllocate($im ,255,255,255);
  18. //表示されるフォント スタイルには、対応するディレクトリにファイルを配置する必要があります。ファイルがない場合は、ウィンドウのフォント ファイルを探してください。
  19. $fnt = "simhei.ttf";
  20. //画像にいくつかの色を割り当てます
  21. $white=ImageColorAllocate($im,234,185,95);
  22. //画像上に楕円弧を描き、下側の座標点を指定します
  23. imagearc($im, 150, 8, 20, 20, 75, 170, $white);
  24. imagearc($im, 180, 7,50, 30, 75, 175, $white);
  25. // 線分を描画します画像上で、下の座標点を指定します
  26. imageline($im,20,20,180,30,$white);
  27. imageline($im,20,18,170,50,$white);
  28. imageline($im,25,50 ,80,50, $white);
  29. //ランダムなドットの数
  30. $noise_num=3000;
  31. $line_num=50;
  32. //さまざまなカオスなキャラクターの色
  33. $rectangle_color=imagecolorallocate($im,0xAA,0xAA ,0xAA);
  34. $noise_color=imagecolorallocate($im,0x00,0x00,0x00);
  35. $font_color=imagecolorallocate($im,0x00,0x00,0x00);
  36. for($i=0;$i<$noise_num; $i++)
  37. {
  38. //座標点上に単一のピクセルを描画します。この点は上で定義されており、黒です。
  39. //imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
  40. }
  41. for($i=0;$i<$line_num;$i++)
  42. {
  43. $line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
  44. //2 つの座標点の間に線を描きます。色は上記で定義されています
  45. imageline($im,mt_rand(0 , $image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color);
  46. }
  47. for ($i=0;$i<4;$i++ )
  48. {
  49. ImageTTFText($im, rand(18,20), rand(0,20), rand(($image_x/4)*$i+$image_x/100,($image_x/4)*$i+$image_x / 8)、rand($image_y/2+$image_y/10,$image_y/2+$image_y/5)、$font_color、$fnt、$str[$i]);
  50. }
  51. ImagePNG($im) ;
  52. ImageDestroy($im);
  53. ?>
コードをコピー


フォント ファイル: simhei.rarこのサイトからダウンロードするにはここをクリックしてください。

注:

漢字の認証コードは個別に実行され、セッションを取得すると、認証コードとセッションの内容が一致していないことがわかります。ただし、imgタグのsrc属性で漢字検証コードファイルを参照してセッションを取得すると、両者の内容は一致します。

出典: http://www.phpxs.com/post/3083
検証コード、PHP


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。