こんな悩みありませんか?
- ログイン機能を1から自分で作ってみたいけど難しそう…
- 案件で「会員制サイトを作ってほしい」と言われたけど対応できるか不安…
- WordPressを使わずに、PHPだけで作れるようになりたい!
実は、基本的なログイン機能はPHPだけで実装できます。
しかも、ちゃんとセッションを使ったログイン管理、パスワードのハッシュ化など、実案件でも安心して使える形で構築可能なんです。
今回は、PHP初心者でも「会員登録ページ」「ログイン処理」「マイページ」まで作れるようになるための学習記事をご紹介します。
🎬 完成イメージ

📂 ファイル構成(実用的な分割型)
php-login-system/
├─ register.php ← 会員登録フォーム
├─ login.php ← ログインフォーム
├─ mypage.php ← ログイン後の会員ページ
├─ logout.php ← ログアウト処理
├─ config.php ← DB接続設定
└─ db.sql ← 初期テーブル構築用SQL
STEP1 会員登録フォームを作ろう
まずは、ユーザーが「名前」「メールアドレス」「パスワード」を入力して新規登録できる会員登録フォームを作成します。
このフォームでは、以下のような処理を行います
- 入力フォームの設置(HTML)
- データの受信とバリデーション(PHP)
- パスワードの安全な保存(ハッシュ化)
- MySQLへの登録(INSERT文)
✅ HTML+PHPによる会員登録ページ(register.php)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>会員登録</title>
</head>
<body>
<h2>会員登録フォーム</h2>
<form action="register.php" method="post">
<input type="text" name="name" placeholder="名前" required><br>
<input type="email" name="email" placeholder="メールアドレス" required><br>
<input type="password" name="password" placeholder="パスワード" required><br>
<button type="submit">登録する</button>
</form>
</body>
</html>
🔍 解説
- method=”post” により、フォームの内容をPHPに渡してサーバー側で処理します。
- required 属性を使って、ブラウザ上でも必須入力チェックをかけています。
- このフォームの送信先は自分自身(register.php)なので、同じファイル内で登録処理を行います。
✅ PHPで入力を受け取り、データベースに保存
フォーム送信後の処理も同じ register.php に記述します。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
require 'config.php'; // DB接続用ファイル
$name = $_POST['name'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $password]);
echo "登録が完了しました!<br>";
echo '<a href="login.php">ログインはこちら</a>';
}
?>
🔍 解説
- password_hash() を使うことで、平文のパスワードを安全に暗号化して保存できます。
- SQLインジェクション対策として、prepare() + execute() を使用しています。
- 処理後は、ログインページへのリンクを表示して次のステップへ自然につなげます。
ここまでで、会員登録フォームの表示〜データベース保存までが完了しました。
次は、登録済みユーザーがログインできる処理を作っていきましょう!
STEP2 ログインフォームと認証処理を作ろう
会員登録ができたら、次に必要なのは「ログイン」機能です。
ここでは、ユーザーがメールアドレスとパスワードを入力して、自分のアカウントにログインできる仕組みを作ります。
このステップでは以下の処理を実装します:
- ログインフォーム(HTML)
- ユーザー情報の取得と認証(PHP)
- パスワードの照合(password_verify())
- ログイン成功時にセッションを開始
- ログイン失敗時にエラーメッセージを表示
✅ HTML+PHPによるログインページ(login.php)
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ログイン</title>
</head>
<body>
<h2>ログインフォーム</h2>
<form action="login.php" method="post">
<input type="email" name="email" placeholder="メールアドレス" required><br>
<input type="password" name="password" placeholder="パスワード" required><br>
<button type="submit">ログイン</button>
</form>
</body>
</html>
🔍 解説
- 最初に session_start() を必ず呼び出して、ログイン状態を管理できるようにします。
- method=”post” により、フォームの入力内容が login.php に渡されます。
- required 属性で空入力を防止しています。
✅ 入力内容の受信と認証チェック
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
require 'config.php'; // DB接続
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST['email']]);
$user = $stmt->fetch();
if ($user && password_verify($_POST['password'], $user['password'])) {
$_SESSION['user'] = $user['name']; // ログイン成功→セッション開始
header("Location: mypage.php");
exit;
} else {
echo "ログインに失敗しました。メールアドレスまたはパスワードが正しくありません。";
}
}
?>
🔍 解説
- password_verify() を使って、入力されたパスワードとDBに保存されているハッシュを比較します。
- ログイン成功時は $_SESSION[‘user’] にユーザー名を保存します(マイページ等で表示可能)。
- header(“Location: mypage.php”) でログイン後にマイページへリダイレクトします。
これで、ログインページと認証処理の基本部分が完成です。
次のSTEPでは、ログイン状態を保持してマイページを表示する処理を作っていきましょう!
STEP3 マイページの作成とセッションチェック
ログイン後のユーザーが見る専用ページ、いわゆる「マイページ」を作成します。
このページでは、ログイン済みのユーザーだけがアクセスできるように制御します。
✅ 実装の目的
- セッションにユーザー情報があるかを確認
- 未ログイン状態のアクセスを防止(リダイレクト)
- ログイン中のユーザー名を表示
🔧 この先の実装こそが本番です!
STEP1とSTEP2だけでも動くように見えますが、実は本番で役立つのはこの先のパートです。
- ログイン中だけアクセスできるマイページの実装
- ログアウト処理によるセキュアな状態管理
- DB接続と初期テーブル作成による運用前提の構築
など、「実務でちゃんと使える形」に仕上げるためのテクニックが詰まっています。
🚀 このスキルが身につくとどうなるか?
この講座で学ぶ内容は、そのまま案件に応用できる力になります。
- お客様の要望に「できます」と答えられるようになる
- WordPressに頼らず、シンプルな会員機能を自作できる
- パスワードの安全な扱いやセッション管理の知識が身につく
結果として、信頼されるWeb制作者としてのステップアップにもつながります。
✅ この記事でできるようになること
- HTML・PHPを使った会員登録&ログイン機能の基礎構築
- password_hash() と password_verify() による安全な認証
- セッションを用いたログイン状態の管理
- 自分だけのマイページ・ログアウト機能の実装
- データベース設計〜接続までの一連の流れを理解できる
🤖 ChatGPTプロンプト付きで、実装の自動化にも対応!
本記事には、ChatGPTでログイン機能を自動生成できるプロンプト例も収録しています。
- ログイン認証の処理
- ログインユーザーしか見られないマイページ
- パスワードをハッシュ化するPHPコード
といった仕組みを、理解しながら効率よく実装できるようになります。
📝 次回予告|CSVインポート&エクスポート超入門
次回は、業務システムでも頻出のCSVファイルの読み書き処理をやさしく解説します!
- CSVアップロードでDB登録
- DBの内容をCSVでダウンロード
- 文字コードやバリデーションの注意点
など、案件でも重宝される機能を一緒に学びましょう!
✨ 定期購読メンバーシップのご案内!
noteメンバーシップでは、以下の特典をご用意しています!
- あなたのコードを添削&アドバイス(HTML/CSS/JS/PHP)
- Zoom相談での個別サポート(月1回)
- 実務にも使えるテンプレートの先行配布
- ChatGPT活用ノウハウやプロンプト共有
「もっと学びたい」「詰まったときに相談したい」
そんな方は、ぜひメンバー登録をご検討ください!
👉 あなたの「できた!」を、これからも一緒にサポートします。