ログイン管理の基礎

Webアプリケーションでは、「ログイン状態を保持したい」「訪問者の情報を記憶したい」といったニーズがよくあります。
PHPではセッションクッキーという機能を使って、それらを簡単に実現できます。

本記事では、セッションとクッキーの基本的な使い方と、ログイン状態を管理するための実践的なコード例を紹介します。

セッションの開始と変数の保持

セッションは、サーバー側にユーザーごとの情報を一時的に保持する仕組みです。
ユーザーがサイトを離れるまで(または一定時間が経過するまで)データが維持されます。

セッションの基本コード

<?php 
 session_start(); 
 // セッションを開始 
 // 値を保存 
 $_SESSION["username"] = "tanaka"; 
 // 値を取得 
 echo "こんにちは、" . $_SESSION["username"] . "さん!"; 
 // セッションの削除(ログアウト処理などで使用) 
 session_unset(); 
 session_destroy();
>

session_start()は、スクリプトの先頭で必ず一度だけ呼び出してください。

クッキーの設定と取得

クッキーは、ユーザーのブラウザにデータを保存しておく仕組みです。
ログインIDの保存や、最終アクセス日時の記録などに使われます。

クッキーの基本コード

<?php 
 // クッキーを設定(有効期限:1時間後) 
 setcookie("user_id", "tanaka123", time() + 3600); 
 // クッキーを取得 
 if (isset($_COOKIE["user_id"])) { 
  echo "ようこそ、" . htmlspecialchars($_COOKIE["user_id"], ENT_QUOTES, "UTF-8") . "さん!"; 
 } 
>

クッキーは設定してから次のリクエストで使えるようになります。

セッションとクッキーを使った簡単なログイン状態の管理

以下は、ログインフォーム → セッションによるログイン状態保持 → ログアウトまでの流れをまとめた例です。

<!-- login.php -->
<?php 
 session_start(); 
 $validUser = "admin"; 
 $validPass = "password"; 
 $error = ""; 
 if ($_SERVER["REQUEST_METHOD"] === "POST") { 
  $user = $_POST["username"] ?? ""; 
  $pass = $_POST["password"] ?? ""; 
  if ($user === $validUser &amp;&amp; $pass === $validPass) { 
   $_SESSION["login_user"] = $user; 
   // 「ログイン状態を記憶する」にチェックされていればクッキー保存 
   if (isset($_POST["remember"])) { 
    setcookie("remember_user", $user, time() + 3600); 
   } 
   header("Location: dashboard.php"); 
   exit; 
  } else { 
   $error = "ユーザー名またはパスワードが違います。"; 
  } 
 } 
> 

<!DOCTYPE html> 
<html> 
 <head>
  <meta charset="UTF-8">
  </head>
  <body>
  <h2>ログインフォーム</h2> 
    <?php 
      if ($error) echo "<p style='color:red;'>$error</p>"; 
    > 
   <form method="post">ユーザー名:
     <input type="text" name="username" value="<?= $_COOKIE['remember_user'] ?? '' ?>"
     ><br> 
     パスワード:<input type="password" name="password"><br> 
     <label><input type="checkbox" name="remember">ログイン状態を記憶</label><br> 
     <input type="submit" value="ログイン">
   </form> 
  </body> 
</html>
<!-- dashboard.php --> 
<?php 
 session_start(); 
 if (!isset($_SESSION["login_user"])) { 
  header("Location: login.php"); 
  exit; 
 } 
> 

<h2>ようこそ、<?= htmlspecialchars($_SESSION["login_user"], ENT_QUOTES, "UTF-8") ?> さん</h2> <p><a href="logout.php">ログアウト</a></p>
<!-- logout.php --> 
<?php 
 session_start(); 
 session_destroy(); 
 header("Location: login.php"); 
 exit; 
> 

ポイント

  • session_start()は毎ページで必要
  • ログイン情報はセッションで管理、クッキーは「記憶する」用途に
  • セキュリティ対策としてhtmlspecialchars()も忘れずに

まとめ

今回は、PHPのセッションとクッキーの基本と、それらを使ったログイン状態の管理方法について紹介しました。

  • セッション:ユーザーごとの一時情報(ログイン情報など)
  • クッキー:ブラウザに保持される情報(記憶用など)
  • ログイン管理:セッション+クッキーで状態を制御

次回は「データベース連携(PDO)」を通じて、ログイン機能をさらに実用レベルに引き上げていきます!

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com