دوره مجازی PHP (جلسه 27): طراحی و پیاده سازی پروژه وبلاگ (CMS) با معماری MVC



visibility  
mode_comment   ۱۰۴

در این جلسه پروژه آخر این دوره رو که یک وبلاگ یا CMS هست با هم پیاده سازی می کنیم . همونطور که شما دوستان عزیز پیشنهاد داده بودید، پیاده سازی این پروژه به صورت شی گرا و بر پایه مدل MVC هست . با توجه به مزیت هایی که در مورد معماری MVC گفته بودیم لازم بود که این پروژه رو بر اساس اون پایه ریزی کنیم .

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

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

:: مهمترین قابلیت هایی که وبلاگ پیاده سازی شده در این پروژه داره عبارتند از :

قابلیت ها و امکانات این پروژه (وبلاگ - cms) :

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

اهداف :

مهمترین هدفی که بنده در انتخاب و پیاده سازی این پروژه برای شما مدنظرم بود، آشنایی با ساختار و نحوه پیاده سازی معماری MVC و همچنین نحوه استفاده و کار با فریمورک های MVC بوده . در کنار اون پیاده سازی بعضی قابلیت ها مثل ایجاد صفحه تنظیمات برای پروژه هاتون، ایجاد قابلیت لایک دهی به محتوا، نحوه ویرایش محتوا و مسائلی از این قبیل بوده که با مشاهده ی ویدیوی این جلسه ان شاءالله به این اهداف خواهیم رسید :

info توجه

این مطلب یک جلسه از آموزش حرفه ای php می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش حرفه ای php

comment دیدگاه کاربران
meysam1366 replyپاسخ

سلام استاد آوند

ممنون از انتشار این قسمت و زحماتی که برای یادگیری می کشید

موفق باشید

لقمان آوند

خواهش می کنم آقا میثم
موفق باشید

دانشجو replyپاسخ

سلام استاد آوند عزیز

بسیار ممنون و تشکر از زحمات بی دریغ شما واقعا خدا قوت

استاد در بخش پایانی گفتید در مورد کرون جاب و کدنویسی ارسال ایمیل یا پیامک در یک زمان خاص

رو هم توضیح میدید این مورد رو هم بیصبرانه منتظرش هستیم

واقعا ازتون ممنونیم استاد

لقمان آوند

سلام
در wamp و در ویندوز امکان استفاده از کران جاب ها نبود . چون کران جاب مختص لینوکس هست و در ویندوز از مفهمو دیگه ای مثل schedules tasks استفاده میشه .
ایشالله در جلسه جمع بندی حتما اشاره ای به این موضوع می کنیم .

دانشجو

خیلی ممنونم استاد

عملی هم انجام نشه مشکلی نداره فقط توضیحش رو بدید که چطوری باید کدنویسی کنیم

میتونیم خودمون روی بستر مناسبش عملی کنیم

بازم تشکر فراوان

لقمان آوند

ایشالله

mehdy replyپاسخ

خدا قوت استاد خیلی زحمت کشیدین برا ما …ممنون

لقمان آوند

ممنون آقا مهدی
لطف دارید

alidariani replyپاسخ

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

لقمان آوند

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

محمد ملک لی replyپاسخ

سلام جناب دکتر آوند
تشکر میکنم از بابت ارسال این بخش و آپلود اون روی سایت
ایشالا بخش نهایی که جمع بندی هست رو هم اضافه کنید تا مجموعه تکمیل بشه و دی وی دی ها آماده ارسال بشن
چون واقعا با این سرعت اینترنت های ما دانلود حدودد600-700 مگابایت مشکل هست
با تشکر

لقمان آوند

سلام
چشم، همین هفته سعی می کنم جمع بندی رو بزارم و پکیج رو برای ارسال آماده کنیم .

وحید صالحی replyپاسخ

