ホームページ > バックエンド開発 > PHPチュートリアル > 5つの簡単なステップでPHPを備えた強力なログインシステムを作成する

5つの簡単なステップでPHPを備えた強力なログインシステムを作成する

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-08 11:19:08
オリジナル
301 人が閲覧しました

Create a Powerful Login System with PHP in Five Easy Steps

このチュートリアルは、PHPを使用して強力なログインシステムを構築するように導きます!プロセス全体を段階的にガイドし、ウェブサイト用の安全で効率的なログインシステムをすばやく作成できるようにします。

コアポイント:

  • このチュートリアルは、環境のセットアップ、データベースとテーブルの作成、登録とログインフォームの構築、ログインシステムセキュリティの強化など、PHPとMySQLを使用して強力なログインシステムを作成するための段階的なガイドを提供します。
  • 登録フォームはHTMLとPHPを使用して構築され、フォームデータが処理され、データベースのユーザーテーブルに挿入されます。
  • システムにログインするためのセキュリティ対策には、HTTPSを使用したデータの暗号化、トークンを使用してCSRF保護を有効にし、失敗したログイン試行の数の制限、機密情報の個別に保存され、ソフトウェアを定期的に更新して最新のセキュリティパッチを適用することが含まれます。
  • このチュートリアルは、SQLインジェクション攻撃の防止、パスワードハッシュ、「覚えている私」機能の実装、パスワードリセット、ユーザー入力検証、ユーザーロール、2因子認証、ソーシャルログイン、ソーシャルログイン、ソーシャルログインなど、PHPログインシステムの強化に関する一般的な質問にも回答します。アカウントロックおよびユーザー登録機能。

PHPおよびログインシステム

PHPは、動的なWebページを作成できる人気のあるサーバー側のスクリプト言語です。 PHPの最も一般的な用途の1つは、Webサイトのログインシステムを作成することです。

ログインシステムは、機密情報を保護し、ユーザーにパーソナライズされたコンテンツを提供するために不可欠です。このチュートリアルでは、PHPとMySQLを使用して、シンプルで強力なログインシステムを作成します。

次の手順について説明します

環境設定
  • データベースとテーブルの作成
  • 登録フォームを作成します
  • ログインフォームをビルド
  • ログインシステムを強化します
環境環境

開始する前に、次のソフトウェアがコンピューターにインストールされていることを確認してください。

Webサーバー(Apacheなど)

    php
  • mysql
  • XAMPPやWAMPなどのパッケージを使用して、これらすべてのコンポーネントを一度にインストールできます。
インストールが完了したら、Webサーバー(ApacheのHTDOCなど)のルートディレクトリに新しいフォルダーを作成し、Login_Systemという名前を付けます。

データベースとテーブルを作成

最初に、ユーザー情報を保存するためにデータベースとテーブルを作成する必要があります。

MySQL管理ツール(PHPMyAdminなど)を開き、login_systemという新しいデータベースを作成します。

次に、構造を持つユーザーと呼ばれるテーブルを作成します。

このテーブルは、ユーザーのID、ユーザー名、電子メール、パスワード、およびアカウント作成日を保存します。

CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(50) NOT NULL,
    `email` varchar(100) NOT NULL,
    `password` varchar(255) NOT NULL,
    `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`),
    UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ログイン後にコピー
ログイン後にコピー
登録フォームを作成

次に、ユーザーがアカウントに登録できるようにする登録フォームを作成しましょう。 login_systemフォルダーにregister.phpという名前の新しいファイルを作成し、次のコードを追加します。

CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(50) NOT NULL,
    `email` varchar(100) NOT NULL,
    `password` varchar(255) NOT NULL,
    `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`),
    UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ログイン後にコピー
ログイン後にコピー

このコードは、ユーザー名、電子メール、およびパスワードフィールドを備えた単純なHTMLフォームを作成します。フォームのアクションプロパティは登録するように設定されています。これは、フォームデータが処理のために同じファイルに送信されることを意味します。

さあ、PHPコードを追加してフォームデータを処理し、ユーザーテーブルに挿入しましょう。

