امتحان PHP 3: الدوال، النماذج، والتحقق (10 تمارين مركبة)
امتحان PHP 3: الدوال والنماذج
اختبر مهاراتك في تنظيم الكود باستخدام الدوال، واستقبال ومعالجة بيانات المستخدم من النماذج.
تمرين 1
إنشاء دالة بسيطة (Basic Function)
أنشئ دالة ترحيب:
- عرف دالة باسم `writeMsg`.
- تطبع الدالة جملة "Hello world!".
- استدعِ الدالة لتنفيذها.
الحل
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg();
?>
تمرين 2
دالة مع وسائط (Function Arguments)
أنشئ دالة لجمع رقمين:
- عرف دالة `addNumbers` تقبل وسيطين `$a` و `$b`.
- الدالة تعيد (return) مجموع الرقمين.
- اطبع نتيجة استدعاء الدالة مع الرقمين 5 و 10.
الحل
<?php
function addNumbers($a, $b) {
return $a + $b;
}
echo addNumbers(5, 10); // 15
?>
تمرين 3
القيم الافتراضية للوسائط (Default Arguments)
أنشئ دالة مع قيمة افتراضية:
- عرف دالة `setHeight` تقبل وسيطاً `$minheight` بقيمة افتراضية 50.
- تطبع الدالة "The height is : $minheight".
- استدعِ الدالة مرة بقيمة 350 ومرة بدون وسائط.
الحل
<?php
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // ستستخدم 50
?>
تمرين 4
المتغيرات العامة (Global Variables)
الوصول لمتغير خارج الدالة:
- عرف متغيراً `$x = 5` خارج أي دالة.
- داخل دالة `myTest`، حاول طباعة `$x`.
- استخدم الكلمة المفتاحية `global` للوصول إليه.
الحل
<?php
$x = 5;
function myTest() {
global $x;
echo $x;
}
myTest();
?>
تمرين 5
معالجة النماذج (POST Method)
استقبل بيانات من نموذج:
- افترض وجود نموذج يرسل `name` و `email` بطريقة POST.
- اكتب كود PHP لاستقبال هذه البيانات وعرضها.
- استخدم `$_POST['key']`.
الحل
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
echo "Welcome $name<br>";
echo "Your email is: $email";
}
?>
تمرين 6
معالجة النماذج (GET Method)
استقبل بيانات من الرابط:
- افترض الرابط: `test.php?subject=PHP&web=W3schools.com`.
- استخدم `$_GET` لاستقبال وعرض قيم `subject` و `web`.
الحل
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
تمرين 7
التحقق من البيانات (Form Validation)
نظف المدخلات:
- أنشئ دالة `test_input($data)`.
- تقوم الدالة بإزالة المسافات الزائدة (`trim`).
- وإزالة الشرطات المائلة (`stripslashes`).
- وتحويل الرموز الخاصة (`htmlspecialchars`) لمنع XSS.
الحل
<?php
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
تمرين 8
الحقول المطلوبة (Required Fields)
تحقق من أن الحقل ليس فارغاً:
- تحقق مما إذا كان حقل `name` في POST فارغاً (`empty`).
- إذا كان فارغاً، احفظ رسالة خطأ في متغير `$nameErr`.
- وإلا احفظ القيمة في `$name` بعد تنظيفها.
الحل
<?php
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
?>
تمرين 9
التحقق من البريد الإلكتروني (Email Validation)
تأكد من صحة البريد:
- استخدم `filter_var` للتحقق من أن المتغير `$email` يحتوي على بريد صحيح.
- استخدم الفلتر `FILTER_VALIDATE_EMAIL`.
الحل
<?php
$email = "test@example.com";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Invalid email format";
} else {
echo "Valid email";
}
?>
تمرين 10
التحقق من الرابط (URL Validation)
تأكد من صحة الرابط:
- استخدم تعبير نمطي (Regex) للتحقق من أن `$website` هو رابط صحيح.
- استخدم `preg_match` مع النمط `/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i`.
الحل
<?php
$website = "https://www.google.com";
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $website)) {
echo "Invalid URL";
} else {
echo "Valid URL";
}
?>