Khaled Mohammed7 نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 لدي الدالة التالية function getBaseUrl( ) { echo $_SERVER['HTTP_HOST'].strrev( strstr( strrev( $_SERVER['PHP_SELF'] ), "/" ) ); } ولا اعرف اين المشكلة لا تقوم بارجاع http,https 1 اقتباس
0 شرف الدين حفني نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 https يعني ان موقعك مزود بssl وأمن للتواصل, والكود اللذي كتبته انت لا يتضمن تلك المعلومة, انما يتضمن معلومات اخرى : function getBaseUrl( ) { if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') echo "https".$_SERVER['HTTP_HOST'].strrev( strstr( strrev( $_SERVER['PHP_SELF'] ), "/" ) ); else echo "http".$_SERVER['HTTP_HOST'].strrev( strstr( strrev( $_SERVER['PHP_SELF'] ), "/" ) ); } ينقصك هنا ان تتأكد اذا كان الاتصال مؤمن تضف كلمة https للرابط عدا ذلك تضف http فقط,وهذا يمكن اتمامه على النحو التالي: 1 اقتباس
1 Hassan Hedr نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 (معدل) لمعرفة الرابط الأساس الذي تعمل ضمنه تحتاج التالي: البروتوكول الذي يخدم العميل (http - https) يحدد عبر القيمة التالية: $_SERVER['HTTPS'] // هل بروتوكول التشفير مفعل اسم النطاق الذي يمكن للعميل الوصول للمخدم عبره (www.example.com) يحدد عبر القيمة التالية: $_SERVER['SERVER_NAME'] // اسم النطاق الحالي تنسيق القيمتين بالصيغة التالية [بروتوكول + "//:" + اسم نطاق] يمكن تضمين التابع الذي ذكرته كما يلي: function getBaseURL(){ return sprintf( "%s://%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME'] ); } echo getBaseURL(); // "https://www.example.com" تم التعديل في 28 أغسطس 2021 بواسطة Hassan Hedr اقتباس
0 بلال زيادة نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 يمكنك صنع دالة للتحقق من شهادة ssl فحيث يمكنك إنشاء الدالة بهذا الشكل function isSSL( ) { } ومن ثم يمكنك استخدام مصفوفة $_SERVER لجلب قيمة HTTPS بهذا الشكل $_SERVER['HTTPS'] حيث ايضا يمكنك استخدام دالة preg_match لتقوم بتطبيق تعبيراً نمطياً على سلسلة نصية وتركيب هذه الدالة هو int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int$offset = 0 ]]] ) بحيث أن pattern هو النص المراد البحث عنه, كسلسة نصية, subject السلسلة النصية المُدخلة , matches إذا ضُبِطَت قيمة المعامل matches، فستُملأ تلك المصفوفة بنتائج البحث. إذ ستحتوي $matches[0] على النص الذي يطابق النمط الكامل، وستحتوي $matches[1] على النص الذي يطابق أول نمط فرعي محاط بالأقواس، وعند تطبيق preg_match( "/^(|off|false|disabled)\$/i", $_SERVER['HTTPS'] ) سوف تعيد لنا الدالة 1 إذا كانت الشهادة مفعلة و صفر إذا كانت غير مفعلة function isSSL( ) { return !( !isset( $_SERVER['HTTPS'] ) || preg_match( "/^(|off|false|disabled)\$/i", $_SERVER['HTTPS'] ) ); } ومن ثم يمكنك استخدام هذه الدالة بداخل دالة getBaseUrl بهذا الشكل function getBaseUrl( ) { return ( isssl( ) ? "https://" : "http://" ).$_SERVER['HTTP_HOST'].strrev( strstr( strrev( $_SERVER['PHP_SELF'] ), "/" ) ); } بحيث تضع بجانب الرابط https:// إذا كانت الشهادة مفعلة و تضع http:// إذا كانت الشهادة غير مفعلة . اقتباس
السؤال
Khaled Mohammed7
لدي الدالة التالية
ولا اعرف اين المشكلة لا تقوم بارجاع http,https
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.