task.php ではログイン中のユーザーIDを $member['id'] から取得し,提出課題を task テーブルへ登録します。
source_common/task.php
<?php
// task.php: 課題提出
session_start();
require_once __DIR__ . '/common/common.php';
$member = login_check();
if (!empty($_FILES['task_file']['name'])) {
$original = basename($_FILES['task_file']['name']);
$ext = pathinfo($original, PATHINFO_EXTENSION);
$save_name = date('YmdHis') . '_' . bin2hex(random_bytes(4)) . ($ext ? '.' . $ext : '');
move_uploaded_file($_FILES['task_file']['tmp_name'], __DIR__ . '/task_folder/' . $save_name);
$sql = 'INSERT INTO task (member, name, file, change_name, word, modified) VALUES (:member, :name, :file, :change_name, :word, NOW())';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':member', (int)$member['id'], PDO::PARAM_INT);
$stmt->bindValue(':name', $_POST['name'], PDO::PARAM_STR);
$stmt->bindValue(':file', $original, PDO::PARAM_STR);
$stmt->bindValue(':change_name', $save_name, PDO::PARAM_STR);
$stmt->bindValue(':word', $_POST['word'] ?? '', PDO::PARAM_STR);
$stmt->execute();
header('Location: task_list.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"><title>課題提出</title></head>
<body>
<h1>課題提出</h1>
<form action="" method="post" enctype="multipart/form-data">
<p>課題名:<input type="text" name="name" required></p>
<p>提出ファイル:<input type="file" name="task_file" required></p>
<p>コメント:<textarea name="word" rows="5" cols="50"></textarea></p>
<p><input type="submit" value="提出"></p>
</form>
<p><a href="top_page.php">トップページへ戻る</a></p>
</body>
</html>
ログイン中ユーザーを取得する処理は login_check() にまとめたため,このページでは課題提出に必要な処理だけに集中できます。