خسته نباشی لقمان جان خدا قوت بسیار عالی …
در جلسه جمع بندی اگر امکان داره در مورد ایجاد قسمت آمار سایت به صورت تبادل و ذخیره اطلاعات در دیتابیس نه فال متنی یه آموزش و توضیح کامل بدید چون بخش مهمی در پیاده سازی یه سایت هستش…
ممنون

ادریس replyپاسخ

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

لقمان آوند

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

sadaf replyپاسخ

سلام
خسته نباشید و ممنون بابت آموزش ها
زمان ثبت نام برای ارسال پستی چه زمانی هست؟

لقمان آوند

همین هفته جلسه جمع بندی رو خواهیم گذاشت و دوره رو کامل می کنیم .
چند روز بعدش فرم درخواست پکیج رو اضافه می کنیم و اطلاع رسانی می کنیم .

amir7626 replyپاسخ

سلام استاد

جا داره منم از زحماتتون در برگزاری این دوره کم نظیر تشکر کنم

و مانند سایر دوستان بی صبرانه منتظر پکیج و دوره های بعدی هستم

لقمان آوند

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

nader70 replyپاسخ

با سلام وخسته نباشید
واقعا دوره ی عالی و کاربردی بود
استاد لینک دانلود ها پیش من کار نمی کنن راه دیگری برای دانلود فیلم و فایلها وجود داره؟

لقمان آوند

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

nader70

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

لقمان آوند

سلام آقا نادر
این مورد تا حالا گزارش نشده .
سرور دانلود ما در اروپاست و چنین محدودیتی نداریم . از سیستم دیگه و اینترنت جای دیگه هم تست کردید ؟
من با فری گیت (ایپی رو تغیر میده) تست کردم و بدون مشکل دانلود شد .

nader70 replyپاسخ

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

لقمان آوند

با یه vpn و یا نرم افزاری مثل freegateوصل شو و تست کن ببین باز نمیشه !

nader70

با تشکر
با freegate حل شد ❓ ❓

لقمان آوند

خوب خدا رو شکر
موفق باشید

کیان کیانی replyپاسخ

سلام استاد ..

من فایل های پی اچ پیم بالا نمیاد ..
به صورت متن ساده بالا میاد
زمپمم فعالع ..
پاک کردم نصب کردم نشد..
به صورت متن ساده میاد بالا

