PDA

View Full Version : تشخیص login



yegane8
سه شنبه 01 مرداد 1392, 05:05 صبح
سلام
چطوری باید بفهمم سایت های مختلف از چه شیوه برای تشخیص login استفاده می کنند مثلا همین سایت از چه شیوه ای استفاذه می کنه یا فیسبوک چرا یا ...
چرا هیچکدوم شون از سشن استفاده نمی کنند و PHPSESSID رو ست نمکنند رو کلاینت ؟
یه سوال دیگه فرض کنید الان مشکل login نداریم مثلا تو همین سایت برنامه نویس یکی اومده login کرده حالا دیگه مسلما اوون قسمت نام کاربری و رمز عبور باید حذف شن دیگه
من می خوام بدونم بعد از log in , ما داریم کلا به یه صفحه دیگه forward میشیم که همه ی قسمت هاش به جز همون تیکه بالاش با صفحه ی اصلی سایت یکیه ؟ اگه جواب بله است چرا ادرس هر 2 صفحه با هم یکسان است ؟

learn30t
سه شنبه 01 مرداد 1392, 05:41 صبح
ببینید شما وقتی با سشن اطلاعات را ذخیره کنید بعد از اینکه کاربر مرورگر رو بست باید خارج بشه و بعد از این که باز کرد دوباره باید لاگین کنه ولی در این سایت ها صادق نیست!
این سایتها برای لاگین شدن کاربرا از کوکی استفاده میکنن که مثل سشن عمل میکنه ولی بعد از بستن مرورگر از بین نمیره و کاربر لاگین میمونه تازمانی که خودتان (سایت) حذف کنید یا تاریخ انقضا بهش داده باشید

فکر کنم این ادرس به دردتون بخوره :

http://www.w3schools.com/php/php_cookies.asp

سوال دوم را متوجه نشدم

hamedarian2009
سه شنبه 01 مرداد 1392, 09:45 صبح
سلام
در مورد سوال اول بهترین راه برای لاگین کاربر فعلا session هست و فکر کنم این سایت هم از سشن استفاده کرده در ضمن سشن با بستن مرورگر از بین نمیره
سوال دوم رو اگه درست فهمیده باشم
شما منظورتون اینه که فرم لاگین سایت که در بالای صفحه نمایش داده میشه وقتی کاربر لاگین میکنه به جاش منوی کاربر میاد آیا به یه صفحه دیگه فوروارد میشه یا نه؟
مسلما نه به صفحه دیگه ای نمیره بلکه فرم مخفی میشه و منو توهمون قسمت میاد تا زمانی که دوباره دکمه خروج رو بزنه

در

eshpilen
سه شنبه 01 مرداد 1392, 13:30 عصر
سلام
چرا هیچکدوم شون از سشن استفاده نمی کنند و PHPSESSID رو ست نمکنند رو کلاینت ؟

البته توجه داشته باشید که اسم کوکی سشن قابل تغییره.
شاید این سایتها اسم کوکی سشن رو تغییر دادن.

ولی کلا اصراری به استفاده از سشن نیست. سشن بد نیست ولی خیلی خوب هم نیست بخصوص در برنامه های حرفه ای و سطح بالا.
استفاده از سشن و کوکی بصورت ترکیبی هم که برنامه رو پیچیده و حجیم میکنه.
یه مثال میزنم. فرض کنید کاربر رو لاگین کردید و الان با سشن در سایت لاگینه، خب حالا شما یک دقیقهء دیگه به هر دلیلی اون کاربر رو از سایت حذف میکنید یا Ban میکنید. حالا برنامهء شما چطور میفهمه که چنین اتفاقی رخ داده و جلوی دسترسی کاربر رو میگیره؟ چون توی سشن کاربر که چیزی در این مورد نیست و موقعی سشن تشکیل شده که اون جریانات درکار نبوده.
یک راه حل اینه که مثلا با فواصل زمانی سشن رو با دیتابیس مقایسه کنید.
اگر در هر بار درخواست بخواید این کار رو انجام بدید که خب دارید هم هزینهء سشن رو میدید و هم هزینهء دیتابیس و هم پیچیدگی و حجم بیشتر برنامه.
البته در روش چک کردن با فواصل زمانی هم پیچیدگی و حجم بیشتر برنامه وجود داره؛ در عین اینکه پاسخ سیستم آنی نیست و ممکنه تامدتی بعد از اینکه کاربری از طرف مدیریت مسدود شده همچنان بتونه در سایت فعالیت کنه.
بعد سشن یکسری تنظیمات و موارد امنیتی هم داره که زیاد جالب نیستن. یعنی دونستن و مسلط شدن و درست کردن یا مطمئن شدن از درست بودن اونا مقداری کار و دردسر داره. شونصد مدل تنظیمات داره از زمان کوکی بگیر تا محل ذخیرهء سشن تا درج آیدی سشن در URL ها و غیره.

