ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して、電子メール検証機能を備えた安全なログインおよび登録システムを作成するにはどうすればよいですか?

PHP を使用して、電子メール検証機能を備えた安全なログインおよび登録システムを作成するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-08-18 11:57:091458ブラウズ

PHP を使用して、電子メール検証機能を備えた安全なログインおよび登録システムを作成するにはどうすればよいですか?

PHP を使用して、電子メール検証機能を備えた安全なログインおよび登録システムを作成するにはどうすればよいですか?

インターネット時代において、オンライン Web サイトやアプリケーションに関してユーザーが最も懸念するのはセキュリティです。ユーザーのアカウントと情報のセキュリティを保護するには、メール認証などのセキュリティ機能をログインおよび登録システムに追加する必要があります。この記事では、PHP を使用してメール認証機能を備えた安全なログイン登録システムを作成する方法を紹介します。

  1. データベースの作成

まず、ユーザー情報を保存するデータベースを作成する必要があります。 MySQL データベースを使用して、ID、ユーザー名、電子メール、パスワード、検証済みのフィールドを含む「users」という名前のデータ テーブルを作成します。

CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
verified INT(1) NOT NULL DEFAULT 0
);
  1. 登録関数

登録関数の PHP コードを記述します。ユーザーが登録フォームに記入して送信した後、ユーザーの入力を確認し、ユーザーの情報をデータベースに保存する必要があります。

<?php
// 获取表单输入数据
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];

// 验证用户输入

// 检查用户名是否已被注册

// 检查邮箱格式是否正确

// 生成一个随机验证码字符串
$verificationCode = bin2hex(random_bytes(16));

// 将用户信息保存到数据库
$query = "INSERT INTO users (username, email, password, verification_code) VALUES ('$username', '$email', '$password', '$verificationCode')";
mysqli_query($connection, $query);

// 发送验证邮件
$to = $email;
$subject = '账号激活邮件';
$message = '请点击以下链接激活您的账号:https://example.com/verify.php?code=' . $verificationCode;
$headers = 'From: noreply@example.com' . "
" .
'Reply-To: noreply@example.com' . "
" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

// 提示用户验证邮件已发送
echo '注册成功!请检查您的邮箱并点击验证链接进行账号激活。';
?>
  1. 検証関数

検証関数用の PHP コードを記述します。ユーザーが検証リンクをクリックすると、リンク内の検証コードが有効かどうかを確認し、データベース内のユーザーの「検証済み」フィールドを 1 に更新して、アカウントが検証されたことを示す必要があります。

<?php
$verificationCode = $_GET['code'];

// 在数据库中查找匹配的验证代码
$query = "SELECT * FROM users WHERE verification_code = '$verificationCode' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的验证代码,更新用户的“verified”字段
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $userId = $user['id'];

    $updateQuery = "UPDATE users SET verified = 1 WHERE id = '$userId'";
    mysqli_query($connection, $updateQuery);

    echo '邮箱验证成功!您可以登录了。';
} else {
    echo '无效的验证链接。';
}
?>
  1. ログイン関数

ログイン関数の PHP コードを記述します。ユーザーがログイン フォームに記入して送信した後、ユーザーが入力した電子メールとパスワードがデータベース内のレコードと一致するかどうかを確認する必要があります。

<?php
$email = $_POST['email'];
$password = $_POST['password'];

// 在数据库中查找匹配的邮箱和密码
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的记录,表示登录成功
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $verified = $user['verified'];

    if ($verified) {
        echo '登录成功!';
    } else {
        echo '账号尚未激活,请检查您的邮箱并点击验证链接进行账号激活。';
    }
} else {
    echo '邮箱或密码输入错误。';
}
?>

上記の手順により、PHP を使用して電子メール検証機能を備えた安全なログイン登録システムを作成することができました。ユーザーは登録時に有効な電子メール アドレスを入力し、確認電子メール内のリンクをクリックしてアカウントをアクティブにする必要があります。この種のシステムは、ユーザーのアカウントと情報のセキュリティを効果的に確保できます。ユーザーがログインすると、より良いユーザーエクスペリエンスを提供するためにアカウントが認証されているかどうかもチェックされます。

もちろん、実際のアプリケーションでは、ユーザー情報の安全性と信頼性を高めるために、パスワードの暗号化や安全な終了などの機能を追加するなど、システムをさらに改善する必要があります。しかし、この基本的なログイン登録システムはすでに優れた出発点を提供しています。

この記事が、PHP を使用して電子メール検証機能を備えた安全なログインおよび登録システムを作成する方法を理解するのに役立つことを願っています。 Web サイトやアプリケーションのセキュリティを強化することは、ユーザーとデータを保護するために重要であり、その知識を実践に有効に活用していただければ幸いです。

以上がPHP を使用して、電子メール検証機能を備えた安全なログインおよび登録システムを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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