اذهب إلى المحتوى
  • 0

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

Khaled Mohammed7

السؤال

Recommended Posts

  • 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 فقط,وهذا يمكن اتمامه على النحو التالي:


 

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

  • 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://

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

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...