• 0

لدي مشكلة في دالة جلب رابط الموقع

لدي الدالة التالية 

function getBaseUrl( )
{
       echo $_SERVER['HTTP_HOST'].strrev( strstr( strrev( $_SERVER['PHP_SELF'] ), "/" ) );
}

ولا اعرف اين المشكلة لا تقوم بارجاع http,https

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

لمعرفة الرابط الأساس الذي تعمل ضمنه تحتاج التالي:

  1. البروتوكول الذي يخدم العميل (http - https) يحدد عبر القيمة التالية:
$_SERVER['HTTPS'] // هل بروتوكول التشفير مفعل
  1.  اسم النطاق الذي يمكن للعميل الوصول للمخدم عبره (www.example.com) يحدد عبر القيمة التالية:
    $_SERVER['SERVER_NAME'] // اسم النطاق الحالي

     

  2. تنسيق القيمتين بالصيغة التالية [بروتوكول + "//:" + اسم نطاق] يمكن تضمين التابع الذي ذكرته كما يلي:
function getBaseURL(){
  return sprintf(
    "%s://%s",
    isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
    $_SERVER['SERVER_NAME']
  );
}

echo getBaseURL(); // "https://www.example.com" 

 

تمّ تعديل بواسطة Hassan Hedr

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

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 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك صنع دالة للتحقق من شهادة 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://

إذا كانت الشهادة غير مفعلة .

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن