بي أتش بي :متغير الجلسة غير قابل للاستخدام عند إعادة توجيه الموقع

StackOverflow https://stackoverflow.com/questions/38370

  •  09-06-2019
  •  | 
  •  

سؤال

يتعين عليّ إدارة موقع ويب صغير لمجموعة الخريجين الخاصة بي والذي يستضيفه ISV الخاص بي.عنوان url يشبه www.myIsv.com/myWebSite/ وهو قبيح جدًا ويمكن نسيانه كثيرًا.قام المسؤول الرئيسي لخادم الويب بتسجيل اسم النطاق www.mysmallwebsite.com ووضع ملف Index.html بهذا المحتوى:

<html>
<head>
<title>www.mysmallwebsite.com</title>
</head>

<frameset>
   <frame src="http://www.myIsv.com/myWebSite/" name="redir">
      <noframes>
        <p>Original location:
          <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a>
        </p>
      </noframes>
 </frameset>  
</html>

إنه يعمل بشكل جيد، لكن بعض الميزات مثل متغيرات جلسة PHP لم تعد تعمل!هل لدى أي شخص اقتراح لتصحيح ذلك؟

يحرر:لا يعمل هذا على IE وFirefox (لا توجد مكونات إضافية)

شكرًا

هل كانت مفيدة؟

المحلول

ترتبط الجلسات بالخادم و المجال.سيؤدي استخدام مجموعة الإطارات عبر النطاق إلى حدوث كل أنواع الكسر لأن هذه ليست الطريقة التي تم تصميمها للقيام بها.

حاول استخدام إعادة كتابة تعديل Apache لإنشاء "إعادة توجيه العبور"،الوكيل"العلم ([P]) في القاعدة هو العلم السحري الذي تحتاجه

التوثيق على http://httpd.Apache.org/docs/1.3/mod/mod_rewrite.html

نصائح أخرى

ماذا تقصد؟هل تقول أنه عندما تنتقل من www.mysmallwebsite.com إلى www.myIsv.com/myWebSite/ فسيتم فقدان جلسة PHP؟

يتعرف PHP على الجلسة بمعرف (تجزئة أبجدية رقمية تم إنشاؤها على الخادم).يتم تمرير المعرف من طلب إلى طلب باستخدام ملف تعريف الارتباط المسمى PHPSESSID أو شيء من هذا القبيل (يمكنك عرض ملفات تعريف الارتباط التي تحددها مواقع الويب بمساعدة متصفحك ...على Firefox لديك Firebug + FireCookie وشريط أدوات مطور الويب الرائع ...والتي يمكنك من خلالها عرض قائمة ملفات تعريف الارتباط دون أي جهد).

لذا ...يقوم PHP بتمرير معرف الجلسة من خلال ملف تعريف الارتباط PHPSESSID.ولكن يمكنك تمرير معرف الجلسة كمعلمات طلب GET عادية.

لذا، عندما تضع رابط html لاسم النطاق القبيح، بافتراض أنه نفس خادم PHP (مع نفس الجلسات التي تمت تهيئتها)، يمكنك وضعه على هذا النحو ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

لم أعمل مع PHP لفترة من الوقت، ولكن أعتقد أن هذا سوف ينجح.

هل تعمل متغيرات الجلسة إذا ضربت http://www.myIsv.com/myWebSite/ مباشرة؟يبدو لي أن تكوين الخادم سيحدد ما إذا كانت الجلسات ستعمل أم لا.ومع ذلك، إذا كنت تبدأ جلسة على www.mysmallwebsite.com بطريقة أو بأخرى (لا يبدو أنك تستخدم PHP، ولكن ربما كنت تستخدمه)، فلن تتمكن من نقل بيانات الجلسة دون كتابة بعض الواجهة الخلفية. المنطق الذي ينقل الجلسة من خادم إلى خادم.

قم بلصق session_start() في بداية البرنامج النصي الخاص بك ومعرفة ما إذا كان يمكنك الوصول إلى المتغيرات مرة أخرى.

إنه لا يعمل لأن جلسات العميل تكون لكل مجال.يتم حفظ جميع ملفات تعريف الارتباط لموقع mysmallwebsite.com، لذلك لا يتمكن موقع myIsv.com من الوصول إليها.

@pix0r www.myisv.com/mywebsite/ -> عمل متغير الجلسة www.mysmallwebsite.com -> متغير الجلسة لا يعمل

@alexandru للأسف هذا ليس على نفس خادم الويب

ما المتصفح/الإعلان الذي لديك؟قد يكون متصفحك أو بعض البرامج الأخرى (ربما حتى خادم الويب) هي التي تحظر الجلسات http://www.myIsv.com/myWebSite/ العمل من داخل الإطار، لأنه موجود في موقع مختلف، معتقدًا أنه هجوم XSS.

إذا كانت الجلسة تعمل في http://www.myIsv.com/myWebSite/ بدون الإطار، يمكنك دائمًا إعادة التوجيه منا http://www.mysmallwebsite.com إلى عنوان URL القبيح، بدلاً من استخدام الإطار.

يحرر:لقد قمت للتو بتجربة رمز الإطار الخاص بك على موقع خاص بي يستخدم الجلسات، وعمل Firefox بشكل جيد، حيث قمت بتسجيل الدخول والبقاء مسجلاً للدخول، لكن IE7 قام بتسجيل خروجي مباشرة مرة أخرى.

لذا، عندما تضع رابط html لاسم النطاق القبيح، بافتراض أنه نفس خادم PHP (مع نفس الجلسات التي تمت تهيئتها)، يمكنك وضعه على هذا النحو ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

من وجهة نظر أمنية، أتمنى ألا ينجح هذا الأمر

يمكنك أيضًا تعيين ملف تعريف الارتباط من جانب المستخدم ثم التحقق من وجود ملف تعريف الارتباط هذا مباشرةً بعد إعادة التوجيه، وهو ما يعني إذا كنت منزعجًا بشأن عناوين URL المألوفة أنك لن تضطر إلى تمرير PHPSESSID في سلسلة الاستعلام .

عندما يصل الأشخاص إلى @ www.mysmallwebsite.com، أود فقط إعادة التوجيه إليه http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?>

هذا هو كل ما أود الحصول عليه في www.mysmqllwebsite.com/index.php
بهذه الطريقة لا داعي للقلق بشأن توافق المتصفح، أو التعامل مع الجلسات، فقط قم بإعادة التوجيه، وستكون الأمور على ما يرام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top