ホームページ > バックエンド開発 > PHPの問題 > PHPを使ってログインページのジャンプページを作る方法

PHPを使ってログインページのジャンプページを作る方法

PHPz
リリース: 2023-04-03 15:16:02
オリジナル
1614 人が閲覧しました

Web サイト開発の分野では、ユーザー ログイン システムは非常に一般的な要件です。 Web サイトにおけるユーザー ログイン システムの中核となる部分は、ログイン ページ、ユーザー認証、ジャンプ ページです。この記事では、PHP を使用して基本的なログイン ページを実装し、そのページにジャンプしてユーザーのセッション ステータスを表示する方法を紹介します。

この記事では、login.php、authenticate.php、dashboard.php の 3 つの基本ファイルを使用します。

  1. login.php ファイル

ログイン ページは、ユーザーがシステムにログインするためのエントリ ポイントです。このページをlogin.phpファイルに実装します。

<?php
session_start();
if (isset($_SESSION[&#39;user_id&#39;])) {
    header(&#39;Location: dashboard.php&#39;);
    exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
    <meta charset="utf-8">
</head>
<body>
    <h1>Login</h1>
    <form method="post" action="authenticate.php">
        <label for="user_name">Username:</label>
        <input type="text" name="user_name"><br>
        <label for="password">Password:</label>
        <input type="password" name="password"><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>
ログイン後にコピー

上記のコードは、単純な HTML ページを示しています。これには、ユーザーがユーザー名とパスワードを入力できるフォームが含まれています。フォームの送信は、authenticate.php ページに送信されます。このページは、ユーザーが入力したデータとデータベースに保存されているデータを比較して、ユーザーが保護されたリソースにアクセスする権限を持っているかどうかを確認します。

このコードでは、session_start() 関数を使用して新しいセッションも開始します。ユーザーがすでにログインしている場合、session_start() 関数はユーザー ID が現在のセッションに存在するかどうかを確認し、存在する場合は、dashboard.php ページに直接リダイレクトします。

  1. authenticate.php ファイル

authenticate.php ファイルは、ユーザーの認証プロセスを担当します。基本的に、データベースに保存されているユーザーの資格情報と、ユーザーがログイン ページで提供した資格情報が比較されます。一致する場合、新しいセッションが作成され、ユーザー ID が $_SESSION['user_id'] に保存されます。その後、dashboard.php ページにリダイレクトされます。

この例では、ユーザー名とパスワードが users という名前のデータベース テーブルにすでに格納されていると仮定します。

<?php
session_start();
if (isset($_SESSION[&#39;user_id&#39;])) {
    header(&#39;Location: dashboard.php&#39;);
    exit();
}

if (empty($_POST[&#39;user_name&#39;]) || empty($_POST[&#39;password&#39;])) {
    header(&#39;Location: login.php&#39;);
    exit();
}

$user_name = $_POST[&#39;user_name&#39;];
$password = $_POST[&#39;password&#39;];

$db = new PDO(&#39;mysql:host=localhost;dbname=mydatabase;charset=utf8mb4&#39;, &#39;username&#39;, &#39;password&#39;);
$stmt = $db->prepare("SELECT id FROM users WHERE user_name=:user_name AND password=:password");
$stmt->execute(array(':user_name' => $user_name, ':password' => $password));
$user = $stmt->fetch();

if (!$user) {
    header('Location: login.php');
    exit();
}

$_SESSION['user_id'] = $user['id'];
header('Location: dashboard.php');
ログイン後にコピー

上記のコードの実行フローは次のとおりです:

まず、$_SESSION['user_id'] の値を確認します。存在する場合、ユーザーがログインしていることを意味します。ログインし、再度ログインしようとしています。この場合、dashboard.php ページにリダイレクトします。

次に、ユーザーがログイン フォームにユーザー名とパスワードを入力したかどうかを確認します。そうでない場合、ログインプロセスは無効とみなされます。この場合、login.php ページにリダイレクトします。

次に、ユーザーが提供したユーザー名とパスワードをデータベースで検索します。 PDO PHP 拡張機能を使用して MySQL データベースに接続します。指定されたユーザー名とパスワードについて、対応する行が users テーブルに存在するかどうかを確認します。存在する場合、ユーザーは認証されます。

最後に、新しい $_SESSION['user_id'] 変数を作成します。この変数はユーザーの ID を保存し、dashboard.php ページにリダイレクトします。

  1. dashboard.php ファイル

dashboard.php ファイルには、ユーザーのセッション ステータスが表示されます。ユーザーが認証されている場合、dashboard.php ページは $_SESSION['user_id'] 変数を読み取り、ウェルカム メッセージを表示します。

<?php
session_start();
if (!isset($_SESSION[&#39;user_id&#39;])) {
    header(&#39;Location: login.php&#39;);
    exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Dashboard</title>
    <meta charset="utf-8">
</head>
<body>
    <h1>Dashboard</h1>
    <p>Welcome!</p>
</body>
</html>
ログイン後にコピー

上記のコードの実行フローは次のとおりです:

まず、$_SESSION['user_id'] 変数の値を確認します。変数が存在しない場合は、それを意味します。ユーザーが認証されていないこと。この場合、login.php ページにリダイレクトします。

次に、ユーザーが認証され、保護されたリソースにアクセスできることを示すウェルカム メッセージが表示されます。

この記事では、PHP を使用して基本的なログイン システムを実装する方法を学習しました。このシステムは、基本的な HTML および PHP 構文に加え、MySQL および PDO 拡張機能を使用します。この例を通じて、HTML フォームの作成、MySQL データベース内のデータの読み取りと書き込み、新しいセッションの作成、およびセッション内の変数の検査方法を学習しました。これらのスキルはすべて、より複雑な Web アプリケーションを構築するために必要です。

以上がPHPを使ってログインページのジャンプページを作る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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