PDA

View Full Version : سوال: اجرای تابع هنگام بستن پنجره



matrixhassan
چهارشنبه 29 آذر 1391, 13:43 عصر
با سلام انگار زیاد سوال می پرسم

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

چطور میشه این مشکلو حل کرد؟

یعنی میخوام اگه تو اون مرورگر که چندین تب بازه و اگه از سایت من هم چندتا صفحه باز باشه اگه همشو ببنده سیشن از بین بره ( یعنی این حالتم در نظر داشته باشین )

تو قسمت جاوااسکریپت پرسیدم جوابی داده نشد گفتم شاید دوستان اینجا جوابی بدن

با تشکر

siavashsay
چهارشنبه 29 آذر 1391, 17:03 عصر
دوست عزیز !
سشن ها موقعی از بین میرن که تمام پنجره های سایت شما بسته شده باشند ! دلیل مزیت و استفاده از سشن هم همین هست !
اما اگر شما به تابعی نیاز دارید که موقع بسته شدن پنجره عملیاتی رو انجام بده میتونید از jQuery و تابع unload() استفاده کنید !
این تابع وقتی پنجره ای بسته شه فعال شده و شما میتونید توسط اون تابع دیگری رو صدا فراخوانی کنید !
روش استفاده از این تابع هم به اینصورت هست :

$(window).unload(function() { alert('Handler for .unload() called.'); });


حالا بدیگه چطوری بخواین با اون کار کنید رو نمیدونم ! اما میتونید بجای اون تابع alert توسط متد POST که در jquery هست مقداری رو به یکی از صفحات از پیش تعیین شده توسط این تابع بفرستید که وقتی اون صفحه PHP مثلا مقداری رو که شما تعیین کردید دریافت کرد سشن های شما رو destroy کنه !
انشالله که موثر باشه !

matrixhassan
چهارشنبه 29 آذر 1391, 18:02 عصر
این کدی که گذاشتین نشد
من مشکلی ندارم فقط مشکل اینکه ازاونجای که از سیشن استفاده کردم برای از بین رفتن سیشن باید مرورگر کلا بسته شده ولی اگه کاربر تو اون مرورگر هم سایت من و هم یه سایت دیگه باز کرده باشه اگه سایت منو ببنده و اون یکی سایت باز باشه اونوقت سیشن از بین نمیره و اگه بیاد دوباره سایت من باز کنه اون پیغام مد نظر نمایش داده نمیشه مشکل اینه ، چیکار کنم مثلا از تابع ;()window.close استفاده کنم ( مثلا ) یا تابع شما اونوقت اگه کاربر چندتا هم تب از سایت منو کنار هم باز کزده باشه بازم به مشکل بر می خورم
برای این مشکلات راه حلی هست ؟

siavashsay
چهارشنبه 29 آذر 1391, 18:08 عصر
به هر حال سشن موقعی از بین میره که یا مرورگر بسته شه یا خودتون به صورت دستی اون رو از بین ببرین !
میشه تابعی تعریف کرد که وقتی پنجره ( بت ) بسته میشه سشن سایتتون رو از بین ببره اما فکر کنید اگر مثلا سایت شما توی 3 تا تب باز باشه و وقتی یکیش بسته شه سشن شما هم از بین میره در صورتی که اون 2 تای دیگه هنوز باز هستند !
آیا با این مورد مشکلی ندارین ؟!

matrixhassan
چهارشنبه 29 آذر 1391, 18:22 عصر
چرا دارم یه مشکلم همینه و یه مشکل از بین رفتن سیشنه !

siavashsay
چهارشنبه 29 آذر 1391, 18:30 عصر
والله نمیدونم سیستمی که دارید واسش کد نویسی میکنید چیه !
اگر یکم توضیح بدید اینکار برای چی هست شاید بشه بهتر کمک کرد :)

matrixhassan
چهارشنبه 29 آذر 1391, 18:45 عصر
تو اون یکی تاپیک که برای رزرو بنر بود اون یه آگهی که در ابتدای سایت برای کسی که وارد سایت میشه نشون داده میشه و من میخوام این آگهی برای کسی که وارد سایت شده یکبار نشون داده بشه که برای این کار از سیشن استفاده کردم و اگه مرورگر ببنده و دوباره وارد سایت بشه بازم اون آگهی رو میبینه ولی اگه همونطوری که گفتم اگه تب دیگه باز باشه اون آگهی نشون داده نمیشه و فکر کنم این یه ضعف میشه برای سایتم مشکل اینه ؟

siavashsay
چهارشنبه 29 آذر 1391, 19:00 عصر
- آیا شما از Rotation Banner استفاده میکنید ؟!

matrixhassan
چهارشنبه 29 آذر 1391, 19:06 عصر
1- نمیدنم چیه . نه

2- آیا اگه دوباره نشون داده نشه مشکل نیست ؟ کاربر میگه سایتو دوباره باز کردم ولی چیزی نیومد . شما که برنامه نویسی شاید برات مهم نباشه ولی کاربر شاید براش مهم باشه . یا یه دید منفی ایجاد بشه . هست همچین مسائلی

برای منم این یه مسئله شده میخوام بدونم میشه یه کاریش کرد .

siavashsay
چهارشنبه 29 آذر 1391, 19:29 عصر
راستش اصلا نمیدونم چرا میخواید هر کاربر فقط یک بار بتونه اون اگهی رو ببینه و اینکه چرا از سشن استفاده کردید !
خوب وقتی یکی میاد یک اگهی رو واسه یک هفته میخره خوب باید هربار که هر کاربری یا هرکسی وارد سایت شد اون اگهی رو ببینه و وقتی که مدت زمانش تموم شد اون اگهی تموم شه !
راستش من خودم الان دارم رو یه پروژه خارجی کار میکنم که فقط کارش تلبیغات و نشون دادن آگهی هست که همش هم باید مدت زمان ثبت و انقضا داشته باشه !
یعنی این سایت دیگه آخر سایت تبلیغاتیه !
Rotation Banner - Fixed Banner - Priod Time Banner و 100 نوع دیگه تبلیغ دیگه داره !
اما هنوز متوجه مورد شما نشدم :))