• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کلاس model
#1
شرح وظیفه: این کلاس مسئول دریافت داده ها و اعتبار سنجی اونهاست.

نکته: داده ها در قالب زیر برای این کلاس ارسال میشوند(داخل تک تک مدل ها)

کد پی‌اچ‌پی:
            $this->validate=array(
            
'name'=>'data',
            
'required'=>'title',
            
'strip'=>'title'
            
); 

و پس از اعتبارسنجی، به دیتابیس اجازه کارو میده.

این بخش خیلی بد پیاده سازی شده.

بهتر توابع اعتبار سنجی رو به صورت جدا ایجاد و شامل model.php کنیمش.

نظر شما در مورد این بخش چیه؟

اگر دوستان اجازه بدن، این بخش رو خودم اصلاح کنم.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#2
یه مدل validate ایجاد کن ، که یک پارامتر سطح دسترسی بگیره ، توی کنترلر و سایر مدل ها استفاده بشه .
access-level رو ترجیحاً با عدد مشخص کنید ، مثلاً 1 بالاترین دسترسی و ...
بعد توی __construct هر کنترلر ، ماژول چک بشه که کاربر فعلی در چه سطحی هست و آیا اجازه دسترسی داره یا نه .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : undefined Y.P.Y
#3
نقل قول:access-level رو ترجیحاً با عدد مشخص کنید ، مثلاً 1 بالاترین دسترسی و ...

سطح دسترسی هر کاربر داخل سی ام اس بعد از لاگین صورت میگیره. دسترسی شخص به طور یک ارایه داخل سشن ذخیره میشه.

سطح دسترسی فعلی که داریم (admin.php) صرفا به منظور رعایت یه سری موارد مثل جلوگیری از اجرای توابع مدیریتی در سایر بخش ها انجا گرفته.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#4
خوبه.
ایده رضا هم تمیزه

فقط این strip داستانش چیه؟
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : Reza
#5
نقل قول:فقط این strip داستانش چیه؟

strip_tag

کد پی‌اچ‌پی:
case 'strip':
  if(
is_array($v))
  {
      
$c=count($v)-1;
      for(
$i=0;$i<=$c;$i++)    
          
$this->data[$v[$i]]=strip_tags($this->data[$v[$i]]);
      break;    
  }
  else
      
$this->data[$v]=strip_tags($this->data[$v]);    
  break; 
غایب
  پاسخ
تشکر شده توسط :
#6
model که فقط database نیست!
  پاسخ
تشکر شده توسط : Reza zoghal
#7
نقل قول:سطح دسترسی هر کاربر داخل سی ام اس بعد از لاگین صورت میگیره. دسترسی شخص به طور یک ارایه داخل سشن ذخیره میشه.
چه کاریه خب !
فقط شناسه عددی کاربر در صورت صحیح بودن در سسشن / کوکی قرار بگیره .
بقیه اطلاعات چون سطح دسترسی ، یوزر ایجنت از دیتابیس خونده بشه بهتره به نظرم .

سطح دسترسی هم اگر بصورت اسمی باشه کافیه یه جدول دیگه درست کنید یه فیلد آی دی بذاری ، یکی هم اسم ، یه چند تا دیگه هم ...
بعد توی جدول یوزرها ، برای هر یوزر آی دی اون نوع سطح دسترسی رو لحاظ کنید .
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#8
نقل قول:strip_tag
احسان؟ Dodgy

اولاً که اینجوری خلاصه نکن، چون واقاً نامفهومه Undecided
دوماً به فیلتر های خیلی بیشتر و حرفه ای تری نیازه
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#9
نقل قول:یه مدل validate ایجاد کن ، که یک پارامتر سطح دسترسی بگیره ، توی کنترلر و سایر مدل ها استفاده بشه .

حالت فعلی بهتر نیست؟
یه مدل داریم که تمام مدل ها فرزندش هستن و قبل از دیتابیس قرار داره.

اما در مورد سطح دسترسی

نقل قول:چه کاریه خب !

اگر بخش مدیریتی رو از سایر بخش ها توسط admin.php جدا کردم به دو دلیل بود
- کاربران عادی دسترسی به توابع مدیریتی رو نداشته باشن. یا به عبارتی ادرس زیر پیام یافت نشد رو صادر کنه
www.site.com/post/add
در صورتی که بتونه بدون هیچ مشکلی ادرس زیرو درخواست کنه
www.site.com/post/view/15
- ممکن بود در قسمت مدیریت سی ام اس بخوایم یه سری کارهایی رو انجام بدیم که در سایر بخش ها نباشه یه مثال خیلی سادش شامل کردن تعدادی فایل اضافی هست.

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

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

کد پی‌اچ‌پی:
array('add','edit'); 

این ارایه ماست که داخل سشن ذخیره میشه. حالا کاربر ادرس زیرو درخواست میکنه
www.site.com/admin/post/add

شرط: add داخل ارایه دسترسی این کاربر وجود داد؟
بله -> اجازه دسترسی دارد
خیر -> اجازه دسترسی ندارد، پیام مناسب را چاپ کن.

توجه مینمویی؟ Big Grin

نقل قول:اولاً که اینجوری خلاصه نکن، چون واقاً نامفهومه

واسه من که کاملا واضح و روشنه Tongue

نقل قول:دوماً به فیلتر های خیلی بیشتر و حرفه ای تری نیازه

اسماشون رو بده. زمانی که میخوام توابع اعتبارسنجی رو بنویسم امادشون کنم.
غایب
  پاسخ
تشکر شده توسط : Reza
#10
نقل قول:دوماً به فیلتر های خیلی بیشتر و حرفه ای تری نیازه

اسماشون رو بده. زمانی که میخوام توابع اعتبارسنجی رو بنویسم امادشون کنم.
مگه قرار نیست کلاس filtration داشته باشیم؟
می خوای بکنیش داخل بخش model؟
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :


پرش به انجمن:


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