register.phpファイルの先頭で、宣言の前に次のコードを追加します:

<form action="register.php" method="post">
  <label for="username">用户名:</label>
  <input id="username" name="username" required type="text" />
  <label for="email">邮箱:</label>
  <input id="email" name="email" required type="email" />
  <label for="password">密码:</label>
  <input id="password" name="password" required type="password" />
  <input name="register" type="submit" value="注册" />
</form>
ログイン後にコピー
このコードは、フォームが送信されたかどうかをチェックし、データベースに接続し、ユーザー情報をユーザーテーブルに挿入します。パスワードは、PHPの組み込みパスワード_hash関数を使用してセキュリティを強化します。

ログインフォームをビルド

次に、ユーザーがアカウントにログインできるログインフォームを作成しましょう。 login_systemフォルダーにlogin.phpという名前の新しいファイルを作成し、次のコードを追加します。

このコードは、ユーザー名とパスワードフィールドを備えた単純なHTMLフォームを作成します。フォームのアクションプロパティはlogin.phpに設定されています。これは、フォームデータが処理のために同じファイルに送信されることを意味します。
<?php
if (isset($_POST['register'])) {

    // 连接数据库
    $mysqli = new mysqli("localhost", "username", "password", "login_system");

    // 检查错误
    if ($mysqli->connect_error) {
        die("连接失败: " . $mysqli->connect_error);
    }

    // 准备并绑定SQL语句
    $stmt = $mysqli->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $username, $email, $password);

    // 获取表单数据
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];

    // 对密码进行哈希处理
    $password = password_hash($password, PASSWORD_DEFAULT);

    // 执行SQL语句
    if ($stmt->execute()) {
        echo "新账户创建成功!";
    } else {
        echo "错误: " . $stmt->error;
    }

    // 关闭连接
    $stmt->close();
    $mysqli->close();
}
?>
ログイン後にコピー

さあ、PHPコードを追加してフォームデータを処理し、ユーザーを確認しましょう。 login.phpファイルの開始時に、宣言の前に次のコードを追加します:

このコードは、フォームが送信され、データベースに接続されているかどうかをチェックし、ユーザー情報をユーザーテーブルから取得します。パスワードは、PHPの組み込みPassword_verify関数を使用して検証されます。ログインが成功した場合、ユーザーはdashboard.phpページにリダイレクトされます。

<form action="login.php" method="post">
  <label for="username">用户名:</label>
  <input id="username" name="username" required type="text" />
  <label for="password">密码:</label>
  <input id="password" name="password" required type="password" />
  <input name="login" type="submit" value="登录" />
</form>
ログイン後にコピー

ログインシステムを強化します

ログインシステムをさらに保護するには、次のベストプラクティスを実装する必要があります。

httpsを使用して、クライアントとサーバーの間に送信されたデータを暗号化します。

トークンを使用して、CSRF(クロスサイトリクエスト偽造)保護を実装します。
  • ブルートフォース攻撃を防ぐために失敗したログイン試行の数を制限します。
  • Webサーバードキュメントのルートディレクトリの外側にある別の構成ファイルに、機密情報(データベース資格情報など)を保存します。
  • PHP、MySQL、Webサーバーなどのソフトウェアを定期的に更新して、最新のセキュリティパッチを適用します。
  • 結論

おめでとうございます!強力なログインシステムを正常に作成し、ログインシステムを安全に強化しました。

FAQ(FAQ)SQLインジェクション攻撃からPHPログインシステムを保護する方法は?

SQLインジェクションは、アプリケーションのデータベースレイヤーを悪用する一般的なセキュリティの脆弱性です。 PHPログインシステムをSQLインジェクション攻撃から保護するには、事前に処理されたステートメントとパラメーター化されたクエリを使用する必要があります。これらは、パラメーターに関係なく、データベースサーバーに送信および解析されるSQLステートメントです。これにより、攻撃者は悪意のあるSQLを注入できません。 PDOとMySqliの両方が、プレの前のステートメントをサポートしています。

