PDA

View Full Version : سوال: تاریخ لاگین کردن کاربر



هزاره سوم
شنبه 08 شهریور 1393, 21:12 عصر
سلام
من میخواستم بخش log پروژه م رو کامل کنم و گزارش کاملی از لاگین کردن یوزر هام و اینکه چه مدت توی وبسایت هستن داشته باشم.. مثلا یه بخش داشته باشم تحت دسترسی ادمین که بتونه لیست کاربران لاگین کرده توی وبسایت رو ببنه مثلا در ماه گذشته و اینکه فلان یوزر در چه تاریخ و ساعتی وارد سایت شده .. واطلاعاتی مثل آیپی واقعی هم شاملش بشه:متفکر:
میشه کمک کنید و بگید چطور میتونم این بخش رو کامل کنم؟ با سشن میشه این کار رو انجام داد؟؟؟؟؟:متفکر:
ممنون:لبخندساده:

مهرداد سیف زاده
یک شنبه 09 شهریور 1393, 07:39 صبح
این کار رو میشه با اضافه کردن یک فیلد دیگر به جدول user با عنوان last_login که آخرین باری که کاربر وارد سایت شده رو در خودش ذخیره میکنه در واقع این فیلد با هر بار لاگین کاربر update میشه و هر بار که این جدول رو query بزنید کاربران آخرین باری که لاگین کردید رو میبینید.
ولی اگر دیگه خیلی بخواید ریز بشید که مثلا کاربر تاریخهای لاگین و ip و مشخصات دیگر مثل مرورگر و سیستم عاملش رو داشته باشید باید یه جدول log_login برای لاگین کاربران درست کنید و با هر بار لاگین و ورود و خروج کابران یک رکورد به این جدول اضافه کنید تا مدیریت ببینه در چه تاریخی فلان کاربر با چه ip‌وارد سایت شده.

php_programmer021
یک شنبه 09 شهریور 1393, 07:53 صبح
با سلام
دقیقا یا سشن میشه این کارو انجام داد.
ببین سشن ها رو توی دیتابیس ذخیره کن و از اونجا تمام این کارهایی که گفتی رو انجام بده.
اگر هم فقط دنبال این هستی که ساعت لاگین کاربر رو نمایش بدی از تابع تایم استفاده کن اگر هم می خوایی فارسی باشه از تابع jdf استفاده کن.
لینک قرار دادن سشن ها داخل دیتابیس (http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL)

هزاره سوم
یک شنبه 09 شهریور 1393, 08:47 صبح
این کار رو میشه با اضافه کردن یک فیلد دیگر به جدول user با عنوان last_login که آخرین باری که کاربر وارد سایت شده رو در خودش ذخیره میکنه در واقع این فیلد با هر بار لاگین کاربر update میشه و هر بار که این جدول رو query بزنید کاربران آخرین باری که لاگین کردید رو میبینید.
ولی اگر دیگه خیلی بخواید ریز بشید که مثلا کاربر تاریخهای لاگین و ip و مشخصات دیگر مثل مرورگر و سیستم عاملش رو داشته باشید باید یه جدول log_login برای لاگین کاربران درست کنید و با هر بار لاگین و ورود و خروج کابران یک رکورد به این جدول اضافه کنید تا مدیریت ببینه در چه تاریخی فلان کاربر با چه ip‌وارد سایت شده.

ممنون از راهنمایی تون
چیزی که مد نظر من هست همون بخش دومه که همه جزئیات میخوام داشته باشم..حالا اینکه از چه مرورگری یا از کجا لاگین کرده واسم مهم نیست میخوام ..همین که این اطلاعات رو داشته باشم واسم مهمه :
1) نام کاربر
2) آی پی کاربر
3) ساعت ورود به سایت
4) تاریخ ورود به سایت
5) ساعت خروج از سایت

همین ...یعنی احتمالا این فیلد هایی هست به که به دیتابیسم بدم..
نام کاربری که خوب مشخصه با سشن در میارم..ساعت و تاریخ ورود به سایت هم میتونم بزارم درون تابع login که توی کلاس سشن من هست و همون لحظه بره توی دیتابیس..
ولی اینکه چه ساعتی از سایت خارج شده !! اینو نمیدونم چیکار کنم :متفکر: البته یک تابع logout دارم توی کلاس سشن که وقتی کاربر روی دکمه خروج کلیک کنه این تابع فراخوانی میشه ولی خیلی موقع ها کاربر خروج نمیزنه و مرورگر یا اون صفحه رو میبنده!!! این موقع چه کار کنم؟؟ این مشکل اصلی هست:متفکر:

