PDA

View Full Version : سوابق کاربر نرم افزار



damanpak
شنبه 10 فروردین 1392, 19:13 عصر
سلام به همه عزیزان
سال نو همگی مبارک
دوستان واسه ذخیره سوابق کاربر(Log)چه راهی رو پیشنهاد میدین؟
میخوام هرکاری که کاربر توی برنامه انجام میده یه جا نگه دارم

AliRezaBeytari
شنبه 10 فروردین 1392, 19:19 عصر
استفاده ار بانک اطلاعاتی

damanpak
شنبه 10 فروردین 1392, 19:23 عصر
استفاده ار بانک اطلاعاتی
دوست عزیز این رو میدونم که از بانک اطلاعاتی باید استفاده کنم اما میخوام بدونم که چه جدولی با چه فیلدهایی درست کنم

zahedi121
شنبه 10 فروردین 1392, 21:06 عصر
سلام
درباره برنامتون و رخداد هایی که باید ذخیره بشه هیچی نگفتید!
اینطوری ( که مطمئنا منظور شما نیست ) باید از صفحه نمایش فیلم بگیرید بنابراین نوع فیلدتون هم باید OLE باشد.

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

در ساده ترین روش شما میتونید یک فایل تکست بسازید و برای رویدادهای مهم مد نظرتون یک خط که حاوی متن رخداد است به همراه زمان انجام به آن اضافه کنید.
موفق باشید.

damanpak
شنبه 10 فروردین 1392, 23:00 عصر
من میخوام کارایی که هرکاربر برنامه انجام میده رو یه جا ذخیره داشته باشم
مثلا ممکنه کاربر توی جدول مشتریام که 12 تا فیلد داره بیاد 2 تا فیلد اطلاعاتشو تغییر بده
من میخوام یه جا این عملیات ذخره بشه که مثلا فلان کاربر اومد فیلد شماره تماس و کد ملی رو تغییر داد در تاریخ و ساعت فلان

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

hosseinbarnamenevis
شنبه 10 فروردین 1392, 23:25 عصر
به نظر من با چند تا فیلد میتونی این کارو انجام بدی به طور مثال
نام کاربر - نوع - شرح - عمل
حسین - حذف - توضیحات - عکس دیلت!
واسه قسمت شرح میتونی ابتکاری عمل کنی یعنی مثلا بنویسی: حذف مورد itmkala در تاریخ itmDate
اینکه بخوای چه فیلدهایی بزاری به نظرم بستگی به خودت داره
بلخره هرکس یه نظری داره

damanpak
شنبه 10 فروردین 1392, 23:39 عصر
ممنون از همه عزیزان که همکاری میکنند

به نظر من با چند تا فیلد میتونی این کارو انجام بدی به طور مثال
نام کاربر - نوع - شرح - عمل
حسین - حذف - توضیحات - عکس دیلت!و....دوست عزیز اول منم میخواتسم یه جدول با همین چنتا فیلد در نظر بگیرم
که ئاسه اضافه کردن رکورد جدید و یا حذف یک رکورد همه چی خوبه
اما واسه ویرایش اطلاعات کار یکم سخت میشه مثلا
شما فرض کن توی یک جدول که مثلا 15 تا فیلد داره چطوری بفهمم که کاربر کدوم فیلد رو ویرایش کرده؟
آخه توی جدول باید اینجوری ذخیره بشه که مثلا
حسین-جدول مشتری-فیلد کد ملی-مقدار 1 = 546852685-مقدار 2 (مقدار جدید)4545445
اینجوری سابقه خیلی خیلی کاملی داریم
راه حل دوست عزیزمون جناب zahedi121 راجع به فایل تکست خوب بود اما امنیت خیلی خیلی پایینه
ببینم خود شرکت مایکروسافت مثالی در این مورد نداره؟

