• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

ساختن صفحه admin و سطح دسترسي

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
با سلام به همه دوستان
من با asp و بانك access كار مي كنم
مي خوام تو سايتم يك صفحه لوگين داشته باشم
يك admin دارم و 50 تا User
50 مدل گزارشگيري مختلف دارم كه هر كدام تو يك صفحه جداگانه اي انجام مي شود
ميخوام هر كدام از user ها وقتي لوگين ميكنن فقط صفحات گزارشگيري مربوط به خودشون را ببينند
ولي admin وقتي وارد ميشه همه صفحات گزارشگيري رو ببينه و همچنين بتونه براي user ها سطح دسترسي براي گزارشگيري را تعيين كنه
لطفا اگر ميشه در مورد ساختار بانك اطلاعاتي user و جداول اون اطلاعات كافي به من بديد چون من تا حالا اين مدل كار نكردم
در مورد ساختن و طراحي صفحه admin يا هر يك از يوزر ها هم منو راهنمايي كنيد
اگر مقاله اي در مورد ساختن صفحات admin و سطح دسترسي دادن به يوزر ها داريد ممنون ميشم منو راهنمايي كنيد.
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
اونجا باید همه کارش رو خودت بکنی
ساده ترین کار اینه که برای کاربری که شناسای میشه یه کوکی بنویسی و رول هاش رو هم توی همون کوکی بذاری توی هر صفحه چک کنی که کاربر رول مخصوص به دسترسی به اون صفحه رو داره یا نه میتونی تمام رول ها رو پشت سر هم با توی یه استرینگ با کاما جدا کنی و اگر نام لول مورد نظرت مثلا admin12 که دسترسی داره توی اون متن بود به کاربر اجازه بدی صفحه رو ببنیه و گرنه ریدایرکت بشه به صفحه که میگه دسترسی ممنوع
فرض کنیم admin12 به 5 نوع صفحه دترسی داره admin 13 به سه نوع دیگه و همینطوری ..
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
اونجا باید همه کارش رو خودت بکنی
ساده ترین کار اینه که برای کاربری که شناسای میشه یه کوکی بنویسی و رول هاش رو هم توی همون کوکی بذاری توی هر صفحه چک کنی که کاربر رول مخصوص به دسترسی به اون صفحه رو داره یا نه میتونی تمام رول ها رو پشت سر هم با توی یه استرینگ با کاما جدا کنی و اگر نام لول مورد نظرت مثلا admin12 که دسترسی داره توی اون متن بود به کاربر اجازه بدی صفحه رو ببنیه و گرنه ریدایرکت بشه به صفحه که میگه دسترسی ممنوع
فرض کنیم admin12 به 5 نوع صفحه دترسی داره admin 13 به سه نوع دیگه و همینطوری ..

دوست عزيز دستت درد نكنه ولي اگر ميشه منو بيشتر راهنمايي كنيد
مي دونم چون سطح دسترسيهاي 50 كاربر من با هم فرق ميكنه بايد واسه هر يك از صفحات گزارشگيري يك ID در نظر بگيرم
بعد بايد 2 تا جدول درست كنم كه يكي يوزر و پسورد ها رو داشته باشه و جدول ديگرم يوزرها و رول هاي مورد نياز براي دسترسي را داشته باشه
بعد تو برنامه وقتي هر يوزر Login ميكنه بعد از صحت نام كاربري و كلمه عبور مي بايست با توجه به نام كاربري اون در جدول بعدي با استفاده از نام كاربري صفحات مجاز براي سطح دسترسي كاربر رو استخراج كنم و بعد ID اين صفحات رو توي كوكي بنويسم
در بالاي هر صفحه براي جلوگيري از ورود غير مجاز بايد چيكار كنم؟
راستي تو جدول دوم كه نام كاربر با صفحات مجازش براي دسترسي وجود داره براي اينكه زمانيكه Login ميكنه بخوام تو صفحه اختصاصي اون لينكهاي مورد نيازش رو لينك كم، بايد داخل جدول آدرس صفحات و توضيح فارسي براي هايپرلينك رو هم بذارم.
تو رو خدا هر كي ميتونه منو كمك كنه
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
چي شد دوستان يكي كسي نمي خوتد به ما كمك كنه
بابا هر كي بلده در مورد اين تاپيك توضيح كامل بده
من خيلي نياز به اين كار دارم
اصلا اگه كسي نمونه كدي داره كه سطح دسترسي به كاربران براي ورود به صفحات را با كوكي چك مي كنه واسه ما هم بفرسته
لااقل در مورد ساختار فيلد هاي جدولش توضيح بديد
 