مهرداد سیف زاده
یک شنبه 09 شهریور 1393, 09:35 صبح
شما برای کاربر از session استفاده میکنید یا کوکی هم استفاده میکنید. اگر از sessionاستفاده میکنید بسته به زمان ماندگاری session‌میتونید زمان خروج رو بدست بیارید. مثلا وقتی کاربری وارد شد اگر تابع logout فراخوانی نشد برای کاربر پس ۲۴ دقیقه بعدش میتونید زمان خروجش رو ثبت کنید. البته ۲۴ دقیقه رو گفتم چون زمان پیشفرض برای session مقدار 1440 ثانیه یا همون ۲۴ دقیقه هست که با تکنیکهایی کم و زیاد هم میشه. ولی اگر از کوکی هم استفاده کردید اون وقت دیگه کار سخه شاید شما کوکی رو روی ۱ ماه تنظیم کردید.
تکنیک دیگه زمان بسته شدن صفحه هست. زمانی که کاربر سایت رو لود میکنه و درون مرورگر سایت باز هست وقتی که داره میبنده از طرف جاوا اسکریپت یک event صدا زده میشه که شما میتونید بگیرید و اون رو به عنوان زمان خروج استفاده کنید. یعنی وقتی کاربر پنجره رو بست شما یک ajax میزنید به فایلی که قراره کنترل کنه که کاربر پنجره رو بسته. و در اونجا اگر کاربر لاگین بوده و کوکی هم استفاده کرده شما کوکی اون رو نکشید بلکه صرفا یک زمان خروج در نظر بگیرید و اگر از session‌استفاده کردید پس session رو بکشید و بزارید دوباره لاگین کنه و زمان خروج رو هم ثبت کنید و اگر اصلا لاگین نکرده که میگید شما را به خبر و ما را به سلامت(یعنی کاری باهاش ندارید)

برای گرفتن زمان بسته شدن در تگ بادی کد زیر رو بنویسید که میاد تابعی رو صدا میزنه


<body onunload="LogoutLog()">

و حالا تابع جاوا اسکریپت رو بصورت زیر بنویسید


function LogoutLog()
{
$.post('logout_check.php','',function(data){
if(data=='ok')
return true;
});
}

هزاره سوم
یک شنبه 09 شهریور 1393, 14:03 عصر
بازم ممنون به خاطر توضیحاتتون
بله من توی کل پروژه از سشن استفاده کردم و با توجه به اینکه ایجکس هنوز کار نکردم به نظرم بهتره از همون راه اولی که گفتید استفاده کنم.
چیزی که در مورد تایم سشن گفتین رو نمیدوسنتم
مگه سشن هم تایم داره و میشه اون رو تنظیم کرد؟؟ راستش برای بخش remember me هم به همچین چیزی نیاز داشتم و چون کل کلاسم با سشن نوشته شده مجبور بودم کوکی هم بیارم وسط :متفکر: چون میخواستم بهش تایم بدم.
مثلا اگر از همون 24 دقیقه دیفالت برای ذخیره تایم خروجی استفاده کنم ، تایم ورود هرچی بوده رو به علاوه 24 دقیقه کنم و این رو به عنوان دیفالت بزارم مگر اینکه تابع logout صدا زده شده باشه
درسته؟:متفکر:

مهرداد سیف زاده
یک شنبه 09 شهریور 1393, 14:13 عصر
هر چند تغییر زمان ماندگاری session‌یک کانفیگ سمت سروری هست ولی با تکنیکهایی قابل تغییر هست لینک زیر رو نگاه بندازید
http://stackoverflow.com/questions/6360093/how-to-set-lifetime-of-session
در مورد زمان خروج هم یا ajax و یا همون منطقی که گفتید هم درسته. البته شاید کاربر بعد از ۲۴ دقیقه هنوزم تو سایت بود بعدش میخواید چیکار کنید؟

هزاره سوم
یک شنبه 09 شهریور 1393, 14:28 عصر
درسته
اگر منطقی فکر کنیم تعداد کاربرایی که دکمه خروج بزنن خیلی کمه اکثرا فقط صفحه رو میبندن :متفکر:
نمیدونم فعلا شاید ساعت خروج رو توی دیتابیس یک مقدار دیفالت بدم تا بعد:ناراحت: