PDA

View Full Version : سوال: نحوه Log گیری از فعالیت کاربران



m_s_best
یک شنبه 29 مرداد 1391, 09:59 صبح
سلام دوستان
خواهش ميكنم اگه چيزي از log گيري ميدونيد راهنماييم كنيد.چندين با سوالم پرسيدم اما هيچكس راهنماييم نكرد.
بازم ازتون خواهشمندم بهم بگين چطوري اعمالي كه تو سايت انجام ميشه رو بايد log گرفت؟براي اينكه ببينيم كيا تو سايت ميان ؟كي اومدن ؟و چكارا كردن؟
ممنون

desatir7316
یک شنبه 29 مرداد 1391, 11:13 صبح
سلام
سوال شما دقیقا اینجا پرسیده شده !!! (http://bytes.com/topic/php/answers/731519-how-create-log-file-php)

یه نگاهی هم به اینا بنداز:
http://www.coderprofile.com/networks/articles/72/php-how-to-make-a-log-file
http://www.stanford.edu/dept/its/communications/webservices/wiki/index.php/How_to_create_logs_with_PHP

MMSHFE
یک شنبه 29 مرداد 1391, 12:21 عصر
با سلام، لطفاً عنوان مناسب برای تاپیکها انتخاب کنید. با توجه به جدید الورود بودنتون، این بار صرفاً اقدام به اطلاع رسانی شد. درصورت تکرار، مطابق قوانین سایت برخورد خواهد شد. لینک قوانین سایت توی امضای بنده موجوده که میتونید مطالعه کنید.

m_s_best
دوشنبه 30 مرداد 1391, 05:59 صبح
ممنون از راهنماييتون.اما اگه ميشه ساده تر برام توضيح بدين.من اطلاعاتم خيلي كمه

MMSHFE
دوشنبه 30 مرداد 1391, 13:16 عصر
ببینید دوست عزیز، Log گیری صرفاً یک ایده هست که میگه: اون دسته از فعالیتهای کاربران در سایت که برای شما مهم هست، یه جایی برای مراجعات بعدی ذخیره بشه. مثلاً اینکه یک کاربر در فلان ساعت وارد سایت شد، به صفحه فلان رفت و...
پیاده سازی این ایده هم کار خاصی نداره. کافیه یک فایل (مثلاً log.txt) یا یک جدول توی دیتابیس داشته باشین که با هر فعالیت کاربر، اون رو بروزرسانی کنید. کد دقیقی هم نمیشه ارائه داد چون هر سایت، یکسری کارها براش مهمه که میخواد Log بگیره. مثلاً یک سایت ممکنه فقط ورود و خروج براش مهم باشه ولی سایت دیگه، هر صفحه ای که کاربر بازدید میکنه رو ذخیره کنه. کدی هم که برای این کارها میشه درنظر گرفت بسته به اینکه میخواین Log رو توی فایل ذخیره کنید یا توی دیتابیس، متفاوته. مثلاً اگه کد زیر رو توی صفحه مقصد فرم لاگین بعد از اعتبارسنجی و ورود موفقیت آمیز کاربر (و احتمالاً تعریف سشن برای اون) بگذارین:


date_default_timezone_set('Asia/Tehran');
$log = fopen('log.txt', 'a');
fwrite($log, date('Y/m/d H:i:s') . "\t<LOGIN>\t\t" . $_POST['username'] . PHP_EOL;
fclose($log);

اونوقت با هر بار لاگین شدن فرد، عبارتی شبیه متن زیر به انتهای فایل log.txt اضافه میشه:

2012/08/20 13:38:42 <LOGIN> alireza
یا مثلاً اگه کد زیر رو توی صفحه logout.php (خروج از سایت) و قبل از حذف سشن کاربر بگذارین:


date_default_timezone_set('Asia/Tehran');
$log = fopen('log.txt', 'a');
fwrite($log, date('Y/m/d H:i:s') . "\t<LOGOUT>\t\t" . $_SESSION['username'] . PHP_EOL;
fclose($log);

اونوقت با خروج هر کاربر از سایتتون، یک خط شبیه عبارت زیر به انتهای فایل log.txt اضافه میشه:

2012/08/20 13:45:23 <LOGOUT> alireza
به همین راحتی، شما میتونید بقیه کارها مثل بازدید هر صفحه و... رو هم Log بگیرین.
موفق باشید.

eshpilen
دوشنبه 30 مرداد 1391, 16:36 عصر
مهندس اونوقت اگر اطلاعات مختلفی رو لاگ کنیم، بعد هکرها نمیتونن از این برای پر کردن حجم در دسترس سایت استفاده کنن؟
یعنی مثلا حتی با یک Botnet کوچک هم اگر حمله صورت بگیره فکر کنم سهمیه دیسک سایت بزودی پر بشه. البته اگر حجم دیسک خیلی زیادی در اختیار نداشته باشیم.
من خودمم با این مسئله در پروژهء سیستم رجیستر و لاگین امنیتیم مواجه شدم که مثلا سیستم باید تلاشهای لاگین ناموفق رو ثبت کنه، اما از طرف دیگه تحت حمله های سنگین DDOS و اینها ممکنه فضای دیسک/دیتابیس سایت پر بشه و عملا سیستم از کار بیفته. بخاطر همین یه محدودیت تعداد قابل تنظیم برای اینطور اطلاعاتی که ذخیره میشن گذاشتم.

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

m_s_best
دوشنبه 30 مرداد 1391, 17:45 عصر
حالا براي اين مورد چكار كنم؟امنيت تو سايت از هر چيزي مهمتره!

MMSHFE
دوشنبه 30 مرداد 1391, 18:13 عصر
معمولاً سایتهای بزرگ تا چند ماه فایلهای Log رو نگهداری میکنن و بعد از اونها Backup میگیرن و فایل Log رو خالی میکنن. بالأخره هر چیزی هزینه ای هم داره. اگه امنیت میخوایم، باید به فکر فضای هاست خوب هم باشیم.