تقييم الدرس 20: الإضافة والتعديل والحذف بأمان. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) أي سطر آمن من حقن SQL؟
2) الطريقة التي تعيد عدد الصفوف المتأثرة بـ UPDATE:
3) لإلغاء كل أوامر المعاملة عند الفشل:
4) في الاستعلام المُعدّ، القيمة تُرسل:
5) ما الثغرة في هذا الكود؟
<?php$id = $_GET['id'];$pdo->query("DELETE FROM posts WHERE id = $id");
2السؤال الثاني: صح أم خطأ
1) htmlspecialchars تحمي الاستعلام من حقن SQL.
الصواب: خطأ
2) يُكتب المكان ? بلا علامات تنصيص حوله.
الصواب: صح
3) commit() تثبّت كل أوامر المعاملة معًا.
الصواب: صح
4) يجوز استخدام query() مع قيم من المستخدم إن استخدمنا trim.
الصواب: خطأ
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) لبدء معاملة في PDO نستخدم .
الإجابة: beginTransaction()
2) رقم آخر صف أُضيف نحصل عليه بـ $pdo-> .
الإجابة: lastInsertId()
3) الثغرة التي تحدث بدمج بيانات المستخدم في أوامر SQL اسمها حقن .
الإجابة: SQL
4السؤال الرابع: أسئلة عملية
1) ماذا يرسل الخادم؟
<?php$pdo = newPDO('sqlite::memory:');$pdo->exec("CREATE TABLE t (id INTEGER PRIMARY KEY, n TEXT); INSERT INTO t (n) VALUES ('أ'), ('ب'), ('ج');");$s = $pdo->prepare('DELETE FROM t WHERE id > ?');$s->execute([1]);echo$s->rowCount();
الناتج الصحيح:
2
2) ماذا يرسل الخادم؟
<?php$pdo = newPDO('sqlite::memory:');$pdo->exec("CREATE TABLE u (id INTEGER PRIMARY KEY, name TEXT); INSERT INTO u (name) VALUES ('سعود'), ('نورة');");$s = $pdo->prepare('INSERT INTO u (name) VALUES (?)');$s->execute(["x' OR '1'='1"]);echo$pdo->lastInsertId();