mosyhey1

Registered User
تاریخ عضویت
27 جولای 2005
نوشته‌ها
225
لایک‌ها
4
با سلام
من به طور خلاصه و کلی سرفصل های کاری که می توانید انجام دهید را می گویم. اگر در اجرا و جزییات سوالی پیش آمد بپرسید.

طراحی دیتابیس

قبل از هر کاری بایستی در یک دیتابیس (اکسس) یک جدول کاربران مثلاً با نام tbl_user داشته باشید. (لازم نیست حتماً دو جدول کاربران و سطوح دسترسی از هم جدا باشند.)

این جدول tbl_user حداقل باید دارای فیلد های زیر باشد: فیلد ID، فیلد یوزرنیم مثلاً fld_username، فیلد پسورد با نام fld_password، فیلد(های) گزارشها و صفحات قابل دسترسی آن یوزر که به دو روش می توانید عمل کنید:

روش 1: می توانید یک فیلد برای این کار با نام fld_pageID در نظر بگیرید و لیست انواع گزارش های قابل دسترس برای وی را در همان فیلد با فاصله گذاری کاما بین آن ها بنویسید، مثلا مقدار آن برای یک یوزر خاص می تواند این باشد: 1,3,9,21. بدین معنی که برای این یوزر خاص صفحات یا گزارشگیریهایی که با شناسه های 1، 3، 9 و 21 شناخته می شوند برای وی در دسترس باشد.

روش 2: اگر تعداد صفحات یا گزارشگیری ها کم و یا ثابت است و قرار نیست کم و زیاد شود که محتاج به تغییر دیتا بیس باشید می توانید برای هر صفحه یا گزارش در همان جدول کاربران یک فیلد درست کنید از نوع بولین که اگر کاربر قابلیت دسترسی به آن صفحه را داشته باشد آن فیلد True ورنه False باشد. مثلاً فیدل هایی با نام های: fld_page1، fld_page2، fld_page3 و ....

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

نکته: فیلد های جدول کاربران که نام برده شد ضروری ها بودند. بسته به اهداف خود فیلد های دیگری مانند نام، ایمیل، آخرین تاریخ ورود، جنسیت، تعداد دفعات ورود و ... را اضافه کنید.

تا اینجا اگر مشکلی هست و یا روش 1 یا 2 یا روش دیگری را انتخاب کرده اید ذکر کنید تا ادامه ماجرا.
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
دوست عزيز سلام و با تشكر از اينكه مي خواهيد به من كمك كنيد
من جدول Users را با اكسس ساختم با فيلد هاي id و first_name و last_name و fld_username و fld_password و fld_pageid
يك صفحه هم واسه تعريف كاربران با سطح دسترسي هاشون ساختم كه كل صفحاتي كه نياز به سطح دسترسي دارند را بصورت چك باكس نوشتم
براي هر كاربري كه تعريف مي كنم سطح دسترسيهاي لازم را تيك مي زنم كه Id صفحات كه از value چك باكس گرفته ميشه توي فيلد fld_pageId ذخيره ميشه البته چون اسم همه چك باكي ها را يكي گرفتم خودش به كاما Id صفحات رو از هم جدا مي كنه

حالا بايد صفحه Login رو بسازم
لطفاً منو راهنمايي كنيد.
 

mosyhey1

Registered User
تاریخ عضویت
27 جولای 2005
نوشته‌ها
225
لایک‌ها
4
خوب حالا که دیتابیس و جدول کاربران آماده شده و شما هم روش اول را در پیش گرفته اید ادامه ماجرا:

ورود اعضا

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

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

نکته: بهتر و حرفه ای تر است که چک کنید که اطلاعات از سایت خود شما و صفحه ای که فرم شما در آن است آمده باشد. اگر نه او را به صفحه فرم ورود بفرستید.
نکته: همچنین بهتر و حرفه ای تر است که مقالات مرتبط با مبحث SQL Injection را مطالعه کنید و دستورات آن را در کار برنامه نویسی تحلیل فرم ها به کار ببرید.