PHPログインシステムにパスワードハッシュを実装する方法は?

パスワードハッシュは、ログインシステムの重要なセキュリティの側面です。 PHPは、パスワードのハッシュと検証用の組み込み関数を提供します。 password_hash()関数を使用してパスワードハッシュを作成し、password_verify()関数を使用して、パスワードがハッシュ値と一致するかどうかを確認できます。単純なテキストパスワードではなく、データベースにハッシュされたパスワードを常に保存してください。

私のPHPログインシステムに「私を覚えている」機能を実装する方法は?

PHPでCookieを使用して「Memember Me」関数を実装できます。ユーザーが「私を覚えておいて」オプションを選択してログインすると、有効期限が長くなるとクッキーを設定できます。次回ユーザーがウェブサイトにアクセスしたときに、このCookieが存在するかどうかを確認し、自動的にログインできます。ただし、潜在的なセキュリティリスクを防ぐために、Cookieを安全に処理することを忘れないでください。

PHPログインシステムにパスワードリセット機能を実装する方法は?

パスワードリセット機能には、通常、パスワードリセットページを指す一意の1回限りのリンクを含む電子メールをユーザーに送信します。 PHPMailerは、PHPから電子メールを送信するための人気のライブラリです。リセットリンクを作成するときは、パスワードリセットリクエストの検証に使用できるトークンを含める必要があります。このトークンは安全に保管し、一定期間後に期限切れにする必要があります。

PHPログインシステムでユーザー入力を確認する方法は?

ユーザー入力検証は、データ形式のエラーとSQLインジェクション攻撃を防ぐために重要です。 PHPは、filter_var()などの入力検証に多くの関数を提供します。この関数のさまざまなオプションを使用して、さまざまな種類のデータを検証およびクリーニングできます。たとえば、filter_validate_emailを使用して、ユーザー入力が有効な電子メールアドレスであるかどうかを確認できます。

PHPログインシステムにユーザーの役割を実装する方法は?

データベース内のユーザーテーブルに「役割」列を追加することにより、ユーザーロールを実装できます。各役割には異なる権限があり、特定のアクションを実行できるようにする前に、ユーザーの役割を確認できます。たとえば、「管理者」と「ユーザー」の役割があり、「管理者」ユーザーのみが他のユーザーを削除できるようにする場合があります。

PHPログインシステムに2要素認証を実装する方法は?

2因子認証(2FA)は、ログインシステムにセキュリティの追加レイヤーを追加します。 SMSまたは電子メールを介してコードを送信したり、専用の2FAアプリケーションを使用したりするなど、2FAを実装するにはいくつかの方法があります。 PHPライブラリ(PHPGangsta/GoogleAuthenticatorなど)は、ログインシステムに2FAを実装するのに役立ちます。

PHPログインシステムにソーシャルログインを実装する方法は?

ソーシャルログインにより、ユーザーはFacebookやGoogleなどのソーシャルメディアアカウントを使用してログインできます。これは、OAuthプロトコルを使用して実装できます。 PHPライブラリ(Hybridauthなど)は、ソーシャルログインを実装するプロセスを簡素化できます。

PHPログインシステムにアカウントロックを実装する方法は?

アカウントロックは、失敗したログイン試行の数を追跡することで実現できます。一定数の失敗した試行の後、アカウントをロックして、一定期間にわたってさらにログインの試行を防ぐことができます。これは、ブルートフォース攻撃を防ぐのに役立ちます。

PHPログインシステムにユーザー登録を実装する方法は?

ユーザー登録には、ユーザーがユーザー名、電子メール、パスワードなどの詳細を入力できるフォームを作成することが含まれます。ユーザーがフォームを送信したら、入力を確認し、パスワードをハッシュし、ユーザーの詳細をデータベースに保存できます。 PHPは、入力検証の場合はfilter_var()など、ユーザーの登録を支援する多くの機能を提供し、パスワードハッシュの場合はpassword_hash()を提供します。

以上が5つの簡単なステップでPHPを備えた強力なログインシステムを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート