شرح صفوف ومحتوى الفقرة
تجمع عملية إضافة سجل جديد بين فحص توكن CSRF، والتحقق من المدخلات، واستعلام INSERT محضر مرتبط بـ $_SESSION["user_id"]، ثم تحويل 303 See Other.
- خذ معرف المالك
user_idدائماً من جلسة الخادم الموثوقة$_SESSION["user_id"]وليس من حقل مخفي في النموذج! - تحقق من أن النصوص المطلوبة غير فارغة وضمن الطول المسموح به للعمود.
- احفظ رسالة نجاح مؤقتة في الجلسة قبل التحويل إلى قائمة السجلات.
تم ربط المهمة مباشرة بمعرف المستخدم الموثق في الجلسة وإدراجها باستعلام محضر.
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE tasks (id INTEGER PRIMARY KEY, user_id INT, title TEXT)');
$sessionUserId = 42;
$title = trim('Ship PHP 8.4 Course');
$stmt = $pdo->prepare('INSERT INTO tasks (user_id, title) VALUES (:uid, :title)');
$stmt->execute(['uid' => $sessionUserId, 'title' => $title]);
echo "Inserted Task #" . $pdo->lastInsertId() . " for User #$sessionUserId\n";