اگر کاربری با این مشخصات وجود نداشت شما کاربر را به صفحه فرم ورود می فرستید و پیغام می دهید که یوزرنیم یا پسورد اشتباه است. برای این کار اگر به فرض فرم ورود در صفحه login.asp باشد می توانید کاربر را به آدرس login.asp?msg=baduserpass ریدایرکت کنید (بفرستید) و در صفحه فرم، بالای فرم یک دستور شرطی بگذارید که اگر کویری استرینگ msg برابر "baduserpass" بود، این پیغام را نشان دهد.

نکته: می توانید آی پی کاربر را جایی ثبت و اگر بیش از سه بار اشتباه یوزرنیم و پسورد را وارد کرد جلوی کارش را برای نیم ساعت بگیرید.

اما اگر کاربر یوزرنیم و پسورد خود را به درستی وارد کرده بود، ابتدا باید برای او سکشن بسازید.

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

به هر حال حداقل یک سکشن (ID) و برای ملاحظه امنیت بیشتر برای او دو سکشن می سازیم. یکی را مساوی ID اش و دیگری را مساوی IP اش قرار می دهیم.

نکته: ID هیچ کاربری نبایستی 0 یا منفی باشد.
نکته: سکشن ها نوعی متغیر هایی هستند که برای هر کاربر منحصر به فرد ایجاد می شود و به طور پیش فرض پس از 20 دقیقه که کاربر تقاضایی نکرد یا وقتی از سایت خارج شد آن ها نیز نابود می شوند.

ID او را از دیتابیس و IP او را از دستورات asp بایستی بخوانیم. مانند مثال زیر:

کد:
Session("adminID")=ors("ID")
Session("adminIP")=Request.ServerVariables("REMOTE_ADDR")

و بلافاصله پس از درست کردن سکشن او را به صفحه اصلی کاربران ریدایرکت می کنیم. مثلاً:

کد:
Response.Redirect("user.asp?")

من روند کار را گفتم، در جزییات و کدنویسی هم اگر سوالی هست بپرسید و اما نحوه طراحی صفحه یا صفحات کاربران را در پست بعدی می گویم.
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
خوب حالا که دیتابیس و جدول کاربران آماده شده و شما هم روش اول را در پیش گرفته اید ادامه ماجرا:

ورود اعضا

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

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

نکته: بهتر و حرفه ای تر است که چک کنید که اطلاعات از سایت خود شما و صفحه ای که فرم شما در آن است آمده باشد. اگر نه او را به صفحه فرم ورود بفرستید.
نکته: همچنین بهتر و حرفه ای تر است که مقالات مرتبط با مبحث SQL Injection را مطالعه کنید و دستورات آن را در کار برنامه نویسی تحلیل فرم ها به کار ببرید.

اگر کاربری با این مشخصات وجود نداشت شما کاربر را به صفحه فرم ورود می فرستید و پیغام می دهید که یوزرنیم یا پسورد اشتباه است. برای این کار اگر به فرض فرم ورود در صفحه login.asp باشد می توانید کاربر را به آدرس login.asp?msg=baduserpass ریدایرکت کنید (بفرستید) و در صفحه فرم، بالای فرم یک دستور شرطی بگذارید که اگر کویری استرینگ msg برابر "baduserpass" بود، این پیغام را نشان دهد.

نکته: می توانید آی پی کاربر را جایی ثبت و اگر بیش از سه بار اشتباه یوزرنیم و پسورد را وارد کرد جلوی کارش را برای نیم ساعت بگیرید.

اما اگر کاربر یوزرنیم و پسورد خود را به درستی وارد کرده بود، ابتدا باید برای او سکشن بسازید.

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

به هر حال حداقل یک سکشن (ID) و برای ملاحظه امنیت بیشتر برای او دو سکشن می سازیم. یکی را مساوی ID اش و دیگری را مساوی IP اش قرار می دهیم.

نکته: ID هیچ کاربری نبایستی 0 یا منفی باشد.
نکته: سکشن ها نوعی متغیر هایی هستند که برای هر کاربر منحصر به فرد ایجاد می شود و به طور پیش فرض پس از 20 دقیقه که کاربر تقاضایی نکرد یا وقتی از سایت خارج شد آن ها نیز نابود می شوند.

