ネットワーク技術の発展に伴い、Web サイトのセキュリティ問題はますます注目を集めています。 Web サイト開発者として、ユーザーのアカウント情報と個人のプライバシーのセキュリティを確保する必要があります。その中で、ユーザーのログインプロセスのセキュリティも非常に重要です。ユーザー アカウントのセキュリティを保護するために、ユーザーのログイン ページに確認コード機能を追加する必要があります。この記事では、PHPを使用してユーザーログイン認証コード機能を実装する方法を紹介します。
検証コードは人間とコンピューター プログラムを区別するテクノロジーであり、悪意のある攻撃者が自動プログラムを使用して Web サイトに攻撃を仕掛けることを効果的に防ぐことができます。一般的な確認コードには、数字、文字、グラフィックなどのさまざまな形式があります。ユーザーは、ログイン時に確認コードを正しく入力して、ユーザーの身元を確認する必要があります。
Web サイト開発では、通常、悪意のあるユーザーが総当たりクラッキングやその他の方法でシステム権限を取得するのを防ぐために、ログイン システムに検証コードが埋め込まれます。同時に、検証コードは、悪意のあるユーザーが自動プログラムを使用してデータを攻撃したり消去したりすることを防ぐこともできます。
PHP では、GD 拡張ライブラリを使用して、数字、文字、グラフィックなどのさまざまな検証コードを描画できます。以下では、数値とアルファベットの検証コードを例にして、PHP で検証コードを作成する方法を紹介します。
2.1. デジタル検証コードの生成
デジタル検証コードは、検証コードを作成する最も基本的な形式であり、最も一般的な形式でもあります。数値検証コードは、GD ライブラリの関数を使用して生成できます。以下は、ランダムな 4 桁の確認コードを生成するサンプル コードです。
<?php session_start(); // 开启 session header('Content-type: image/png'); // 设置 Content-type $im = imagecreatetruecolor(80, 40); // 创建一个宽为80,高为40的验证码背景图 $bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色 imagefill($im, 0, 0, $bgColor); // 绘制背景 $code = rand(1000, 9999); // 随机生成一个 4 位数的验证码 $_SESSION['code'] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用 $textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色 imagestring($im, 5, 20, 12, $code, $textColor); // 绘制验证码 imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
分析:
2.2. 英数字混合検証コードの生成
数字検証コードは攻撃に対して脆弱であるため、セキュリティを向上させるために、英数字混合検証コード形式を使用できます。同様に、PHP の GD ライブラリを使用して英数字のキャプチャを描画できます。以下は、ランダムな 4 桁の英数字の確認コードを生成するサンプル コードです。
<?php session_start(); // 开启 session header('Content-type: image/png'); // 设置 Content-type $im = imagecreatetruecolor(100, 40); // 创建一个宽为100,高为40的验证码背景图 $bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色 imagefill($im, 0, 0, $bgColor); // 绘制背景 // 字母数字集 $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $len = strlen($chars); $code = ''; for ($i = 0; $i < 4; $i++) { $code .= $chars[rand(0, $len-1)]; } $_SESSION['code'] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用 $textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色 // 使用随机字体和位置,绘制验证码 for ($i = 0; $i < 4; $i++) { $font = rand(1, 5); // 随机选择字体 $angle = rand(-20, 20); // 随机旋转角度 $x = $i * 20 + rand(0, 10); // 规定较小的x坐标值和x步进值,y的值也可以自定义 $y = rand(20, 30); $fontColor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255)); $char = substr($code, $i, 1); imagettftext($im, 18, $angle, $x, $y, $fontColor, __DIR__.'/font'.$font.'.ttf', $char); } imagepng($im); // 输出 PNG 图片 imagedestroy($im); // 释放内存 ?>
分析:
確認コードを生成した後は、ユーザー ログインに確認コードを生成するプログラムを導入するだけです。ページ。ユーザーのアカウントとパスワード情報の入力を確認すると同時に、ユーザーが入力した確認コードが正しいかどうかも確認する必要があります。
以下は、ユーザー ログイン ページのサンプル コードです。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="login.php" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br> <label for="code">Code:</label> <input type="text" id="code" name="code"><br> <img src="captcha.php" alt="Captcha"> <button type="submit">Submit</button> </form> </body> </html>
通常のユーザーログインページと同様に、アカウントとパスワードの入力中に認証コード部分を追加し、認証コード生成プログラムcaptcha.phpを導入しました。ユーザーがアカウント番号、パスワード、検証コードを入力した後、送信ボタンをクリックすると、システムは検証のためにユーザーが入力した情報をlogin.phpに送信します。
以下は、login.php 内のコードです。これは、ユーザーが入力したアカウント番号、パスワード、確認コードの情報が正しいかどうかを確認するために使用されます。
<?php session_start(); $username = $_POST['username']; $password = $_POST['password']; $code = $_POST['code']; // 验证用户输入的验证码是否正确 if (strtolower($code) !== strtolower($_SESSION['code'])) { echo 'Invalid Code.'; exit; } // 验证用户输入的账号和密码是否正确 if ($username === 'admin' && $password === 'admin') { echo 'Login Successfully.'; } else { echo 'Invalid Username or Password.'; } ?>
login.php では、まずユーザーが入力した確認コードが正しいかどうかを検証します。検証コードが一致しない場合、ユーザーは無効な検証コードを入力してログイン検証を終了するように求められます。それ以外の場合は、ユーザーが入力したアカウントとパスワードの情報が正しいかどうかを確認します。正しい場合は、ユーザーは正常にログインするように求められます。そうでない場合は、ユーザー名またはパスワードが無効であることを示すプロンプトが表示されます。
この記事では、PHP および GD ライブラリを使用して数字と英数字の混合検証コードを生成し、Web サイトで検証コードを使用してユーザーのログインのセキュリティを確保する方法を紹介します。情報。この記事を学習することで、悪意のあるユーザーが自動プログラムを使用して Web サイトを攻撃するのを防ぎ、Web サイト ユーザーのアカウントと個人のプライバシーを保護する方法を学びました。
以上がPHPを使用してユーザーログイン認証コード機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。