PHP、MySQL、およびHTMLを使用してログインシステムを作成するチュートリアルです。あなたのウェブサイトは動的であり、訪問者が即座にアクセスできる必要があります。したがって、彼らは可能な限り多くの回数ログインしたいと考えています。ログイン認証システムは、どんなウェブアプリケーションにも非常に一般的です。登録ユーザーがウェブサイトや会員専用機能にアクセスできるようにします。また、ユーザーの情報を保存したい場合にも便利です。ショッピングサイト、教育サイト、会員サイトなど、あらゆる場面に適用されます。
エンタープライズシステム管理とセキュリティ | 無料コースに登録*
*アフィリエイトリンク。詳細はこちらをご覧ください利用規約。
このチュートリアルは5つのパートに分かれています。
目次
- 必要条件
- サインアップシステム
- ログインシステム
- ウェルカムページ
- ログアウトスクリプト
1) PHPログインシステムを構築するための要件
このチュートリアルに成功裏に従い、PHPログインシステムを構築するためには、以下のものを持っていて、知識を持っている必要があります:
- PHPを実行するサーバー
- HTMLとCSSに関する知識と習熟度
- お使いのデバイスにインストールされたMySQLデータベース、およびその使用方法に関する知識
- ログインシステムにすべての適切なセキュリティ対策を追加する能力
これらの基本要件と知識セットをすべて持っている場合、次の手順に進む準備が整っています。PHPログインシステムの構築方法について説明します。
2) サインアップシステムの構築
この部分では、ユーザーがシステムに新しいアカウントを作成できるサインアップシステムを作成します。最初のステップは、HTML登録フォームを作成することです。フォームは非常に簡単に作成できます。名前、メールアドレス、パスワード、確認用パスワードを要求します。メールアドレスはユーザーごとにユニークになります。同じメールアドレスで複数のアカウントを作成することはできません。同じメールアドレスで複数のアカウントを作成しようとするユーザーにエラーメッセージが表示されます。
ステップ1: HTMLで登録フォームを作成
私たちは、以下のコードが含まれたPHPファイルregister.phpを作成します。これは、いくつかの基本的なバリデーションを備えたシンプルなHTMLフォームです。HTMLに詳しくない場合は、多くのオンラインサイトから準備されたhtml5ログインフォームのテンプレートを入手できます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上記のHTMLフォームの出力は次のようになります。
すべての入力フィールドは、デフォルトのHTML属性である"required"
属性を追加することにより必須となります。type="email"
の使用により、ユーザーが提供したメールアドレスが検証され、メールアドレスが無効な場合にエラーが表示されます。登録フォームでは、迅速な開発のためにBootstrapを使用しています。HTMLコードの作成時間を節約したい場合は、プロジェクトにいくつかの無料のHTML5テンプレートを常に使用できます。
ステップ2: MySQLデータベーステーブルの作成
適切な名前の新しいデータベースを作成する必要があります。その後、以下のSQLクエリを実行して、新しく作成したMySQLデータベース内にユーザーテーブルを作成してください。
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
ステップ3: データベース構成ファイルの作成
今、ユーザーテーブルを作成しました。MySQLデータベースに接続するための新しいPHPファイルconfig.phpを作成しましょう。次のコードをconfig.phpファイルに貼り付け、データベース名を作成時に選択したものに変更してください。
ステップ4:セッションファイルの作成
session.phpというファイルを作成しましょう。このファイルではセッションを開始し、ユーザーがすでにログインしているかどうかをチェックし、ログインしている場合はユーザーをwelcome.phpファイルにリダイレクトします。
ステップ5:PHPで登録フォームを作成
最後に、システムにアカウントを登録するためのPHPコードを作成する時がきました。このPHPコードは、同じメールアドレスで既に登録されているユーザーがいる場合にエラーをユーザーに警告します。
register.phpファイルに以下のコードを置き換えてください。
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// パラメータをバインドする(s = 文字列、i = int、b = blob、など)、この場合、ユーザー名は文字列なので "s" を使用します
$query->bind_param('s', $email);
$query->execute();
// 結果を保存して、アカウントがデータベースに存在するかどうかを確認できるようにします。
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// パスワードを検証
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// 確認用パスワードを検証
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// DB接続を閉じる
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
ユーザーが送信ボタンをクリックすると、$_SERVER["REQUEST_METHOD"] == "POST"
と$_POST['submit']
変数が設定されているかどうかをチェックします。セキュリティ上の懸念から、パスワードをデータベースに平文で保存しないことを常にお勧めしています。私たちはpassword_hash()
関数を使用して、強力なワンウェイハッシュアルゴリズムを使用して新しいパスワードハッシュを作成しました。
上記のPHPスクリプトは、同じメールアドレスで登録されているユーザーがいないことを検証し、パスワードも検証します。検証が確認された後、ユーザーが登録に成功したことを通知し、ユーザーが提供した情報をユーザーテーブルに保存します。
3)ログインシステムの構築
この部分では、ログインフォームを作成してユーザーがシステムの制限されたエリアにアクセスできるようにします。制限されたエリアは、次の部分でカバーする歓迎ページです。
ステップ1: HTMLでログインフォームを作成
以下はHTMLでのログインフォームです。ファイル名をlogin.phpとして貼り付けてください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上記のコードの出力はこのようになります
ステップ2: PHPでログインシステムを作成
HTMLでログインフォームを作成した後、ログイン資格情報を検証するコードを書きます。フォームを送信すると、メールアドレスとパスワードが入力されているかをチェックします。入力されていれば、メールアドレスとパスワードを基にデータベース内のレコードを検索するSELECT
クエリを実行します。レコードが見つかった場合は、"userID"
をセッションに保存し、ユーザーはwelcome.phpファイルにリダイレクトされます。見つからない場合は、ユーザーにエラーメッセージが通知されます。
次のコードをlogin.phpファイルに置き換えましょう。
Please enter email.';
}
// パスワードが空かどうかを検証
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// ユーザーをウェルカムページにリダイレクト
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// 接続を閉じる
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) ウェルカムページの作成
以下はwelcome.phpファイルのコードです。ログインプロセスが成功した後にユーザーがこのページにリダイレクトされます。ページの先頭にいくつかのコードを追加して、ユーザーがログインしていない場合はログインページにリダイレクトします。
welcome.phpファイルを作成し、以下のコードを貼り付けましょう。
Welcome
Hello, . Welcome to demo site.
5) ログアウトスクリプト
最後に、logout.phpファイルを作成し、以下のコードを貼り付けましょう。
ユーザーがログアウトリンクをクリックすると、上記のスクリプトがセッションを破棄し、ユーザーをlogin.phpファイルにリダイレクトします。
結論
このチュートリアルでは、HTML、PHP、およびMySQLを使用してログインシステムを作成する方法を説明しました。ログインシステムを作成する方法がわかれば、パスワードのリセット、パスワードの忘れ、メールアドレスの確認、ユーザープロフィールの編集などの他の機能を追加できます。
Source:
https://dzone.com/articles/create-a-login-system-using-php