ID او را از دیتابیس و IP او را از دستورات asp بایستی بخوانیم. مانند مثال زیر:

کد:
Session("adminID")=ors("ID")
Session("adminIP")=Request.ServerVariables("REMOTE_ADDR")

و بلافاصله پس از درست کردن سکشن او را به صفحه اصلی کاربران ریدایرکت می کنیم. مثلاً:

کد:
Response.Redirect("user.asp?")

من روند کار را گفتم، در جزییات و کدنویسی هم اگر سوالی هست بپرسید و اما نحوه طراحی صفحه یا صفحات کاربران را در پست بعدی می گویم.

سلام
آقا ما همچنان منتظر توضيحات شما در مورد طراحي صفحات مربوط به هر كاربر هستيم
 

mosyhey1

Registered User
تاریخ عضویت
27 جولای 2005
نوشته‌ها
225
لایک‌ها
4
قبل از هر چیز پوزش از دیر شدن.

خوب حالا که دیتابیس و جدول کاربران و صفحه و فرآیند ورود آنها ردیف شده، ادامه ماجرا:

طراحی صفحات کابران وارد شده

البته امیدوارم همه امکانات و صفحات و گزارشگیری های مختص کاربران عضو را در یک صفحه مثلاً user.asp طراحی کرده باشید که آن صفحه مثلاً با کویری استرینگ های مختلف اعمال مختلف مورد نظر را اجرا کند، مثلا user.asp?page=1 یا user.asp?page=2 و .... ولی اگر برای هر عملی یک صفحه جدا طراحی کرده باشید همه این کار ها که گفته خواهد شد را باید اول همه این صفحات انجام دهید. (به راحتی با Include)

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

1- جلوگیری از کش شدن و ذخیره در هیستوری مرورگر.

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

این چند خط زیر را اگر همین گونه در بالای هر صفحه ای قرار دهید این کار را برای شما می کند:

کد:
<%
Response.Expires=-1
Response.ExpiresAbsolute=Now()-2
Response.AddHeader"pragma","no-cache"
Response.AddHeader"cache-control","private"
Response.CacheControl="No-Store"
%>

نکته: پیشنهاد می شود اگر حتی صفحه اول سایتتان بسیار پویا و با تغییرات روزانه بروز می شود، از این کد در بالای آن صفحه هم استفاده کنید. تا اگر کاربری مدام به سایت شما سر می زند و کش مرورگرش هم فعال باشد نیاز به رفرش کردن به همراه خالی کردن کش (Ctrl+F5) نداشته باشد.

2- بررسی اعتبار کاربر.

در این مرحله بایستی اعتبار کاربری که این صفحه را فراخوانی کرده را بسنجیم. می خواهیم ببینیم این شخص همان کاربری است که آمده و یوزرنیم و پسورد را درست وارد کرده؟ یا این شخص دیگری است که مثلاً مستقیماً آمده و آدرس این صفحه را در نوار آدرس نوشته؟

برای این کار بایستی ببینیم آیا قبلاً (تا 20 دقیقه پیش که زمان پیش فرض موجودیت سکشن هاست) ما در صفحه ورود به سایت برای این کاربر سکشن ایجاد کرده ایم یا نه؟ (توجه شود که سکشن که برای هر بازدید کننده منحصزر به فرد است را تنها برای افرادی که یوزرنیم و پسورد را درست وارد می کردند می ساختیم.)

اگر برای این فرد سکشن adminID ای ساخته شده باشد که بیشتر از 0 باشد (چون با خروج یا ساین اوت یا لوگ اوت کاربر سکشن adminID اش را برابر False یا 0 یا 1- قرار می دهیم) و همچنین سکشن adminIP ای نیز ساخته شده باشد و این سکشن که برابر IP شخص در صفحه ورود قرار داده شده بود اکنون IP قبلی برابر IP کنونی اش باشد، وی معتبر می باشد ولی اگر هر کدام از این شرایط بر قرار نبود بایستی کاربر را به صفحه ورود بفرستیم و به او این پیغام را بدهیم که "شما بایستی از این صفحه وارد سایت شوید."

