この記事では、PHPで認証コードを実装する手順と、サーバーサイドの認証コードを紹介します。参考になる内容です。困っている方は参考にしてください。お役に立てれば幸いです。
検証コードとは: 検証コードは、ユーザーがコンピュータであるか人間であるかを識別する公開プログラムです。
検証コードを作成するには 4 つの手順が必要です
1: ベース マップの生成
2: 検証コンテンツの生成
##3: 検証コード コンテンツの生成##4: 検証コンテンツの検証
#最初のステップバイステップ、最初のステップ、ベースマップの生成:
目標: php を使用して 100*30 サイズの画像を生成します
メソッド: imagecreatetruecolor($width,$height) ;注意事項: GD 拡張機能への依存画像を出力する前に、その画像のヘッダー情報を事前に出力する必要があります-->>>>ネイティブ http ヘッダーを送信このメソッドはデフォルトで黒の背景を出力しますimagecreatetruecolor() $image で表される新しい True Color イメージを作成します。後でよく使用されます。True Color を作成しているため、次に、imagecolorallocate(キャンバス、3 色のパラメータを選択)imagefill を埋めるために何を使用しますか (キャンバス、開始位置、色を選択)これでベース画像が生成されました。いくつかの要素を追加してみましょう$image = imagecreatetruecolor(100,30)$bgcolor = imagecolorallocate($image,255,255,255);imagefill($image,0,0,$bgcolor)
ステップ 2: 検証コンテンツの生成
目標: 数値 (サイズ、開始位置、内容、色)
メソッド: ループとイメージ文字列関数を使用して水平方向に文字の行を生成します。文字列 (イメージ文字列内のパラメーターの位置に従って入力します)注: フォント サイズを制御します。N/ nfor($i=0;$ここでは、imagestring のパラメータに基づいて変数を定義し、変数に値を代入しますimagestring($image,$fontsze,$x,$y,$fontcontent,$fontcolor)}
$fontcontent = substr($data,rand(0, strlen($data)),1);
数値と文字の組み合わせが必要な場合、substr メソッドは文字列の部分文字列を返すことを意味します。返された文字列はランダムにデータを取得します。長さは最大 1 です。
3 番目のステップは、検証コードのコンテンツを生成することです#目標: 干渉要素を検証コードに追加します。干渉要素は点または線です
メソッド: imagesetpixel point、imageline-line (リソース ファイル、開始位置、色)
注意事項: 干渉要素ゲストを過大評価しないように、必ず色と量を制御してください。
Step 4: セッションを通じて検証情報を保存する
目標: ユーザーが検証コードを入力した後の検証を容易にするためにサーバー側で記録する
メソッド: session_start()
注: session_start() はスクリプトの先頭にある必要があります
複数のサービスの場合、セッション管理の一元管理を考慮する必要があります
imagepng 画像をブラウザまたはファイルに png で出力しますformat
imagedestroy 画像を破棄する良い習慣
これらのメソッドでは、多くのリソースが使用されます。つまり、各メソッドには $image Canvas
<php? $image = imagecreatetruecolor( 100,30); $bgcolor = imagecolorallocate($image,255,255,255); imagefill($image,0,0,$bgcolor); // for($i=0;$i<4;$i++){ // $fontsize = 6; // $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); // $fontcontent = rand(0,9); // $x = ($i*100/4)+rand(5,10); // $y = rand(5,10); // imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor ); // } $captch_code= ''; for($i=0 ;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data = 'abcdefhijkimnpqrstuvwxy345678'; $fontcontent = substr($data,rand(0,strlen($data)),1); $captch_code.=$fontcontent; $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor ); } $SESSION['authcode']=$captch_code; for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor); } for($i=0;$i<3;$i++){ $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220)); imageline($image,rand(1,99),rand(1,99),rand(1,99),rand(1,99),$pointcolor); } header('content-type: image/png'); imagepng( $image); //end; imagedestroy( $iamge); ?>
プロダクションが必要です検証コードはここで終了です。次のステップはサーバー側で検証を実行することです
src="captcha-2.php?r=<?php echo rand();?>" 对于这个r 找了资料,没什么大用
彼はここでもこれを使用しているので、そうします
大文字と小文字を考慮して、ここでは strto lower() を使用して、ユーザーが入力したすべての大文字を小文字に変換します。
<?php if(isset($_REQUEST['code'])) { session_start(); if (strtolower($_REQUEST['code'])==$_SESSION['code']) { header('Content-type: text/html; charset=UTF8'); echo '<h1 color="#0000CC">输入正确</h1>'; } else{ header('Content-type: text/html; charset=UTF8'); echo '<h1 color="#CC0000"><b>输入错误</b></h1>'; } exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>确认验证</title> </head> <body> <form method="post" action="form.php"> <p>验证码图片:<img border="1" src="captcha-2.php?r=<?php echo rand();?>" width="100" height="30"> </p> <p>请输入图片的内容:<input type="text" name="code" value=""/></p> <p><input type="submit" value="提交" style="padding:6px 20px;"></p> </form> </body> </html>
おすすめ関連記事:
PHP の使い方txt ファイルの内容を配列に変換し、指定された内容を行番号で取得します (例)PHP は経度と緯度を使用して 2 点間の距離を計算する方法 (純粋なコード)
ディレクトリとディレクトリ内のすべてのファイルを削除する方法のphpコード例
以上が検証コードとサーバー側検証コードを実装するための PHP 手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。