انتقل إلى محتوى الدرس

URL Redirection with Location and exit تحويل المسار بـ Location وأهمية إيقاف التنفيذ بـ exit

أرسل تحويلات المتصفح بـ Location ورموز الحالة وتنزيل الملفات، وامنع خطأ headers already sent عبر التخزين المؤقت ob_start في PHP 8.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يوجه إرسال رأس Location: المتصفح للانتقال إلى رابط آخر، ولكنه لا يوقف محرك PHP تلقائياً عن إكمال تنفيذ بقية أسطر السكريبت.

  • استدعِ دائماً exit; في السطر التالي مباشرة بعد header("Location: ...")!
  • يُعد نسيان exit; بعد تحويل غير المسجلين ثغرة أمنية خطيرة؛ لأن PHP سيواصل تنفيذ كود الصفحة المحمية ويرسل محتواها بالكامل في جسم الاستجابة.
  • افتراضياً، ترسل header("Location: /target") رمز الحالة المؤقت 302 Found ما لم تحدد رمز 3xx آخر.

لأن exit; تنهي تنفيذ السكريبت فوراً بعد إرسال رأس التحويل، فلن يصل التنفيذ أبداً إلى محتوى لوحة التحكم السرية بالأسفل.

PHP
<?php
$isAuthenticated = false;

if (!$isAuthenticated) {
    header("Location: /login.php", true, 302);
    echo "Redirecting to /login.php (302)...\n";
    exit;
}

echo "Secret Admin Dashboard Content\n";