PDA

View Full Version : مشکل session با ie



reza_pnu_ney
پنج شنبه 20 تیر 1392, 10:33 صبح
با سلام
من یه صفحه لاگین درست کردم که وقتی کاربر ، یوزر پسورد رو میزنه، در صورتی که رمز درست باشه، از طریق

header("location:home_page.php");
به صفحه مورد نظر وارد میشه.
این کد توی فایرفاکس و کروم درست کار میکنه اما توی IE مشکل داره.(مشکلش هم اینه که SESSION ها درست کار نمیکنه)
درواقع با جستجویی که کردم فهمیدم، هنگامی که توی iE یه صفحه بصورت خودکار redirect میشه، ie اجازه ذخیره کوکی ها رو نمیده.
بیشتر که جستجو کردم یه مورد پیدا کردم که گفته بود باید توی هدر p3p بذاری

header('P3P: CP=”NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM”');
من این کد رو توی کد گذاشتم اما مشکل رفع نشد.
البته اینجا (http://www.iritn.com/3-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D9%88-%D8%B4%D8%A8%DA%A9%D9%87/%DA%AF%D9%88%DA%AF%D9%84%D8%9B-p3p-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%DA%A9%D8%B3%D9%BE%D9%84%D9%88%D8%B1%D8%B1-%D9%85%D9%86%D8%B3%D9%88%D8%AE-%D9%88-%D8%BA%DB%8C%D8%B1%DA%A9%D8%A7)نوشته که گوگل این مورد رو دور میزنه.
کسی در این مورد چیزی می دونه؟

habibvafapour
پنج شنبه 20 تیر 1392, 10:53 صبح
البته همین حالا درباره
header('P3P: CP=”NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM”'); سرچ کردم و دیدم که خود سایت php (http://www.php.net/manual/pt_BR/function.session-start.php#50905)هشت سال پیش درباره آن توضیح داده است
بهتر هست ابتدا از صحت سلامتی IE خود باخبر باشید بعدش دنبال کد نویسی بروید
موفق باشید

reza_pnu_ney
پنج شنبه 20 تیر 1392, 10:59 صبح
ie مشکلی نداره. واسه اطمینان دوباره نصبش کردم.
همچنین روی چند تا کامپیوتر مختلف تستش کردم همین مشکل رو داشت

البته توی سایت مایکروسافت هم یه چیزایی نوشته بود. به این مضمون که
اینترنت اکسپلورر، کلا کوکی هایی که مال iframe و popup و کلا کوکی هایی غیر از کوکی های ارسال شده از صفحه اصلی باشه رو قبول نمیکنه. واسه همین وقتی redirect میکنیم ، کوکی های صفحه جدید رو ذخیره نمیکنه و مشکل پیش میاد.

توی این پست (http://stackoverflow.com/questions/389456/cookie-blocked-not-saved-in-iframe-in-internet-explorer) نوشته که باید یه فایل privacy policy درست کنیم . و سپس p3p رو ست کنیم.
اما چون مطلبش جدید نیست، احتمالا راه جدیدی باید باشه

reza_pnu_ney
یک شنبه 23 تیر 1392, 09:20 صبح
بالاخره راه حل رو پیدا کردم
کلا وقتی توی ie، سشن ها ذخیره نمیشه باید دو راه رو امتحان کرد.
راه اول:
راه اول اینه که از p3p استفاده کنید و مقادیری رو با header ارسال کنید.

session_start();
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
header("Set-Cookie: SIDNAME=ronty; path=/; secure");
header('Cache-Control: no-cache');
header('Pragma: no-cache');

راه دوم:
راه دوم که مشکل من هم همین بود، کمی واسم عجیب بود(اما ....) بهرحال.مشکل من این بود که
سشن ها ریجکت میشد یعنی اینکه ie اونا رو قبول نمیکرد.
توی یکی از وبلاگ ها نوشته شده بود وقتی که زمان سیستم با زمان سرور یکی نباشه، سشن ها ، منقضی شده محسوب میشن و ریجکت میشن. به همین خاطر تاریخ سیستمم رو چک کردم دیدم که درسته. تاریخ سرور رو که چک کردم درست بود اما نکته ای که وجود داشت این بود که من توی کد لاگین از

$timezone = "Asia/Tehran";
if(function_exists('date_default_timezone_set')) date_default_timezone_set($timezone);
استفاده کرده بودم اما توی صفحه home.php (که صفحه دوم من بود) از این کد استفاده نکرده بودم.
این باعث میشد که ie دچار اشتباه بشه و سشن ها رو ریجکت کنه. بهمین خاطر فورا همین تکه کد رو توی صفحه home.php هم گذاشتم و خدا رو شکر مشکل رفع شد.

گفتم اینو اینجا بنویسم شاید یه نفر دیگه هم که این مشکل رو داره، مشکلش رفع بشه
:)