چگونه میتوان چند کاربر و سطح دسترسی برای هر کدام در vb6 ایجاد کرد

soly1877

New Member
سلام دوستان

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

با تشکر .
 

the_king

مدیرکل انجمن
سلام دوستان

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

با تشکر .

روتین مشخصی وجود نداره، کاملا وابسته به قابلیت ها و واسط کاربری برنامه ای است روی آن پیاده سازی می کنید.

در کل نام کاربری و رمز عبور و یک کد سطح دسترسی (مثلا یک عدد بین 1 الی 5) را در جایی داخل یک فایل
ذخیره خواهید کرد. هر زمان که کاربر با رمز عبور مربوطه وارد شد، بر اساس کد سطح دسترسی بعضی از دکمه ها
یا توابع را غیر فعال خواهید کرد. یعنی یک شرط ساده داخل روتین ها وجود دارد که اگر مثلا Level برابر 3 بود،
بجای چاپ گزارش پیغامی مبنی بر عدم دسترسی نمایش داده شود.
 

the_king

مدیرکل انجمن
ببخشید میشه با یه مثال برای من توضیح دهید .

مرسی

فرض کنیم یک کاربر user1 و یک کاربر user2 داریم که اولی با سطح دسترسی 1 مجوز چاپ گزارش را دارد و
دومی با سطح دسترسی 2 مجوز اینکار را ندارد. همچنین فرض کنیم که دکمه Command1 همان دکمه ای است
که اگر رویش کلیک شود، عملیات چاپ گزارش قرار است صورت بگیرد.


اصولا نام کاربری و رمز عبور در یک فایل یا بانک اطلاعاتی بصورت رمزی و کدگذاری شده ذخیره می شود تا
امکان مشاهده آن به سادگی میسر نباشد، اما در این مثال ساده ما فرض می کنیم که این دو کاربر در داخل کد
برنامه تعریف شده اند.

فرض کنیم زمانی که یک کاربر قصد ورود به برنامه را داشت، بایستی نام کاربری اش را در کنترل TextBox ای
با نام Text1 و رمز عبورش را در Text2 وارد کرده و روی دکمه Command2 کلیک کند تا مجوز دسترسی به او
داده شود. ما سطح دسترسی 0 را برای مهمان در نظر می گیریم که مجوز هیچ عملی را ندارد.

پس در ابتدای کد های فرم، یک متغیر عمومی به نام Level از نوع عددی Long تعریف می کنیم که سطح
دسترسی کاربر را مشخص می کند که مقدار پیشفرض اش در ابتدای برنامه 0 است (یعنی کاربر مهمان) :
کد:
Dim [B]Level[/B] As Long

Private Sub Form_Load()
    [B]Level[/B] = 0
End Sub

حال فرض کنیم که تابع PrintReport همان تابعی است که عملیات چاپ گزارش را انجام می دهد، ما بایستی
برای دکمه Command1 کدی بنویسیم که اگر رویش کلیک شد و سطح دسترسی کاربر (Level) برابر 1 بود،
آن تابع PrintReport را اجرا کند، وگرنه پیغام عدم سطح دسترسی کافی را نمایش دهد :
کد:
Private Sub Command1_Click()
    If Level = 1 Then
        PrintReport
    Else
        MsgBox "Insufficient permission to perform requested operation."
    End If
End Sub

اکنون برنامه در این شرایط همواره Level ای برابر با 0 را بکار می گیرد، پس بایستی برای دریافت نام کاربری و
رمز عبور کد کلیک کردن روی دکمه Command2 را هم اضافه کنیم :
کد:
Private Sub Command2_Click()
    If Text1.Text = "user1" And Text2.Text = "password1" Then
        Level = 1
    ElseIf Text1.Text = "user2" And Text2.Text = "password2" Then
        Level = 2
    Else
        MsgBox "Invalid username or password."
    End If
End Sub
 

the_king

مدیرکل انجمن
اين كار نياز به ديتا بيس دارد؟
نه الزاما به مفهوم یک دیتابیس، چون خود اطلاعات دسترسی کاربران به تنهایی آنقدر از نظر حجم ناچیز و در عین حال
از نظر امنیت، اهمیت دارد که بهتر است بصورت های غیر متعارف و غیر استاندارد ذخیره شود.

اگر بحث امنیت را نادیده بگیریم، یک فایل ساده که با دستورهای Open و Close و Put و Get مدیریت شود، از نظر
پیاده سازی بهتر است، اما هر چه روی کدگذاری اطلاعات داخلش تاکید کنیم، امنیت بهتری خواهد داشت.

مثلا در داخل یک فایل باینری و بصورت کد گذاری شده تا خوانایی کمتری داشته باشد و به اصطلاح به سادگی لو نرود.
دیتابیس های استاندارد برای نگهداری اطلاعات محرمانه نظیر رمز عبور و سطح دسترسی زیاد مناسب نیستند.
هر چه نحوه ذخیره سازی خاص و غیر متعارف تر باشد، محافظت بهتری ارائه می کند.
 

جدیدترین ارسال ها

بالا