امتحان PHP 4: الجلسات، الكوكيز، والملفات (10 تمارين مركبة)

امتحان PHP 4: الميزات المتقدمة والملفات

اختبر قدرتك على إدارة حالة المستخدم (Sessions/Cookies) والتعامل مع نظام الملفات والوقت.

تمرين 1 التاريخ والوقت (Date & Time)

اعرض الوقت الحالي:

  1. اطبع تاريخ اليوم بصيغة "Y/m/d".
  2. اطبع الوقت الحالي بصيغة "h:i:sa".
  3. اضبط المنطقة الزمنية لتكون "Africa/Cairo".
الحل
<?php
date_default_timezone_set("Africa/Cairo");
echo "Today is " . date("Y/m/d") . "<br>";
echo "The time is " . date("h:i:sa");
?>
تمرين 2 تضمين الملفات (Include & Require)

نظم كودك في ملفات:

  1. افترض وجود ملف `footer.php`.
  2. استخدم `include` لتضمينه في الصفحة الحالية.
  3. اشرح الفرق بين `include` و `require` في تعليق.
الحل
<?php
include 'footer.php';

// الفرق:
// include: إذا لم يجد الملف، يصدر تحذيراً ويستمر الكود.
// require: إذا لم يجد الملف، يصدر خطأ قاتلاً ويوقف الكود.
?>
تمرين 3 قراءة الملفات (File Handling - Read)

اقرأ محتوى ملف نصي:

  1. افترض وجود ملف `webdictionary.txt`.
  2. استخدم `readfile()` لقراءة الملف وطباعة عدد البايتات.
  3. أو استخدم `fopen`, `fread`, `fclose` لقراءته.
الحل
<?php
echo readfile("webdictionary.txt");

// أو الطريقة الأخرى
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile, filesize("webdictionary.txt"));
fclose($myfile);
?>
تمرين 4 الكتابة في الملفات (File Handling - Write)

أنشئ ملفاً جديداً واكتب فيه:

  1. افتح ملفاً جديداً `testfile.txt` للكتابة (`w`).
  2. اكتب فيه اسمك باستخدام `fwrite`.
  3. أغلق الملف.
الحل
<?php
$myfile = fopen("testfile.txt", "w") or die("Unable to open file!");
$txt = "John Doe\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
تمرين 5 رفع الملفات (File Upload)

تعامل مع رفع الملفات:

  1. افترض وجود نموذج يرسل ملفاً باسم `fileToUpload`.
  2. تحقق مما إذا كان الملف صورة حقيقية باستخدام `getimagesize`.
  3. اطبع "File is an image" أو "File is not an image".
الحل
<?php
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
    } else {
        echo "File is not an image.";
    }
}
?>
تمرين 6 ملفات تعريف الارتباط (Cookies)

احفظ تفضيلات المستخدم:

  1. أنشئ كوكيز باسم `user` وقيمة "John Doe".
  2. اجعلها تنتهي بعد 30 يوماً.
  3. تحقق مما إذا كانت الكوكيز موجودة واطبع قيمتها.
الحل
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day

if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
تمرين 7 الجلسات (Sessions)

ابدأ جلسة واحفظ بيانات:

  1. ابدأ الجلسة باستخدام `session_start()`.
  2. احفظ متغيرات الجلسة: `favcolor` = "green" و `favanimal` = "cat".
  3. اطبع "Session variables are set.".
الحل
<?php
session_start();
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
تمرين 8 الفلاتر (Filters Advanced)

تحقق من نطاق رقم:

  1. لديك متغير `$int = 122`.
  2. استخدم `filter_var` للتحقق من أن الرقم بين 1 و 200.
  3. استخدم `FILTER_VALIDATE_INT` مع خيارات `min_range` و `max_range`.
الحل
<?php
$int = 122;
$min = 1;
$max = 200;

if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
    echo "Variable value is not within the legal range";
} else {
    echo "Variable value is within the legal range";
}
?>
تمرين 9 دوال الاستدعاء (Callback Functions)

مرر دالة كمعامل لدالة أخرى:

  1. عرف دالة `my_callback($item)` تعيد طول النص.
  2. لديك مصفوفة نصوص.
  3. استخدم `array_map` لتطبيق الدالة على كل عنصر في المصفوفة.
  4. اطبع المصفوفة الناتجة (أطوال النصوص).
الحل
<?php
function my_callback($item) {
    return strlen($item);
}

$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>
تمرين 10 JSON

تعامل مع بيانات JSON في PHP:

  1. لديك مصفوفة ترابطية `age = ["Peter"=>35, "Ben"=>37]`.
  2. حولها إلى نص JSON باستخدام `json_encode`.
  3. ثم حول نص JSON `{"Peter":35,"Ben":37}` إلى كائن PHP باستخدام `json_decode`.
الحل
<?php
$age = array("Peter"=>35, "Ben"=>37);
echo json_encode($age);

$jsonobj = '{"Peter":35,"Ben":37}';
var_dump(json_decode($jsonobj));
?>
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن