PDA

View Full Version : مبتدی: سوال در مورد session ها و لوگین



rezahastam
جمعه 24 اردیبهشت 1389, 02:42 صبح
سلام به همه ی دوستای گل برنامه نویسم
میخوام بدونم وقتی کسی بخواد تو یه صفحه لوگین کنه چطور تو صفحات دیگه شناخته میشه؟

طبیعتا وقتی شخص لوگین میکنه ما یه سشن ایجاد میکنیم با نام کاربری طرف.
خوب حالا وقتی طرف میره به یه صفحه دیگه مثلا user.php چطور باید شناخته بشه؟ ممکنه 10 نفر همزمان لوگین کرده باشن و 10 تا سشن ایجاد شده باشه. این سشن چطور شناسائی میشه؟ (در حالی که ما دوباره یوزر رو از طرف نمیگیریم)

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

ricky22
جمعه 24 اردیبهشت 1389, 02:59 صبح
خب id طرف یا نام کاربریش رو در session ذخیره کنید (یه فیلد که unique)
بعد session رو به همه صفحات انتقال بدید

rezahastam
جمعه 24 اردیبهشت 1389, 03:36 صبح
ممنون از پاسختون
مشکل من اینه که اساسا این سشن چطور شناخته میشه؟
مثلا از صفحه a وقتی میریم به صفحه b تو صفحه b سشن رو استارت میکنیم و میگیم اگه وجود داشت خوب حالا این کاربر هست و اینا رو نشونش بده و...

یعنی تو صفحه b که دیگه اثری از username نیست هست؟
البته چیزائی که به ذهن من رسید این بود که علاوه بر سشن، کوکی هم ست بشه و نام کاربری تو کوکی ذخیره بشه و سشن با نام کاربری داخل کوکی بررسی بشه. ولی به اسکریپتهایی که داشتم نگاه انداختم و متوجه شدم خبری از کوکی نیست و فقط وجود سشن بررسی میشه.

واقعا برام سوال شده مخصوصا که اول راه هستم

rezahastam
جمعه 24 اردیبهشت 1389, 13:34 عصر
اووووووو واقعا ممنون از این روشنگری که انجام دادید
من فکر میکردم که سشن فقط تو سرور ذخیره میشه واسه همینم کمی گیج شده بودم. مرسی از پاسختون

یه سوال دیگه هم دارم: با بستن پنجره مرورگر سشن هم از بین میره؟ (اگه از بین میره کدومش؟ سمت کاربر یا سمت سرور یا هردو؟)

Reza1607
جمعه 24 اردیبهشت 1389, 14:11 عصر
دوست عزیز سشن فقط در قسمت سرور ایجاد می شه به همین خاطر هم امنیتش نسبت به کوکی که در کلاینت ذخیره می شه بیشتره

بعد از بستن پنجره سشن ازبین می ره

rezahastam
جمعه 24 اردیبهشت 1389, 19:49 عصر
چی شد که؟ پست بالا چرا پاک شد؟ اطلاعاتش غلط بود؟

این چیزا که من میگم ببینید درسته؟
1- سشن در سمت سرور ایجاد میشه
2- سشن وابسته به مرورگر کاربر هست (وقتی سشن ست میشه طرف خودش رو میشناسه و میدونه که سشن با نام user name مربوط به فلان مرورگر هست و با سشن های موجود دیگه قاتی نمیکنه)
3- سشن با بستن پنجره مرورگر از بین میره! پس وقتی سایتی سشن رو برای خودش مرجع ورود قرار میده الزامی نداره که اون کاربر اون سایت موقع خروج لاگ اوت کنه

حالا یه سوال دیگه: سایتهایی مثل گوگل چطور کاربر رو میپذیرن؟ یعنی سایتهایی که اطلاعات کاربر رو به خاطر میسپارن و با خروج کاربر و بازگشت مجددش همچنان کاربر login هست مثل سرویس جیمیل؟
آیا از کوکی استفاده میکنن؟ اگه آره امنیت کوکی مناسب هست؟

ممنون

trade_mark
جمعه 24 اردیبهشت 1389, 20:22 عصر
این چیزا که من میگم ببینید درسته؟
1- سشن در سمت سرور ایجاد میشه
2- سشن وابسته به مرورگر کاربر هست (وقتی سشن ست میشه طرف خودش رو میشناسه و میدونه که سشن با نام user name مربوط به فلان مرورگر هست و با سشن های موجود دیگه قاتی نمیکنه)
3- سشن با بستن پنجره مرورگر از بین میره! پس وقتی سایتی سشن رو برای خودش مرجع ورود قرار میده الزامی نداره که اون کاربر اون سایت موقع خروج لاگ اوت کنه
درسته.
جمیل و ایمیل یاهو برای اینکه کاربر هر دفعه لاگین رو انجام نده از کوکی استفاده می کنند
البته این به این معنی نیست که مثلا یه کاربر اگه یکبار لاگین کرد برای همیشه به صورت لاگین باقی میمونه
یاهو مثلا اگه بعد از چند روز به یا چند بار دوباره از شما پسورد رو می خواد(یعنی دوباره باید لاگین کنین)

mhd.ghavam
یک شنبه 16 خرداد 1389, 17:26 عصر
سلام دوست عزیز من یک لاگین ساختم با استفاده از session که خوب درست هم کار می کرد اما یک ایراد داشت اون هم اینکه اگر پنجره رو می بستم دوباره باید لاگین میشدم اگر یک بنجره دیگه باز میکردم تو اون پنجره لاگین نبودم می خوام مثل سایت های دیگه باشه یعنی مثل یاهو اگر پنجره IE را بستیم باز هم باز کردیم لاگین باشیم اگر یک IE دیگر هم باز کردیم در آن هم لاگین باشیم می دانم که باید از کوکی استفاده کرد میشه یک نمونه کد به من بدید؟ یعنی یک نمونه پروژه؟

trade_mark
دوشنبه 17 خرداد 1389, 10:35 صبح
دوست عزیز شما باید با دستور زیر یه کوکی رو ایجاد کنید:

setcookie(name,value,expire)value و expire اختیاریه
مثلا

setcookie("username","trade_mark")برای خواندن یک کوکی هم میتونی از دستور زیر استفاده کنی:

echo $_COOKIE['username']یه مثال پیشرفته تر در مورد کوکی :

setcookie("username","trade_mark",time()+60*60+24*30)
این مثال یه کوکی واسه مدت 30 روز درست میکنه
یه نکته مهم .هرگز نام کاربری یا پسورد رو در کلاینت به وسیله کوکی ذخیره نکن.چون خیلی راحت میشه به مقادیر آنها دسترسی داشت.شما برای این کار می تونی شماره کاربر رو در یک کوکی ذخیره کنی و به وسیله اون یه کاربر رو لاگین شده حساب کنی
امیدوارم خوب توضیح داده باشم
باز هم اگه سوالی در مورد کوکی بود در خدمتیم:قلب: