• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کنترل کارهای کاربران
#1
سلام

یک وب اپلیکیشن داریم که هر کاربر مجار به ورود مقادیر و حذف یکسری مقادیر می باشد
میخوام کارهای کاربرها رو لاگ کنم که مثلا کدوم یوزر چه رکوردی ایجاد ، حذف ، یا ویرایش کرده با زمان و تاریخ

چه ایده ای به نظرتون میرسه ؟؟؟؟؟
  پاسخ
تشکر شده توسط :
#2
سلام و وقت بخیر

یک table مخصوص این مورد ایجاد کنین و در هنگام حذف و اضافه و موارد دیگر ، اطلاعات کاربر رو اعم از نام کاربری ، آی پی ، اطلاعات مرورگر ، نوع کار انجام شده(حذف - اضافه - ویرایش) و بخشی که این مورد را انجام داده است(به عنوان مثل حذف خبر 21 با عنوان "راه اندازی مجدد سایت") ، تاریخ و زمان رو insert کنین در دیتابیس.

یه page هم مخصوص خودتون ایجاد کنین که اطلاعات ثبت شده در این table را لیست کند.
  پاسخ
تشکر شده توسط : ImanAzadi a76205
#3
من خودم هم همین روش تو ذهنم بود اما مطمئن نبودم بنظرتون راه دیگه ای هم هست ؟

با این روش حجم کد نویسی خیلی زیاد میشه.

من یک جدول در نظر گرفتم با فیلد های زیر :

id-userID-ip-tableName_changeID-timeStamp_changeType

userID : آی دی یوزری که تغییر ایجاد کرده
tableName: نام جدول که تغییرات روش انجام شده
changeID : آی دی از جدول فوق که تغییر کرده
timeStamp: زمان تغییرات
changeType: نوع تغییرات (اضافه ، آپدیت ، حذف)

در ضمن من هیچ رکوردی رو حذف نمیکنم چون اولا تمام جداول به هم ارتباط دارند و حذف یک آیتم میتونه مواردی رو از جدول دیگر حذف کنه (cascade) ، فقط یک فیلد به هر جدول اضافه کردم و اونو true یا false میکنم که true به منزل حذف میباشد

و یک نکته اساسی : ما کاربر میخواد یک رکورد اضافه کنه که از قبل آی دی اون رکورد رو نداریم ، پس چطوری میتونیم در جدول بالا آی دی (changeID) رو اضافه کنیم ؟؟؟

اگر جوابتون استفاده از lastInsertId در pdo هست باید بگم اگر در کسری از ثانیه ای که این دستور فراخوانی میشه یک رکورد دیگه توسط کاربر دیگه اضافه بشه که این دستور ای دی رکوردی که کاربر دیگه اضافه کرده رو برمیگردونه

راه حل چیست ؟؟؟
  پاسخ
تشکر شده توسط :
#4
HuhHuhHuhHuhHuhHuhHuh
  پاسخ
تشکر شده توسط :
#5
(۱۳۹۵ تير ۱۱, ۰۹:۵۰ ق.ظ)ImanAzadi نوشته: اگر جوابتون استفاده از lastInsertId در pdo هست باید بگم اگر در کسری از ثانیه ای که این دستور فراخوانی میشه یک رکورد دیگه توسط کاربر دیگه اضافه بشه که این دستور ای دی رکوردی که کاربر دیگه اضافه کرده رو برمیگردونه

سلام،
از همین lastInsertId استفاده کن، مشکلی نداره. از کجا خوندی که همچین اتفاقی می‌افته؟
غایب
  پاسخ
تشکر شده توسط : ayoubsys
#6
جایی نخوندم ولی کار غیر ممکنی نیست
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۵ تير ۱۲, ۰۱:۲۲ ب.ظ)ImanAzadi نوشته: جایی نخوندم ولی کار غیر ممکنی نیست

چی غیر ممکن نیست؟
در کل باید بگم نه، این اتفاق نمی‌افته. بر اساس هر ارتباطی که وصل میشه (هر کاربر) مقادیر جدا میشن. هیچ تاثیری روی هم دیگه ندارن. خیالت راحت.
غایب
  پاسخ
تشکر شده توسط : ImanAzadi
#8
منظورتون این هست اگر در فاصله زمانی که کاربر a دستور lastinsertid رو اجرا میکنه کاربران دیگه چند تا رکورد وارد کنه ولی دستور فوق بازم ای دی آخرین رکورد که کاربر a وارد کرده رو برای کاربر a برمیگردونه ????

منبع خاصی خوندید ؟؟؟؟
  پاسخ
تشکر شده توسط :
#9
بله بله، چرا اینقدر براتون عجیب هست این موضوع؟ Big Grin
یکم جستجو کنید خب.
[لینک۱]
[لینک۲]
غایب
  پاسخ
تشکر شده توسط : ImanAzadi ayoubsys


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان