PDA

View Full Version : سوال: ساخت سشنی که هیچوقت از بین نره



mbasirati
پنج شنبه 02 خرداد 1392, 18:06 عصر
سلام
من برای سایت دو زبانه، یه سشن ایجاد میکنم که مقدار Fa یا en رو توی خودش نگه میداره و بر اساس مقدار این سشن محتوای سایت رو نشون میده. حالا من دوتا سوال دارم:
با توجه به این که سشن بعد یه مدت (که پیش فرضش 20دقیقه س) از بین میره. برای همین موقعی که مثلا یه جایی که چنین کدی دارم ارور نمایش داده میشه:
if (session["mylang"].ToString()=="fa")
{
//my code
}

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

و سوال دوم اینه که برای این استفاده فک میکنم اگه سشن هیچوقت از بین نره بهتر باشه. پس چه جوری میتونم تنظیم کنم که سشن هیچوقت از بین نره؟ البته فقط این سشن، یعنی session["mylang"]

ایمان مدائنی
پنج شنبه 02 خرداد 1392, 19:31 عصر
خب دوست من شما هم مثل بقیه سایت ها از کوکی استفاده کن
زبان انتخاب شده رو در کوکی ست کن

mbasirati
پنج شنبه 02 خرداد 1392, 19:42 عصر
خب دوست من شما هم مثل بقیه سایت ها از کوکی استفاده کن
زبان انتخاب شده رو در کوکی ست کن

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

fakhravari
پنج شنبه 02 خرداد 1392, 19:44 عصر
سشن از بین میرود .
قبلش باید با try چک کنید و اگر نبود مقدار دهی اولیه کنید.

saeed_sho
جمعه 03 خرداد 1392, 12:14 عصر
کلا بهترین روش در سایت های دو زبانه برای نگه داشتن زبان انتخابی کاربر سشن یا کوکی؟کدومش؟

ali9698
جمعه 03 خرداد 1392, 12:22 عصر
فکر کنم بهترین روش querystring باشه

_behnam_
جمعه 03 خرداد 1392, 14:16 عصر
بهترین راه همون کوکی هست اما میتونید آخرین تغییر سشن هارو توی دیتابیس هم ذخیره کنید و در صورت نبودن لود کنید.
اما تا وقتی که کاربر سایت رو نبسته که سشن حذف نمیشه! اگه هم بست و دوباره خواست وارد بشه خوب کوکی فرستاده میشه.

_behnam_
جمعه 03 خرداد 1392, 14:20 عصر
سشن از بین میرود .
قبلش باید با try چک کنید و اگر نبود مقدار دهی اولیه کنید.
همشهری سری که دردنمیکنه که دستمال نمیبندن :لبخند: خوب وقتی میتونه با if موجودیت یک سشن رو چک کنه چرا try بزاره؟
if (Session["mylang"] != null)
{
if (Session["mylang"].ToString() == "fa")
{

}
}

mbasirati
جمعه 03 خرداد 1392, 14:34 عصر
اما تا وقتی که کاربر سایت رو نبسته که سشن حذف نمیشه!

تا اونجایی که من میدونم سشن یه time out داره که به صورت پیش فرض 20 دقیقه س و بعدش سشن از بین میره. یعنی در صورتی که شما 20دقیقه یه صفحه رو بدون تغییر باز بذاری سشن از بین میره.

fakhravari
جمعه 03 خرداد 1392, 16:27 عصر
همشهری سری که دردنمیکنه که دستمال نمیبندن :لبخند: خوب وقتی میتونه با if موجودیت یک سشن رو چک کنه چرا try بزاره؟
if (Session["mylang"] != null)
{
if (Session["mylang"].ToString() == "fa")
{

}
}
میتونی شما بزارید :بامزه: بعدها نگی نگفتم