شرح صفوف ومحتوى الفقرة
يتيح إتقان رؤوس HTTP القياسية التحكم الكامل في التحويلات ونوع المحتوى وتنزيل الملفات والتخزين المؤقت.
- رتّب منطق الصفحة دائماً بحيث يتم التحقق وتحديث الجلسة والتحويل قبل تضمين قوالب HTML.
- استخدم
ob_get_clean()عندما تريد التقاط مخرجات قالب PHP داخل متغير نصي (مثل تجهيز قالب رسالة بريد إلكتروني). - أتبع كل رأس تحويل
Locationبتعليمةexit;صريحة دائماً.
يتحقق الشرط !headers_sent($file, $line) من عدم إرسال الرؤوس مسبقاً قبل ضبط رمز الحالة ونوع محتوى JSON.
| الأمر في PHP | الأثر في بروتوكول HTTP | القاعدة الأساسية |
|---|---|---|
header("Location: /url"); exit; | 302 Redirect to /url | Always follow with exit; |
header("Location: /url", true, 301); exit; | 301 Permanent SEO Redirect | Browsers cache 301 redirects |
http_response_code(404); | Sets 404 Not Found status | Call before echoing error HTML |
header("Cache-Control: no-store"); | Disables browser caching | Essential for private/auth pages |
ob_start() / ob_get_clean() | Buffers output in RAM | Prevents premature body flush |
PHP
<?php
if (!headers_sent($file, $line)) {
http_response_code(200);
header("Content-Type: application/json; charset=UTF-8");
echo json_encode(["ok" => true, "status" => http_response_code()]) . "\n";
} else {
echo "Headers already sent at $file:$line\n";
}
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
يتيح إتقان رؤوس HTTP القياسية التحكم الكامل في التحويلات ونوع المحتوى وتنزيل الملفات والتخزين المؤقت. رتّب منطق الصفحة دائماً بحيث يتم التحقق وتحديث الجلسة والتحويل قبل تضمين قوالب HTML. استخدم ob_get_clean() عندما تريد التقاط مخرجات قالب PHP داخل متغير نصي (مثل تجهيز قالب رسالة بريد إلكتروني). أتبع كل رأس تحويل Location بتعليمة exit; صريحة دائماً.