今回はPHPを使ってユーザー認証システムを作る方法を説明します。ユーザー認証システムは、ウェブサイトやアプリでユーザーを特定し、情報を保護するためにとても大切です。
まずは、PHPを使うための環境を整えましょう。以下のものを準備してください。
次に、ユーザー情報を保存するためのデータベースを作成します。MySQLを使って、以下のSQL文を実行してください。
CREATE DATABASE my_database;
USE my_database;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL
);
次は、ユーザーが新しく登録できるフォームを作ります。以下のコードを新しいファイル(例えばregister.php)に保存してください。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
// データベース接続
$pdo = new PDO('mysql:host=localhost;dbname=my_database', 'root', '');
$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $password]);
echo "ユーザー登録が完了しました。";
}
?>
登録したユーザーがログインできるように、ログインフォームと認証処理を作ります。以下のコードを新しいファイル(例えばlogin.php)に保存しましょう。
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// データベース接続
$pdo = new PDO('mysql:host=localhost;dbname=my_database', 'root', '');
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
echo "ログイン成功!";
} else {
echo "ユーザー名またはパスワードが間違っています。";
}
}
?>
これで簡単なユーザー認証システムが完成しました!今回は、ユーザー登録とログイン機能を作成しました。セキュリティを考慮してパスワードをハッシュ化し、データベースに保存しています。