ما الفرق بين HTTP_HOST و SERVER_NAME في PHP؟ الاستخدام الصحيح
مرحباً بالجميع! أنا مبتدئ في PHP وأحاول فهم متغيرات الخادم. كثيراً ما أرى في كود مطورين آخرين استخدام `$_SERVER['HTTP_HOST']` و `$_SERVER['SERVER_NAME']`. للوهلة الأولى، كلاهما يعيد اسم المضيف، لكني لاحظت أنهما يعطيان أحياناً قيماً مختلفة.
على سبيل المثال، لدي سكربت بسيط:
```php
';
echo 'SERVER_NAME: ' . $_SERVER['SERVER_NAME'] . '
'; ?> ``` على الخادم المحلي (OpenServer)، كلاهما يظهر `localhost`. لكن عندما رفعت الموقع على استضافة، لاحظت أنه عند الوصول عبر عنوان IP، يظهر `HTTP_HOST` عنوان IP، بينما يظهر `SERVER_NAME` اسم النطاق. كما سمعت أن `HTTP_HOST` يمكن تزويره عبر رؤوس طلب HTTP، مما يخلق ثغرة أمنية. أرجو التوضيح: 1. ما الفرق الجوهري بين هذين المتغيرين؟ 2. أيهما أكثر أماناً للاستخدام في عمليات إعادة التوجيه (redirects)، توليد الروابط، والتحقق من النطاق؟ 3. هل هناك حالات يمكن أن يختلفا فيها بشكل جذري؟
'; ?> ``` على الخادم المحلي (OpenServer)، كلاهما يظهر `localhost`. لكن عندما رفعت الموقع على استضافة، لاحظت أنه عند الوصول عبر عنوان IP، يظهر `HTTP_HOST` عنوان IP، بينما يظهر `SERVER_NAME` اسم النطاق. كما سمعت أن `HTTP_HOST` يمكن تزويره عبر رؤوس طلب HTTP، مما يخلق ثغرة أمنية. أرجو التوضيح: 1. ما الفرق الجوهري بين هذين المتغيرين؟ 2. أيهما أكثر أماناً للاستخدام في عمليات إعادة التوجيه (redirects)، توليد الروابط، والتحقق من النطاق؟ 3. هل هناك حالات يمكن أن يختلفا فيها بشكل جذري؟