نکته: هر کاربر معتبری نیز اگر وارد سایت شود و 20 دقیقه هیچ فعالیت و درخواستی از سایت نکند و پس از آن دوباره بخواهد صفحه ای را فرا خوانی کند با این پیغام روربرو خواهد شد و درستش هم همین است.
نکته: اگر دلیل خاصی ندارید این 20 دقیقه را کم و زیاد نکنید. اگر خیلی کم کنید مثلاً 10 دقیقه و کاربر ها که صفحات متعددی از وب باز می کنند پس از 10 دقیقه مطالب را بخواند و دوباره فعالیت کند بایستی دوباره وارد شود که اعصابش به هم می ریزد و همچنین اگر این مقدار را زیاد کنید مثلاً 60 دقیقه، هم از لحاظ امنیتی امکان خطر هست و هم اگر کاربر فراوانی داشته باشید بار فراوانی به سرور وارد و منابعش محدود می شود. سایت های مهمی چون ایمیل یاهو هم گمانم همین حدود را رعایت می کنند.

نمونه کد بررسی اعتبار کاربر:

کد:
If Session("adminID")=False Or Session("adminID")<=0 Or Session("adminIP")=False Or Session("adminIP")<>Request.ServerVariables("REMOTE_ADDR") Then
	Response.Redirect("login.asp?msg=nouserpass")
End If

نکته: اگر سکشنی ساخته نشده باشد مقدار آن False است و اگر شده باشد (از انواع غیر بولین) مقدارش True می شود.

3- بررسی سطح دسترسی کاربر.

حال که صفحه، کش و هیستوری نمی شود و مطمینیم کاربر وارد شده همان کاربری است که این یوزرنیم و پسورد را می دانسته (کاربر معتبر)، حال وقت آن است که بینیم آیا این کاربر مجوز دسترسی و مشاهده این صفحه را دارد یا نه؟

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

چون روش یک در تعیین سطوح دسترسی را انتخاب کرده بودید حال بایستی فیلد سطوح دسترسی (fld_pageID) از رکورد کاربر جاری (ID این کاربر جاری در سکشن adminID او ذخیره است) از جدول کاربران را از دیتابیس بخوانیم. سپس ببینیم آیا ID این صفحه یا کدی که می خواهیم برای او نمایش دهیم در این فیلد ذکر شده است یا نه؟

اگر شده یعنی کاربر مجاز به دسترسی به این صفحه است و صفحه را نمایش می دهیم و اگر نه به او این پیام را نمایش می دهیم که: "شما به این صفحه دسترسی ندارید." (البته با لحنی مودبانه!)

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

خروج از سایت

لازم است در صفحاتی که کاربران وارد شده اند لینکی برای خروج از بخش خصوصی یا Sign Out یا Log Out وجود داشته باشد که با خیال راحت در انتهای کارش بر آن کلیک کند و کامپیوتر را به دست فرد دیگری بدهد. اگر این قابلیت ایجاد نشده باشد. کاربر وارد شده، در بخش خصوصی می ماند تا 20 دقیقه بعد از آخرین فعالیتش که اگر رها کند و برود و دیگری کامپیوتر را در دست گیرد می تواند وارد بخش های خصوصی او شود. و البته ساخت این قابلیت (خروج از سایت) مزیت های دیگری نیز دارد.

برای این کار با کلیک بر روی کلمه خروج می توانید این خطوط کد زیر را اجرا کنید. با این کار سکشن هایش به اصطلاح خالی (False) می شوند و دیگر با او مانند فرد غریبه رفتار می شود. سپس به او این پیغام را نشان می دهید که: "شما با موفقیت از سایت خارج شده اید."

کد:
Session("adminID")=False
Session("adminIP")=False
Response.Redirect("login.asp?msg=exit")

امیدوارم کد ها را درست نوشته باشم. البته برای این کار راه های دیگری هم هست که این یکی از راه هاست که خودم نیز از آن بهره می برم.
 

kohyar