بنظر بنده سشن به درد برنامه های عادی تا متوسط میخوره.
در سیستمهای پیشرفته تر باید سیستم اختصاصی خودشون باشه که کاملا با بقیهء برنامه یکپارچه باشه و چیزی کم یا زیاد نداشته باشه.
البته یک کاربرد خوب برای سشن، ذخیره اطلاعات موقتی (مثل هش کپچای فرمها) و دارای اهمیت امنیتی کمتر است.
یک مزیت سشن که همیشه گفته میشه اینه که با سیستم فایل کار میکنه (و نه دیتابیس)، و بنابراین از نظر پرفورمنس بهتر از دیتابیسه.
ولی باید توجه داشت که در سیستمهای بزرگ و پیچیده اونقدری کارهای مهم و ضروری با دیتابیس هست که بهرصورت باید اتصال به دیتابیس و انجام یک یا چند کوئری در هر درخواست (یا بیشتر درخواستها) انجام بشه که این مزیت دیگه کمرنگ میشه و شاید عملا هیچ تاثیر مشهودی نتونه داشته باشه. ترکیب سشن و دیتابیس میتونه برنامه رو به میزان زیادی پیچیده و حجیم بکنه و مشکلات باگ و امنیت ایجاد کنه و حتی مشکل در پرفورمنس. بنابراین بنظر بنده بهتره ساختار برنامه یکدست تر باشه (اگر با حذف سشن مشکل پرفورمنسی دیده نشه).

درکل من نمیگم که از سشن استفاده بشه یا نشه، ولی اگر کسی و سایتی هم کلا استفاده نکردن یا خیلی کم و در جاهای غیرحساس استفاده کردن، هیچ عجیب نیست و عیبی نداره که شاید بهتر هم بوده.
من خودم در برنامم بعد از چند نسخه و برخورد با مسائل و مشکلاتی به همین نتیجه رسیدم که کلا سشن رو حذف کنم و خودم با کوکی و دیتابیس کار کنم عاقلانه تره. البته از سشن هم در بخشهایی مثل ذخیرهء هش کپچا در فرم رجیستر و اینها استفاده کردم (یک کاربردی که از احراز هویت حساسیت خیلی کمتری داره).
البته اینم بگم که اگر تخصص کافی در امنیت ندارید بهتره از سشن استفاده کنید بجای اینکه خودتون با کوکی و دیتابیس سیستم لاگین و احراز هویت درست کنید!
یه زمانی که اصلا سشن حفرهء امنیتی در خیلی سایتها ایجاد میکرد (دسترسی به سشن های دیگران که در ‎/tmp ذخیره شده بودن). ولی الان ظاهرا وضع سرویس دهنده ها از این نظر خیلی بهتر شده.
بعضیا فکر میکنن سشن چیه و حتما باید در برنامه ها ازش استفاده کرد، درحالیکه سشن چیز خیلی خاص و بدون جایگزین های حتی بهتر نیست.
سشن یک زیربخش از PHP است که برای راحتی برنامه نویسها در نیازهای متداول برنامه نویسی وب طراحی شد، که البته به گمانم زیاد هم خوب و بدون نقص طراحی نشد، ولی مثل بقیهء PHP و تاریخش درکل بد هم نبود و مفید واقع شد.

H:Shojaei
سه شنبه 01 مرداد 1392, 14:22 عصر
سلام
جواب سوال اولتون رو كه فكر كنم گرفته باشيد براي سوال دومتون يه مثال خيلي خيلي ساده ميزنم.
ما به يه صفحه ي جديد نميريم بلكه براي اين كار ما فقط به چند تا مقايسه ي كوچيك نياز داريم كه مثلا اگه كاربر لاگين بود يه چيز نمايش بده و اگر نبود يه چيز ديگه:

if (كاربر وارد شده)
{
منوي كاربر رو نمايش بده
}
else
{
فرم لاگين رو نمايش بده
}

yegane8
سه شنبه 01 مرداد 1392, 17:27 عصر
ممنون از همه دوستان

مسلما نه به صفحه دیگه ای نمیره بلکه فرم مخفی میشه و منو توهمون قسمت میاد تا زمانی که دوباره دکمه خروج رو بزنه
اگه مثالی سراغ دارید لطفا بزنید

godofphp
سه شنبه 01 مرداد 1392, 17:37 عصر
یه صفحه داری در کل ... توش کد نویسی میکنی میگی این تیکه ها وقتی کاربر وارد شده نمایش بده این تیکه ها رو نمایش نده
یا اصلا میگی اگه کاربر وارد شد این فایل رو اینکلود کن و نشون بده اگرنه این فایل رو اینکلود کن
این مونده به برنامه نویس که از چه تکنیکی استفاده کنه
در ضمن شما میتونید با استفاده از تکنولوژی ایجکس هم یه لاگین درست کنید که بدون اینکه صفحتون جای دیگه ای بره همونجا تو خود همون صفحه کاربر ها وارد بشن یا خارج بشن

hamedarian2009
سه شنبه 01 مرداد 1392, 18:38 عصر
ممنون از همه دوستان

اگه مثالی سراغ دارید لطفا بزنید
با if else که یکی از دوستان گفتن میشه اینکارو کرد
و با فناوری AJAX هم میشه اینکارو پیاده سازی کرد
این هم یک مثال :
http://stackoverflow.com/questions/14449118/php-ajax-login