ログイン後のページでは,セッションに保存された $_SESSION['id'] と $_SESSION['time'] を確認します。ここではまだ共通関数化していないため,ログイン確認処理を top_page.php に直接書いています。
source_dbconnect/top_page.php
<?php
// top_page.php: トップページ
session_start();
require_once __DIR__ . '/dbconnect.php';
function h($value): string
{
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
}
// ログイン状態を確認する
if (!isset($_SESSION['id'], $_SESSION['time'])) {
header('Location: index.php');
exit();
}
if ($_SESSION['time'] + 3600 <= time()) {
header('Location: logout.php');
exit();
}
$_SESSION['time'] = time();
$sql = 'SELECT * FROM member WHERE id = :id';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', (int)$_SESSION['id'], PDO::PARAM_INT);
$stmt->execute();
$member = $stmt->fetch();
if (!$member) {
header('Location: logout.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>トップページ</title></head>
<body>
<h1>講義支援システム</h1>
<p>ようこそ,<?php echo h($member['name']); ?>さん</p>
<ul>
<li><a href="learning.php">教材管理</a></li>
<li><a href="task.php">課題提出</a></li>
<li><a href="task_list.php">提出状況確認</a></li>
<li><a href="submission.php">全体提出状況</a></li>
<li><a href="logout.php">ログアウト</a></li>
</ul>
</body>
</html>
後でこのログイン確認処理は common/common.php の login_check() 関数へ移します。