PDA

نسخه کامل مشاهده نسخه کامل : PHP :: مشکل لوگین از طریق سشن و شناسایی نشدن در آدرس های بدون www



mohammadreZa
09-06-2010, 22:23
سلام به همه
سشن یه مشکل بزرگ داره و اونم اینه که وقتی کاربر لوگین میکنه و مثلا به صفحه ای با آدرس

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
منتقل میشه، اگه به هر دلیل www از اول آدرس حذف بشه دیگه کاربر رو نمیشناسه! (و برعکس) (همین انجمن هم همینطوره)

حالا میخوام بدونم راهی هست این مشکل حل شه؟ جایی خوندم میشه تو htaccess کدی رو اضافه کرد که تمام آدرس ها رو ببره به مثلا بدون www و یا همه رو منتقل کنه به با [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

کسی در این مورد اطلاعی نداره؟ خیلی مهمه
ممنون

neopersia
09-06-2010, 23:23
سلام

درسته سشنها با اضافه شدن یا حذف www قابل شناسایی نیستن.
دلیلش هم اینه که معمولاً سشنها همراه با یک کوکی کار میکنن و کوکی ها هم به صورت عادی فقط برای دامنه ای که ست شده اند قابل دسترسی هستن و از نظر مرورگر هم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید یک دامنه متفاوت با site.com هست

اگر بتونید کوکی رو طوری بنویسید که هر دو تا آدرس بتونن بهش دسرسی داشته باشن درست میشه. مثلاً اگر مسیر کوکی رو اینطوری عوض کنید شاید کار کنه (تست نکردم):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر کار کنه به دلیل اشتراک کوکی بین دو تا دامنه ممکنه آنتی ویروسها کوکی های سایت رو به عنوان tracking cookie شناسایی کنند!

اگر هم بخواید بله با htaccess هم میشه کاربر رو به دامنه با www منتقل کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

البته نظر شخصی من اینه که هیچکدوم از این کارها لازم نیست! کاربر با همون آدرسی که لوگین کرده از سایت استفاده میکنه. لینکهای داخل سایت هم اگر نسبی باشند مشکلی ایجاد نمیکنند.
من خودم تو این چند سال که تو همین فروم عضو بودم شاید جمعاً 10 مرتبه هم با www وارد نشدم! اون دفعات هم به دلیل لینکهایی بوده که کاربرهای تازه وارد با www به من داده بودن



---------
راستی یک روش دیگه هم هست که باعث میشه از کوکی استفاده نشه. به این صورت که آی دی سشن رو از طریق آدرس صفحات با پارامتر sid به صفحات بعدی منتقل کنید. این روش یک مقدار خطر هـک شدن رو برای صفحات حساس ممکنه ایجاد کنه اگر حواستون بهش نباشه!

mohammadreZa
10-06-2010, 00:02
آقا ممنون
فکر کنم همون شیوه دوم از همه بهتر باشه
ساختار این کد رو میشه توضیح بدید؟ اینکه دقیقا هر خط چه معنی میده؟
مرسی

neopersia
10-06-2010, 01:06
چیز خاصی برای توضیح دادن نداره

خط اول ماژول ریرایت آپاچی رو فعال میکنه

خط دوم یک شرط هست بر اساس عبارات با قاعده. قسمت اولش یعنی {[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]}% یک متغیر هست که آپاچی در اون نام هاست رو ذخیره میکنه. که همون site.com یا [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] site.com هست. قسمت دومش هم الگوی داده شده رو با نام هاست مقایسه میکنه ببینه اولش www داره یا نه. اگر www نداشته باشه خط سوم رو که مربوط به ریرایت کردن هست اجرا میکنه

خط سوم هم میاد هر آدرسی از هاست بدون www رو به نسخه www دار با کد HTTP 301 ریدایرکت میکنه و ریرایت رو تموم میکنه