18 if($age > 18) { echo “hi “. $name.

اینجوری ..
مشکل از چیه ؟ میدونم بد جا هست ولی لطفا جواب بدید … مرسی

لقمان آوند

سلام
ببینید ماژول PHP فعال هست در وب سرور ؟

امیر امینی replyپاسخ

سلام استاد من موقع صدا زدن model با پیغام زیر موواجه میشم اطلاعات داخل config ر هم پک کردم درست پروژه شنارو هم اجرا کردم همین ارور رو میداد باید پیکار کنم
Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\wamp\www\blog\system\model.php on line 11

لقمان آوند

سلام
فریمورک pip از mysql برای اتصال به دیتابیس استفاده کرده که همونطور که گفتم منسوخ شده . این پیام هم داره میگه که بهتره از mysqli و یا pdo استفاده کنید .
تو پروژه های اصلی و واقعی خودتون حتما اینکارو بکنید.

majid zare

با سلام
من هم با این مورد مشکل پیدا کردم در پروژه” سوال و جواب” هم با این مشکل روبرو شدم ولی با تغییر به mysqli باز هم خطا دارم لطفا اگر ممکن بود اصلاح این مورد را یکبار انجام بدید
ممنون

لقمان آوند

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

majid zare

بله تشکر انجام دادم فقط یک ایرادی داره این که حروف فارسی به صورت علامت سوال هست
لینک فایل:
http://s4.picofile.com/file/8173399850/model.php.html
لینک تصویر:
http://s4.picofile.com/file/8173400784/model.png

لقمان آوند

در آخر cunstructor مدل این کوئری رو بزن :
set names "utf8";

majid zare

بله بسیار ممنون درست شد
فقط برای اینکه بخش نظرات شامل نتایج راهنمایی ها هم باشه کد های اصلاح شده با روش mysqli را در فایل model.php به آدرس زیر قرار دادم مایل بودید منتشر کنید
ممنون
http://s4.picofile.com/file/8173399850/model.php.html

لقمان آوند

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

majid zare replyپاسخ

با سلام
جناب آوند
آیا مقادیر زیر را در فایل PIP.phpدرست فرض کردم :


که بعد از preg_replace مقدار /localhost/blog/ به عنوان یک پترن جدا شده
ممنون

لقمان آوند

سلام
محتویات فایل pip.php رو اصلا نباید تغیر بدید . این فایل هسته فریمورک هست .
چرا می خواید اینکارو بکنید ؟

majid zare

خیر تغیر ندادم فقط گفتم طبق توضیحات فیلم فرض برنامه اینچنین هست که این دو متغیر در مثال شما همچین مقداری خواهند داشت

لقمان آوند

ببخشید . درست متوجه نشده بودم .
خیلی راحت مقدار این دو تا متغیر رو تو همون فایل pip.php با استفاده از دستور echo چاپ کن تا صحت اطلاعاتی که فرض کردی رو بررسی کنی …

majid zare

بله متوجه شدم ممنون از شما 🙂

ehsan69 replyپاسخ

سلام
دکتر جان شما خودت از کدام روش برای تولید وبسایت (website development) استفاده می کنی و به چه دلیل؟
1. پیاده سازی با استفاده از زبان php محض
2. پیاده سازی با استفاده از تغییر در کدهای wordpress و متناسب نمودن آن برای کابرد مد نظر
3. استفاده از فریم ورک های زبان php
با تشکر از شما و آرزوی سلامتی برای فرزند دلبندتان

لقمان آوند

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

محمدامین replyپاسخ

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

لقمان آوند

عجیبه. احتمالا کدتون مشکل داشته باشه …
ببینید صفحه بندی شما با تعداد زیاد پست مشکلی نداشته باشه ..

محمدامین

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

لقمان آوند

این به کد شما بستگی داره. کد رو بررسی کنید و با مقداردهی ببینید چه اتفاقی داره میفته …

majid zare

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

ehsan a replyپاسخ

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

لقمان آوند

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

محمدامین replyپاسخ

سلام آقای آوند. یه سوال راجع به تعریف متغیر های سراسری که حاوی یک مقدار واکشی شده از دیتابیس در فریمورک pip داشتم.
چطور یه متغیر رو تعریف کنیم طوری که در تموم صفحات در دسترس باشه؟
مثلا من تایتل سایت و دسکریپشن و کلمات کلیدی مربوط به متاتگ های سایت رو در دیتابیس ذخیره کردم. حالا میخواستم با یکبار فراخوانی در تموم صفحات در دسترس باشه. در دیتابیس به این دلیل ذخیره کردم چون امکان تغییر رو در اختیار ادمین از پنل مدیریت گذاشتم.
در روش فعلی وقتی یک متغیر در متد index برای برگزداندن نام سایت استفاده میکنیم فقط در همان ویوی مربوط به متد index در دسترس هست اما در ویوی متد مثلا test در دسترس نیست.
ممنون میشم راهنمایی بفرمایید.

لقمان آوند

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

محمدامین

“وقتی گرفتید پاسش بدید به ویوی هدر و اون هدر رو قبل از ایندکس لود کنید .”
میشه این قسمت رو بیشتر توضیح بدید؟ منوی من توی هدر هست و مقادیر خودش رو از دیتابیس میگیره، واقعا گیج شدم نمیدونم چطور مقادیر رو بش پاس بدم. سشن هم باید توی __construct() تعریف کنم تا خودکار ساخته شه ولی $this->loadModel رو که در __construct فراخوانی میکنم پیغام خطا میده. حتی وقتی loadModel رو از تموم متد های موجود حذف کردم فقط در __construct قرارش دادم بازم درست نشد. ممنون میشم راهنمایی بفرمایید

لقمان آوند

کل پروژتون رو زیپ کنید و برام ایمیل کنید که بهتون بگم چیکار کنید .

محمدامین replyپاسخ

سلام آقای آوند.
شرمنده یه سوال دیگه داشتم.
توی فولدر فریمورک pip یه فولدر به نام .idea وجود داره. کاربردش چی هست؟ ضروری هست یا میشه حذفش کرد؟
پیشاپیش متشکرم

لقمان آوند

سلام
می تونید حذفش کنید. این فولدر در phpStorm برای مدیریت فایلها و ایندکسشون ایجاد میکنه

Amir Saleh replyپاسخ

سلام استاد ،خسته نباشید
درابتدای جلسه که نمای کلی cms رو نشون دادید در بخش ارسال مطلب تو بخش متن مطلب یک text editor بود ولی وقتی پروژه رو با mvc پیاده کردیدفقط یک text area بود خواستم بدونم که از ابزار آماده استفاده کردید یا خودتون نوشته بودید و این که خودم بخوام اون text editor پیاده کنم باید چه کار کنم؟

لقمان آوند

سلام
ابزار آماده بود و تو پروژه نهایی هم فعال بود در نهایت .
آخر ویدیو رو ببینید اون تکست ادیتور هستش …

Amir Saleh

استاد مشکل حل شد مشکل آدرس اون جاوا اسکریپت بود که در صفحه admin-send لود شده بود که آدرسشو به لوکال هاست خودم تغییر دادم

لقمان آوند

خوب خداروشکر
موف باشید

Amir Saleh replyپاسخ

سلام استاد خسته نباشید
یک سوال که به ذهنم رسید اینه که چه جوری یک دسته بندی رو تو دسته بندی دیگه ایجاد کنیم
مثلا برای یک فروشگاه دسته بندی تلفن همراه رو داشته باشیم بعد تو خود اون دسته بندی بر اساس مارک تلفن همراه دسته بندی باشه مثل دیجیکالا

لقمان آوند

باید دسته های تو در تو ایجاد کنید
در جدول دسته بندی درون دیتابیس یه یتون به نام parent ایجاد کنید که مشخص کنه این دسته پدرش کدوم دسته هست و آیدی دسته پدرش رو تو اون بزارید
هنگام کدنویسی هم وقتی به یک دسته رفتید چک کنید کدوم دسته ها هستند که این پدرشونه….

majid zare replyپاسخ

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

لقمان آوند

نمونه ی خاص که ندارم الان . ولی الگوریتم و روشش همونه که درون دوره گفتیم …

nasrin replyپاسخ

سلام استاد . این قسمت نحوه پاسخ به نظر کاربران را نگفتید . میشه راهنمایی کنید چه جوری هست و روشش به چه شکل می باشد ؟

لقمان آوند

سلام
برای نظرات می تونید یه ستون دیگه در جدول دیتابیسش به replyto بزارید. بعد در رابط کاربری هم اجازه پاسخ به نظرات رو بدید. برای نظرات پاسخ داده شده فیلد replyto رو به نظر مذکور ست کنید .

nasrin replyپاسخ

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

لقمان آوند

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

user 2014 replyپاسخ

استاد سلام
با پیشرفت های بسیار تونستم چند تا پروژه خوب بنویسم ممنون
ولی الان یه چیزی دیدم توی یه مثال که واقعا 😯
public function get_popular(){
$this->db->select(‘p.*, COUNT(O.product_id) as total’);
$this->db->form(‘orders AS O’);
$this->db->join(‘products AS p’,’O.product_id = P.id’, ‘INNER’);
$this->db->group_by(‘O.product_id’);
$this->db->order_by(‘total’,’desc’);
$query = $this->db->get();
return $query->result();

}

لقمان آوند

سلام
این مورد از ابزارهای کوئری زدن موجود در فریمورک هایی مثل کدایگنایتر هست و خیلی جالبه…
ایشالله اگر فرصت شه و دوره فریمورک های php رو برگزار کنیم در موردش صحبت می کنیم.
برای یادگیری همیشه باید تلاش کنید. چیز جدید زیاده …

mahdi.mdt replyپاسخ

با عرض سلام خدمت استاد گرامی
برای نوشتن یک cms شبیه به wordpress و …
چه فریم ورکی پیشنهاد می کنید
به من fuelphp پیشنهاد شده مقایسه اش هم نسبت به laravel دیدم
http://vschart.com/compare/fuelphp/vs/laravel
میتونید شما هم نظرتون رو بگید
اگر نظرتون بر روی غیر از این هم هست بگید ممنون

لقمان آوند

این فریمورک ها همه محبوب و خوب هستند:
laravel
codeIgniter
fuelphp
symfony
با همه می تونید اینکارو انجام بدید و بستگی به معیارهای انتخاب خودتون داره .

آرمین نادری replyپاسخ

سلام آقای آوند خسته نباشید یه سوال داشتم
چطوری میشه یه مطلب رو در آینده منتشر کرد اگه الگوریتم انجام کار رو بگید خودم بقیشو مینویسم فقط لطفا یکم زود پاسخ بدید چون خیلی لازم دارم ممنون 😀

لقمان آوند

– اول کار باید یه وضعیت برای پست هات بزاری به نام زمانبندی شده (مثلا future) . پست هایی که میزاری در آینده منتشر بشه اینو بزار برا وضعیتشون .
می تونی دو تا کار کنی .
1- یه cronjob تنظیم کنی که مثلا هر ساعت اجرا بشه. تو اجراش چک کنه اگر تاریخ انتشار پستی مال همون ساعت بود وضعیتش رو به منتشرشده تغیر بده .
2- در هر بار بازدید از سایت یه تابع رو صدا بزنی. توی تابع چک کنی ببینی ایا پستی با وضعیت future و زمان انتشار قبل از زمان الان وجو داره یا نه. اگه بود وضعیتش رو publish کن که منتشر بشه …
گرفتی الان چی شد ؟

آرمین نادری

خیلی ممنونم کل قضیه رو متوجه شدم ولی تنها نگرانیم از بابت روبوت های گوگل و امثال اونه آیا این روبوت ها قادر به اجرای اون تابع php هستند ؟ واضح تر بگم آیا کد های php برای روبوت ها هم اجرا میشه یا اینکه فقط برای بازدید کننده ها اجرا میشه شاید سوالم مسخره باشه ولی چون نمیدونم دارم میپرسم

لقمان آوند

نه اتفاقا نگرانیت به جا هست
یه تابع بنویس که bot ها رو تشخیص بده و اگر روبوت نبود اینکارو انجام بده.
اینو گوگل کن پیدا میکنی : php function to detect spider bot

آرمین نادری replyپاسخ

سلام آقای آوند یه سوال در رابطه با دسته بندی تو در تو داشتم فرض کنید من این آرایه رو دارم :
$result=array(
array(
“id”=>”1”,
“name”=>”animal”
),
array(
“id”=>”2”,
“name”=>”car”,
“sub”=>array(
“id”=>”3”,
“name”=>”sport”,
“sub”=>array(
“id”=>”4”,
“name”=>”bmv”
)
)
),
array(
“id”=>”5”,
“name”=>”fruit”,
“sub”=>array(
“id”=>”6”,
“name”=>”banana”
)
)
حالا چطوری میتونم به صورت لیستی اون ها رو چاپ کنم که لینکشون هم داینامیک باشه مثلا لینک car اینطوری باشه localhost/car و لینک زیر دستش که sport هست localhost/car/sport باشه

لقمان آوند

سلام
باید اول یه ساختار url رو مثلا به شکل زیر برا خودت تعریف کنی :
http://yourDomain/index.php?cat=Car&subCat=sport
خوب این دو دسته اگر به فایل index.php ارسال شن می تونی مطالب مربوط به اون ها رو بگیری و نمایش بدی. برای اینکه ساختار url خوش شکل بشه مثل همون چیزی که خودت گفتی باید از mod_rewrite در htaccess استفاده کنی که url ی به شکل localhost/car/sport به localhost/index.php?cat=car&subCat=Sport تعبیر بشه . در موردش بخون …

آرمین نادری

از پاسختون ممنونم مشکلمو حل کرد
واقعا از اینکه همیشه به سوال هام پاسخ میدید بی نهایت سپاس گزارم 🙂

لقمان آوند

خواهش می کنم
انجام وظیفه است …

Eagle Seein replyپاسخ

سلام استاد.
دهه کرامت رو بهتون تبریک میگم.
استاد من یه سوال دارم. داخل فریمورک کد ایگنایتر یه سایت دارم میسازم میخوام اون index.php رو از آدرس ها حذف کنم بدون اینکه استایل ها به هم بخورن.
یه بار اینکارو شانسی انجام دادم اما نمیدونم چه طوری بود. اما تمام استایل ها از بین میرفتن.
از اون گذشته فایل استایل ها داخل پوشه استس و داخل مسیر ویوها هستن و اگه فایل اچ تی اکسس ـش رو دستکاری نمیکردم هیچ استایلی نشون داده نمیشد. چون دسترسی بهش ممنوع بود
میخواستم بدونم امکانش هست راهنماییم کنین که اولا اون ایندکس حذف بشه بعدش هم فقط و فقط به پوشه استس که اجازه داده بشه که تصاویر و استایلای داخلش استفاده بشن؟
آدرس فعلی اینطوریه:
http://localhost/ci/index.php/auth
میخوام اینطوری بشه:
http://localhost/ci/auth

کیوان علی محمدی

سلام توی فایل htaccess باید کد زیر رو قرار بدی.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

بعدشم بهتره فایل های assets رو در ریشه وب سایت قرار بدی نه داخل دایرکتوری view. یعنی بهتره کنار دایرکتوری های application و system قرار بگیره و اونوقت میتونی با تابع base_url به همشون دسترسی داشته باشی.

base_url("images/icons/edit.png");

Eagle Seein replyپاسخ

بازم سلام به اساتید
در موردپاسختون خیلی ممنونم مکل قبلیم حل شده اما یه مشکل جید پیدا کردم.
داخل کد ایگنایتر به فرض تو کنترلر auth میام سشن ثبت میکنم. و میخوام از کنترلر user به این سشن دسترسی اشته باشم اما دائما مقدارش رو false در نظر میگیره.
کانفیگ سشن:
$config[‘sess_cookie_name’] = ‘ci_session’;
$config[‘sess_expiration’] = 7200;
$config[‘sess_expire_on_close’] = TRUE;
$config[‘sess_encrypt_cookie’] = TRUE;
$config[‘sess_use_database’] = FALSE;
$config[‘sess_table_name’] = ‘ci_sessions’;
$config[‘sess_match_ip’] = TRUE;
$config[‘sess_match_useragent’] = TRUE;
$config[‘sess_time_to_update’] = 300;

سشن رو هم به صورت زیر تعریف میکنم و مقدارشو دریافت میکنم:
تعریف:
$this->session->set_userdata(array());
دریافت:
$this->session->userdata()
ورژن کدایگنایترم هم CodeIgniter-2.2.1 هست.
اگه این مشکل تو ورژن بالاتر حل شده من فایلامو کپی کنم اونجا نیازیبه تغییر دارن؟
مثلا نحوه فراخوانی مدل و این چیزا تغییر کرده؟
خواهشا یه راهی جلوم بزارین کارم گیره

محمد اسفندیاری

اگه میخاید از 2.2 به 3.0 upgrade کنید ، این صفحه میتونه شما رو راهنمایی کنه
http://www.codeigniter.com/user_guide/installation/upgrade_300.html
موفق باشید

mehdi karimi replyپاسخ

سلام استاد آوند
من سوالی داشتم که هدفم از پرسیدنش هم کنجکاویه و هم فهمیدن فرق وردپرس با cms های دست
ساز خودمون هست
میخواستم بدونم شما که انقدر در php مهارت بالایی دارید چرا برای سون لرن از وردپرس استفاده میکنید و خودتون یک cms اختصاصی برای سون لرن ایجاد نکردید ؟

کیوان علی محمدی

منم یه جوای میتونم براتون بگم شاید با جواب استاد فرق کنه.یه قانونی هست توی برنامه نویسی که چرخ رو دوباره اختراع نکنید یعنی اگه کسی قبلا یه ماژول متن باز خوب و کارا نوشته و کلی هم بهینه سازیش کرده شما هم بهتره از همون استفاده کنی به جای اینکه بیای کلی وقت بذاری و همون ماژول رو خودت درست کنی و این قضییه ربطی به توانایی برنامه نویسی نداره.مهارت یه برنامه نویس خوب میتونه این باشه که مجموعه ای از کدهای آماده رو کنار هم قرار بده و با کمی تغییرات بتونه بهترین خروجی رو بگیره و اگه احیانا ماژولی که مد نظرش هست رو پیدا نکرد اون وقت خودش دست به کد بشه. سیستمی مثل وردپرس که از سال 2001 داره به صورت تیمی و مجموعه ای از برنامه نویسان حرفه ای روش کار میشه گزینه خوبی برای استفاده هست و تمام نیاز ها رو برطرف میکنه حالا اگه نیاز دارین توسعه اش بدین خوب امکانات این کارو هم فراهم کرده و با پلاگین و پوسته های اختصاصی اینکارو میشه انجام داد هر چند پلاگین و پوسته های رایگان هم بسیار زیاده.در ضمن وقتی یک قطعه کد یا ماژول رو بتونیم به صورت استاندارد و دارای دایکیومت خوب بنویسیم هم میتونیم در اختیار دیگران قرار بدیم و هم اینکه در پروژه های متعددی میشه ازش استفاده کرد.پس یادتون باشه که Don’t Repeat Yourself (یعنی همش کار تکراری نکن سعی کن یکبار بنویسی و همیشه استفاده کنی). موفق باشید.

mehdi karimi

ممنون بابت توضیحات کاملتون

حمید رضا مصطفی زاده

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

لقمان آوند

تا حدودی درسته ولی می تونید از یه جنبه دیگه هم بهش نگاه کنید. چون کدش در اختیار همه هست اگر ضعفی داشته باشه فوری پیدا میشه و رفع میشه!
اگر می بینید بحث حول و حوش هک و امنیت وردپرس بیشتر از سایر cms ها هست به خاطر استفاده خیلی زیاد از اونه. از هر 5 تا وبلاگ و یا سایتی که تو دنیا هست، یکیش وردپرسیه!

حمید رضا مصطفی زاده replyپاسخ

سلام استاد ببخشید میشه این پروژه رو که با pip کارکردین رو کاملا با codeigniter پیاده سازی کرد؟
چون خودتون میفرمایید که pip خیلی شبیه codeignter هست که واقعا هم همینطور هست ولی منتها codeigniter فایل های بیشتری داره…
سوال دومم اینه که شما به شخصه چقدر پیشنهاد میکنید که ما بعد از یادگیری php بریم سمت mvc ها
یا cms ها؟
چون به شخصه با وردپرس که کار میکنیم واقعا قابلیت های خوبی داره.به طور مثال برای قسمت جستوجوی این وبلاگ این پروژه شما کلی توضیح دادید و کلی کار انجام شد در صورتی که همین روند در وردپرس (جناب محمدی) بسیار ساده تر از چیزی که فکرش رو بکنم پیاده سازی شد.
حالا سوال من اینجاس…
از یه طرف نمیشه قدرت وردپرس رو نادیده گرفت و از یه طرف دیگه از mvc ها هم نمیشه گذشت.
به شخصه دوست دارم تو هر دوتاش پیشرفت کنم اما شما (بیشتر از دید بازارکار) کدوم رو برای یادگیری حرفه ای تر مقدم تر میدونید؟

لقمان آوند

بله کاملا میشه …
من به شدت پیشنهاد میکنم. اگه می خواید حرفه ای باشید باید سراغ mvc و فریمورک های مطرح اون برید. cms ها رو هم حتما باهاشون آشنایی داشته باشید. خیلی جاها بدرد می خورن.
بله طبیعی هست. یه سری افراد از قبل کل اون امکانات رو نوشتن و شما الان می تونید فقط استفاده کنید.
بنده نظرم اینه که هر دو رو یاد بگیرید. بسته به نوع پروژه دریافتی ممکنه استفاده از cms یا نوشتن از صفر با یه فریمورد mvc مناسبتر باشه !
ببخشید اگه دیر جواب دادم. بعضا کامنتها اسپم میشه و یا اینکه نمی بینیمشون ….

حامد بهمنی replyپاسخ

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

لقمان آوند

نکات لازم گفته شده در این مورد .
collation دیتابیستون حتما مناسب باشه.
قبل از هر چیز هم کوئری set names utf8 رو بزنید ..

eli yat replyپاسخ

با سلام

ببخشید داخل فایل ها یک فایل با اسم .idea هست .
ممنون میشم بفرمایید این چه فایلی است و چه کاربردی دارد ؟
مثلا از workspace.xml چه طوری میشه استفاده کرد ؟
ممنون

لقمان آوند

سلام
مربوط به phpStorm هست و جزو پروژه شما نیست. در آخر می تونید حذفش کنید.

seyyed ali farrokh replyپاسخ

سلام اقا لقمان
شرمنده ، میخواستم بدونم تا چه حد میشه رو امنیت این پروژه حساب کرد؟ایا با همین دانسته ها میشه یه cms امن نوشت و نیازی به دانسته های فراتر نداریم؟
ممنون

لقمان آوند

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

fara php16 replyپاسخ

با سلام و خسته نباشید

من با فریمورک PIP به مشکل برخوردم و خیلی از کدهای فریمورک PIP در فایل Model.php منسوخ شده هستن و اصلا نمیشه تغییرشون داد چون ساختار فریمورک بدتر میشه که بهتر نمیشه .

آیا فریمورک دیگه ای هست که بروز باشه و شبیه PIP باشه…

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

باتشکر منتظر جوابتون هستم

کیوان علی محمدی

سلام دوست عزیز. اگه فریمورک های کوچیک مد نظرتونه Lumen و silex و slim پینشهاد میشه. در غیر این صورت فریمورک laravel پیشنهاد میشه.

mahii replyپاسخ

سلام
من نمی تونم به دیتابیس وصل بشم و mysql_pconnect ارور میده، از mysqli هم استفاده میکنم نمیشه، نمیدونم مشکل چی هست، راهنمایی بفرمایید

لقمان آوند

خوب باید متن خطا رو چک کنید. دقت کنید که اطلاعات دیتابیس رو درست وارد کرده باشید در کدتون …

pourya-k replyپاسخ

سلام
من در پروژه MVC با استفاده از pip زمانی که صفحه با 404 مواجه میشود به جای نمایش erro خطای زیر را اعلام میکند:
Fatal error: Cannot declare class Error, because the name is already in use in C:\xampp\htdocs\exam\application\controllers\error.php on line 16
چگونه میتوانم این مورد را رفع بکنم ؟ جستجو کردم ولی به نتیجه ای نرسیدم
همچنین به نظرتون بهتر هست پروژه روی ین pip کار بشود یا لاراول ؟
متشکرم

لقمان آوند

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

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.