کاربر تازه وارد
تاریخ عضویت
5 آپریل 2007
نوشته‌ها
94
لایک‌ها
0
محل سکونت
تهران
دستت درد نكنه خيلي عالي بود
ولي ميشه در مورد ID دادن به صفحات هم يك توضيحي بديد كه چطور ميشه اينكار رو كرد
آيا بايد در داخل صفحه مختص هر كاربر كه ليست صفحات داراي مجوز دسترسي را بصورت لينك ليست مي كني بايد توي اين لينك ها بصورت پارامتر ارسال كرد
يك چيز ديگه اينكه نميشه چون تعداد صفحات بالاست تو يك جدول هم فيلد آي دي صفحات و عبارت فارسي واسه قرار دادن در لينكشان را ايجاد كرد
در غير اينصورت كه بايد توي كد واسه اسم يك لينك 50 حالت رو چك كنم
 

mosyhey1

Registered User
تاریخ عضویت
27 جولای 2005
نوشته‌ها
225
لایک‌ها
4
من نمی دانم صفحات مخصوص به کاربران را چگونه نوشته اید؟ به فرض که برای این کار از یکی از دو راه یا هر دو را زیر استفاده کرده اید.

راه 1: شما برای هر صفحه یک فایل asp. جداگانه نوشته اید که بالای هر کدام از آنها 3 مرحله پست قبلی را اجرا می کنید مثل userpage_1.asp یا userpage_2.asp و ...

راه2: تنها یک صفحه ایجاد کرده اید که مثلاً با کویری استرینگ های مختلف، کد های مختلفی اجرا می کند مثل: user.asp?page=1 یا user.asp?page=2 و ....

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

این که گفته اید آیا با جدول نمی شود؟ می شود و بسیار هم بهتر است چون می توانید بعد ها به راحتی صفحه ای بیفزایید یا بکاهید.

پس برای این کار شما نیاز به یک جدول دارید مانند جدول tbl_page که می بایستی حد اقل این فیلد ها را داشته باشد: ID، fld_codeID، fld_title و اگر لینک هر صفحه جدا از آی دی آن است یعنی مثلاً از روی ID اش ساخته نمی شود مانند user.asp?page=1 یا user.asp?page=2 و ... باید یک فیلد fld_link هم در نظر گیرید که مثلاً مقادیرش این ها باشد: userpage1.asp یا userpage2.asp و ...

نکته: فیلد ID مد نظر ما که برای هر صفحه اختصاص می دهیم همان فیلد fld_codeID است و فیلد ID فیلد پیش فرض و اتونامبر اکسس است که وجودش برای ویرایش ها و ... ضروری است.

آنگاه در قسمت صفحه کاربر وقتی به بخشی که صفحات قابل دسترس او باید لینک شود (همان منو) برسیم، بایستی یک حلقه ایجاد کنیم و تمام رکورد های این جدول (tbl_page) را بخوانیم و fld_codeID هر کدام را با صفحات قابل دسترس آن کاربر که در فیلد fld_pageID رکورد وی در جدول کاربران آمده مقایسه کنیم و اگر دیدم در آن است لینک آن را با استفاده از نام فارسی اش که در فیلد fld_title (و لینکش که در fld_link ذخیره شده) بسازیم. ولی codeID را جدا گانه با لینک و یا چیزی که در معرض دید کاربر باشد ارسال نمی کنیم.

فرضاً شما راه 1 را رفته اید و برای هر صفحه یک فایل asp. جداگانه نوشته اید. وقتی کاربر با کلیک بر لینک آن صفحه وارد آن شد شما بایستی قبل از تعیین سطح دسترسی او به این صفحه (روال 3 پست قبلی) به نحوی یک ID به کد هایی که آن صفحه را اجرا می کنند تخصیص دهید. می توانید این کار را به راحتی با معرفی یک متغیری مثلاً با نام codeID و مقدا دهی آن مثلاً به 41 که ID مد نظرتان برای آن صفحه است انجام دهید و یا اینکه این متغیر را از روی نام صفحه یا نام کویری استرینگی آن صفحه ایجاد کنید. سپس در قسمت تعیین سطح دسترسی این صفحه جستجو کنید آیا این codeID در فیلد fld_pageID از رکورد کاربر در جدول کاربران آورده شده یا نه؟ که اگر شده صفحه را اجرا کند و اگر نه پیام دهد: "شما به این صفحه دسترسی ندارید."

پراکنده گفتم. نمی دانم مطلب گویا است یا نه. باز هم اگر دقیق تر بگوید تا کجا و از چه راه هایی رفته اید بهتر می توان توضیح داد.
 
بالا