zahedi121
دوشنبه 12 فروردین 1392, 23:09 عصر
سلام
برای امنیت و عدم دستکاری می تونید از ارسال داده ها بصورت باینری و روشهای اینکریپت کردن اطلاعات و رمز گذاری روی فایل و .. استفاده کنید. نمونه های مختلفش در تاپیکها هست.
ولی در مورد حذف ، خب بانک اطلاعات را هم میشه حذف کرد ! شما علی القاعده باید روی یک سیستم ادمین بک آپ تهیه کنید ، یا اصلا این فایل روی سیستم ادمین قرار می گیرد و یک آدرس که کاربر ازش اطلاعی نداره داخل برنامه تعریف میشه یا ...
میدونم اینها را هم میشه هک کرد ولی سایتهای امنیتی معتبر دنیا هم هک میشند ! شما باید به سطح معلومات کاربراتون نگاه کنید و بر اساس اون الگوریتمهای امنیتی پیشرفته تری انتخاب کنید.

موفق باشید

linux
سه شنبه 13 فروردین 1392, 03:31 صبح
سلام به همه عزیزان
سال نو همگی مبارک
دوستان واسه ذخیره سوابق کاربر(Log)چه راهی رو پیشنهاد میدین؟
میخوام هرکاری که کاربر توی برنامه انجام میده یه جا نگه دارم
برای log گرفتن در برنامه از log4net استفاده کنید در گوگل بگردید سایتش را پیدا می‌کنید با کلی اطلاعات مفید توانایی ذخیره log در دیتابیس و فایل و .... داره.

