PDA

View Full Version : سوال: مشکل session با فایرفاکس



C#Lovers
پنج شنبه 19 شهریور 1388, 10:30 صبح
راستش من یه مشکل خیلی عجیب پیدا کردم!!!

توی یک page خاص اطلاعات session رو توی یک فیلد میریزم و بعد اون رو به صورت get میفرستم به یک page دیگه.
این session اطلاعات کاربری هست که login کرده.
این عملیات توی IE به خوبی کار می کنه اما نمی دونم چرا توی فایرفاکس و اپرا جواب نمیده!!!

جالب اینجاست که عملیات login به خوبی انجام میشه و کاربر به حساب خودش وارد میشه اما session مربوط به اون کاربر رو نمی تونم بخونم!!!

لطفا کمک کنین، اساسی گیر کردم!

C#Lovers
جمعه 20 شهریور 1388, 09:43 صبح
یعنی واقعا هیچ کس تو این انجمن به این بزرگی نیست که بتونه به من کمک کنه؟
فقط اونایی که 7 8 هزارتایی پست دارن جواب میگیرن؟

__ziXet__
جمعه 20 شهریور 1388, 09:48 صبح
یعنی واقعا هیچ کس تو این انجمن به این بزرگی نیست که بتونه به من کمک کنه؟
فقط اونایی که 7 8 هزارتایی پست دارن جواب میگیرن؟
سلام

آخه سوال یجوریه!
شما اگه کدی چیزی داری، بذاری بهتره.
اصلا چرا سشن رو با فرم میفرستی؟

اعظم
جمعه 20 شهریور 1388, 10:23 صبح
حرفت درسته چون فايرفاكس به شدت همه چي رو كش مي كنه . برداشت من اينه كه شما سيشن رو مي توني بخوني اما نه سيشن مربوط به كاربري كه الان وارد شده

دليلش اينه كه سيشن آيدي در هدر صفحه قرار ميگيره براي اين كه وقتي صفحه دوباره به سرور ارجاع داده شد ( مثلا از طريق يك فرم و دكمه سابميت ) سرور بتونه تشخيص بده از كدوم سيشن بايد استفاده كنه و در نتيجه وقتي صفحه كش ميشه اين سيشن آي دي درست به سرور ارسال نميشه

شما بايد كدهايي در هدر فايل قرار بديد كه مانع از كش شدن صفحه بشه مثل :

if (!headers_sent())
{
header("Content-Type: text/html; charset=utf-8");
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');
}

C#Lovers
جمعه 20 شهریور 1388, 12:43 عصر
از اعظم عزیز به خاطر لطفشون ممنونم


شما بايد كدهايي در هدر فايل قرار بديد كه مانع از كش شدن صفحه بشه

توی کدوم فایل قرار باید بدم؟



جایی که فرم لاگین وجود داره؟
جایی که سشن ساخته میشه؟
یا جایی که می خوام سشن رو بخونم؟

C#Lovers
جمعه 20 شهریور 1388, 12:51 عصر
از __ziXet__ به خاطر لطفشون ممنون.


آخه سوال یجوریه!فک کنم سوالم واضحه ها!!!


شما اگه کدی چیزی داری، بذاری بهتره.این کد مال زمانیه که سشن رو می سازم:



$_SESSION["id"]=$id;
$_SESSION["user"]=$user;
$_SESSION["wr"]=$x_ID;
بعد در یک page دیگه این کد رو اجرا می کنم:


$wr=$_SESSION["id"].$_SESSION["wr"];منتها در فایرفاکس متغیر $wr اصلا پر نمیشه! در صورتی که می دونم این سشن پر هست.
اما این کد توی IE کاملا درست کار می کنه!!!


اصلا چرا سشن رو با فرم میفرستی؟من سشن رو نمی خوام با فرم بفرستم، اصلا بخش ارسالش مهم نیست، من فقط می خوام بدونم چرا متغیر wr$ پر نمیشه!

__ziXet__
جمعه 20 شهریور 1388, 15:57 عصر
از __ziXet__ به خاطر لطفشون ممنون.

فک کنم سوالم واضحه ها!!!

این کد مال زمانیه که سشن رو می سازم:



$_SESSION["id"]=$id;
$_SESSION["user"]=$user;
$_SESSION["wr"]=$x_ID;
بعد در یک page دیگه این کد رو اجرا می کنم:


$wr=$_SESSION["id"].$_SESSION["wr"];منتها در فایرفاکس متغیر $wr اصلا پر نمیشه! در صورتی که می دونم این سشن پر هست.
اما این کد توی IE کاملا درست کار می کنه!!!

من سشن رو نمی خوام با فرم بفرستم، اصلا بخش ارسالش مهم نیست، من فقط می خوام بدونم چرا متغیر wr$ پر نمیشه!
خب حالا سوالت واضح شد!

ببین دلایل زیادی ممکنه وجود داشته باشه.
شما تو صفحه ای که سشن رجیستر میشه اروری نداری؟
کد زیر رو بذار تو اون صفحه تا همه ارورها نشون داده بشه:

error_reporting(E_ALL);
متغیرهای دیگه مثل ID درست مقدار دهی میشن؟
فقط مشکل سر همون wr هست؟

__ziXet__
جمعه 20 شهریور 1388, 15:59 عصر
یه نکته دیگه هم الان یادم اومد!
با دستور echo یا print شما هر قسمت از برنامه رو دیباگ کن تا مشکل اصلی دربیاد!
مثلا تو همون صفحه ای که این متغیر ها رو رجیستر کردی دستور

echo $_SESSION['id']
رو بزن ببین که رجیستر شده یا نه!
به همین ترتیب با تیکه تیکه کدهاتو چک کن

موفق باشید

C#Lovers
جمعه 20 شهریور 1388, 16:57 عصر
یه نکته دیگه هم الان یادم اومد!
با دستور echo یا print شما هر قسمت از برنامه رو دیباگ کن تا مشکل اصلی دربیاد!
مثلا تو همون صفحه ای که این متغیر ها رو رجیستر کردی دستور

echo $_SESSION['id']رو بزن ببین که رجیستر شده یا نه!
به همین ترتیب با تیکه تیکه کدهاتو چک کن

موفق باشید

ممنون از اینکه به من کمک می کنی

این راه هایی که گفتین رو انجام میدم، البته echo کردن رو قبلا انجام دادم و ...
راستش اگه دقت کنین مشکل من توی کد نویسو باگ و اینجور چیزها نیست.
وب سایت توی Internet Explorer به خوبی کار می کنه. این مشکل فقط ماله فایرفاکس و اپرا و کروم هست، یعنی تمام مرورگر ها به جز IE

واسه همین نمی دونم باید چیکارش کنم.

اون نمایش خطا ها رو هم انجام دادم اما خطایی نشون نداد!

__ziXet__
جمعه 20 شهریور 1388, 17:13 عصر
ممنون از اینکه به من کمک می کنی

این راه هایی که گفتین رو انجام میدم، البته echo کردن رو قبلا انجام دادم و ...
راستش اگه دقت کنین مشکل من توی کد نویسو باگ و اینجور چیزها نیست.
وب سایت توی Internet Explorer به خوبی کار می کنه. این مشکل فقط ماله فایرفاکس و اپرا و کروم هست، یعنی تمام مرورگر ها به جز IE

واسه همین نمی دونم باید چیکارش کنم.

اون نمایش خطا ها رو هم انجام دادم اما خطایی نشون نداد!
میتونی کد کامل صفحات رو بذاری؟

farzad_itc
شنبه 22 خرداد 1389, 19:12 عصر
شما ببين اون text box اي كه گذاشتي داخل صفحه خودت مثلاً همون آي دي كه داري ارسال مي كني داخل تگ form هست يا نه ؟ چون فاير فاكس خيلي به اين مسائل حساس هستش.

narsic
یک شنبه 23 خرداد 1389, 12:52 عصر
با سلام
دوست عزیز کد کامل صفحتون رو قرار بدید تا تست کنیم .(PHP یک زبان تحت سرور هست و پس از اجرای کامل و صفحه اطلاعات به مرورگر ارسال میشه پس مرورگر دخالتی ندارد)
موفق باشید

narsic
یک شنبه 23 خرداد 1389, 12:55 عصر
جالب اینجاست که عملیات login به خوبی انجام میشه و کاربر به حساب خودش وارد میشه اما session مربوط به اون کاربر رو نمی تونم بخونم!!

شما ببين اون text box اي كه گذاشتي داخل صفحه خودت مثلاً همون آي دي كه داري ارسال مي كني داخل تگ form هست يا نه ؟ چون فاير فاكس خيلي به اين مسائل حساس هستش.
بنا بر گفته خودشون این مشکل وجود نداره .

narsic
یک شنبه 23 خرداد 1389, 13:02 عصر
جالب اینجاست که عملیات login به خوبی انجام میشه و کاربر به حساب خودش وارد میشه اما session مربوط به اون کاربر رو نمی تونم بخونم!!

شما ببين اون text box اي كه گذاشتي داخل صفحه خودت مثلاً همون آي دي كه داري ارسال مي كني داخل تگ form هست يا نه ؟ چون فاير فاكس خيلي به اين مسائل حساس هستش.
بنا بر گفته خودشون این مشکل وجود نداره .

rapidpich
یک شنبه 23 خرداد 1389, 13:44 عصر
سلام
بالای صفحاتت این خط رو بگذار. بعد هرچی خطا نشون داد رو بگذار ببینیم مشکل از کجاست.



error_reporting(E_ALL);
ini_set("display_errors", 1);