zahedi121
سه شنبه 13 فروردین 1392, 05:46 صبح
سلام
اگر از روش دوست گرامیمون linux خواستید استفاده کنید ، به این لینک (http://www.codeproject.com/Articles/42276/How-to-Use-Log4Net-with-VB-NET-A-Simple-Step-By-St) مراجعه کنید یک مثال و توضیحات کامل را ملاحظه میکنید.
موفق باشید.

amirmms
سه شنبه 13 فروردین 1392, 11:57 صبح
شما می توانید از بانک استفاده کنید و هم از فایل های متنی.
من بانک رو ترجیح می دم

damanpak
چهارشنبه 14 فروردین 1392, 22:32 عصر
ممنون از همگی دوستان من توی گوگل سرچ کردم و فایل log4net رو گرفتم اما از کار با اون رو نمیدونم چطوریه
لینکی هم که دادین رو زیاد متوجه نمیشم
اگه ممکنه بیشتر راهنمایی کنید

damanpak
پنج شنبه 15 فروردین 1392, 15:48 عصر
کسی نمونه سورس یا راهنمایی کاملتری راجع به log4net نداره؟
برنامه ام گیر همین قسمته فقط:گریه:

davood-ahmadi
پنج شنبه 15 فروردین 1392, 23:17 عصر
سلام دوست عزیز. من خودم از روشی استفاده کردم که شاید بنظر دوستان خوب نباشه ولی همین جواب داده و خیلی خوبه.
جدول LogInfo
id, EventDateTime , FormId, PirimaryId , ForeignId , TypeEvent,Description
FormId برای اینکه بدونم از کدوم فرم داره اطلاعات ثبت می شه
PirimaryId در زمان درج اطلاعات اگر 3 عملیات ویرایش ، حذف و درج صورت بگیره کلید اون جدول رو ذخیره می کنم مثلا Id پرسنلی و اگر رخداد و یا خطا باشه شماره خطا رو ذخیره می کنم
ForeignId مثلا برای یک شخص مرخصی ثبت می شه شماره پرسنلی رو در اینجا ذخیره می کنم
TypeEvent که نوع رخدادی که صورت پذیرفته ( حذف - ویرایش - درج - عملیاتهای سیستمی - خطاهای مدیریت نشده سیستم )
Description که شامل توضیحات بیشتر در مورد عملیاتهایی که صورت گرفته


من در عملیات ویرایش بعد از ویرایش اطلاعات توسط کاربر ، ابتدا اطلاعات رو از دیتابیس فراخونی می کنم و با اطلاعات کاربر مقایسه می کنم و اونهایی که تغییر کرده اند رو در قسمت توضیحات جدول LogInfo ثبت می کنم.

damanpak
پنج شنبه 15 فروردین 1392, 23:43 عصر
من در عملیات ویرایش بعد از ویرایش اطلاعات توسط کاربر ، ابتدا اطلاعات رو از دیتابیس فراخونی می کنم و با اطلاعات کاربر مقایسه می کنم و اونهایی که تغییر کرده اند رو در قسمت توضیحات جدول LogInfo ثبت می کنم.
سلام به همه
جناب davood-ahmadi من هم دقیقا قصد دارم همین کار رو انجام بدم
فقط دوتا مشکل کوچیک دارم
1-چطوری بفهمم که کاربر از یک رکورد اطلاعاتی که شامل مثلا 20 فیلد هست کدوم ها رو ویرایش کرده؟(مقایسه داده ها رو چطوری انجام بدم؟)
2-این عمل مقایسه داده ها توسط وی بی انجام بدم یا اس کیو ال؟

linux
پنج شنبه 15 فروردین 1392, 23:52 عصر
ممنون از همگی دوستان من توی گوگل سرچ کردم و فایل log4net رو گرفتم اما از کار با اون رو نمیدونم چطوریه
لینکی هم که دادین رو زیاد متوجه نمیشم
اگه ممکنه بیشتر راهنمایی کنید
از تو nuget می تونی log4net را بگیری.
بعدش مثالی که دوستان گذاشتند را خوب ببین مثال خوبی بود تو فایل app.config هم تنظیمات را انجام بده تا معلوم کنی که کجا باید log نوشته بشود توی فایل یا sql

linux
جمعه 16 فروردین 1392, 00:05 صبح
سلام به همه
جناب davood-ahmadi من هم دقیقا قصد دارم همین کار رو انجام بدم
فقط دوتا مشکل کوچیک دارم
1-چطوری بفهمم که کاربر از یک رکورد اطلاعاتی که شامل مثلا 20 فیلد هست کدوم ها رو ویرایش کرده؟(مقایسه داده ها رو چطوری انجام بدم؟)
2-این عمل مقایسه داده ها توسط وی بی انجام بدم یا اس کیو ال؟
این تابع دوتا آبجکت را بر اساس پروپرتیهاش مقایسه می کند و در صورت برابر نبودند مقدار نادرست بر می‌گرداند خودتون زحمت بکشید به vb تبدیلش کنید و تابع را طوری اصلاح کنید که پروپرتی های تغییر یافته بر اساس مقدارشان برگرداند
public static bool ComparePropertiesTo(this Object a, Object b)
{
System.Reflection.PropertyInfo[] properties = a.GetType().GetProperties(); // get all the properties of object a

foreach (var property in properties)
{
var propertyName = property.Name;

var aValue = a.GetType().GetProperty(propertyName).GetValue(a, null);
object bValue;

try // try to get the same property from object b. maybe that property does
// not exist!
{
bValue = b.GetType().GetProperty(propertyName).GetValue(b, null);
}
catch
{
return false;
}


if (aValue == null && bValue == null)
continue;

if (aValue == null && bValue != null)
return false;

if (aValue != null && bValue == null)
return false;

// if properties do not match return false
if (aValue.GetHashCode() != bValue.GetHashCode())
{
return false;
}
}

return true;
}

damanpak
جمعه 16 فروردین 1392, 11:43 صبح
از تو nuget می تونی log4net را بگیری.
بعدش مثالی که دوستان گذاشتند را خوب ببین مثال خوبی بود تو فایل app.config هم تنظیمات را انجام بده تا معلوم کنی که کجا باید log نوشته بشود توی فایل یا sql دوست عزیز من این فایل Log4nret رو دانلود کردم اگه مثالی راجع به Log4Net میزاشتین که فقط یک عمل کوچیک رو انحام بده واقعا ممنون میشدم
اگه جواب نداد میرم سراغ تابعی که فرمودین:گریه:

linux
شنبه 17 فروردین 1392, 01:57 صبح
دوست عزیز من این فایل Log4nret رو دانلود کردم اگه مثالی راجع به Log4Net میزاشتین که فقط یک عمل کوچیک رو انحام بده واقعا ممنون میشدم
اگه جواب نداد میرم سراغ تابعی که فرمودین:گریه:
دوست عزیز دوتا مساله هست یکی لاگ کردن و دیگری تشخیص تفاوت پروپرتیهای دو آبجک هم نوع
برای نمونه برنامه با log4net این را ببینید
http://www.codeproject.com/Articles/140911/log4net-Tutorial
مثال کد را دانلود کرده و مطالعه نمایید