ساخت CMS ساده با PHP - قسمت 3 - ساختار فایل ها

‏  4 دقیقه
۰۲ فروردین ۱۳۹۳
ساخت CMS ساده با PHP - قسمت 3 - ساختار فایل ها

به نام خدا و سلام به همه دوستان عزیز و کاربران بخش VIP،اول از همه سال نو رو تبریک میگم و امیدوارم سال خوب و  پر از موفقیتی داشته باشین و بعدشم پوزش میطلبم بابت یکی دو هفته ای که در قرار دادن مطالب این سری تاخیر پیش اومد؛انشالله سری رو با نظم بیشتری در قسمت‌های بعدی قرار میدیم.

خوب در قسمت‌های قبلی ما ساختار دیتابیس رو مشخص کردیم و در این قسمت ساختار فایل‌ها رو بررسی میکنیم و چند تا از فایل‌های اصلی رو اماده می‌کنیم.

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

ساختار فایل‌ها در مدیریت محتوا

 

خوب در این جا پوشه‌های css برای فایل‌های استایل (فایل‌های فریمورک بون استرپ و استایل شخصی)،پوشه fonts برای نگهداری فونت‌های مورد نیاز،پوشه images برای تصاویر مربوطه،پوشه inc که پوشه اصلی کار ما هستش و برای نگهداری کدهای پروژه ازش استفاده میشه،پوشه js هم برای نگهداری فایل‌های جاوا اسکریپت و در نهایت فایل index.php و فایل init.php که درباره این فایل‌ها توضیح میدیم.

فهرست محتوای این مقاله

فایل init.php

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

<?php
define("SITE_ROOT",$_SERVER['DOCUMENT_ROOT'].'/CMS');
require_once 'inc/config.php';
require_once 'inc/db.php';
require_once 'inc/functions.php';

در خط اول یه ثابت تعریف کردیم به نام SITE_ROOT که این آدرس ریشه سایت رو در خوش نگه میداره تا در جاهای مختلف دسترسی بهتری به فایل‌ها داشته باشیم.در خطوط بعدی ما فایل‌های فعلی موجود در پوشه inc رو در این جا الصاق کردیم.خوب فعلا با ابن فایل دیگه کاری نداریم.

فایل config.php

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

<?php
error_reporting(1);
session_start();
date_default_timezone_set('Asia/Tehran');
$config=array(
    'host'=>'localhost',
    'user'=>'root',
    'password'=>'',
    'database'=>'CMS'
);

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

فایل db.php

فایل db.php دستورات مربوط به اتصال به دیتابیس رو در خودش نگه میداره.

<?php
require_once 'config.php';
mysql_connect($config['host'],$config['user'],$config['password']) or die("خطا در برقراری ارتباط با پایگاه داده");
mysql_select_db($config['database']);
mysql_set_charset("UTF-8");

اولش می‌بینید که فایل config.php رو اضافه کردیم تا به اون آرایه config دسترسی داشته باشیم،بعدشم یه اتصال ایجاد کردیم برای mysql و از همون اطلاعات آرایه استفاده کردیم،و بعدشم دیتابیس CMS رو انتخاب کردیم و در نهاییت هم  charset رو روی utf تنظیک کردیم تا برای اطلاعات فارسی مشکلی نداشته باشیم.

کدها کوتاه هستن و میشد اونارو در فایل‌های دیگه مثل همون config.php بنویسیم،چرا اینکارو نکردیم؟یکی از اصول برنامه نویسی خوب حفظ ماژولار بودن کد هستش یعنی اینکه کد رو در قسمت خودش و جدا نگه داری کنیم تا بتونیم ازش در پروژه‌های دبگه هم استفاده بکنیم و هم چنین ویرایش اون خیلی ساده‌تر باشه.

شاید اینجا خیلی به چشم نیاد اما در پروژهای بزرگتر وو مخصوصا در شی گرایی اثر خودشو خیلی خوب نشون میده.اینجا هم یه تمرین هست برای یاد گرفتن ساختار درست فایل‌ها در پروژه.

خوب دوستان میمونه فایل functions.php که انشالله در قسمت بعدی باید متد‌های اونو بنویسیم.

در قسمت بعدی محتوای فایل index.php رو مشخص میکنیم و میریم برای ثبت کردن مطالب در سایت.

موفق و پیروز باشید.

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

نیاز به لاگین

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

نظرات کاربران

وارالا فراسری

سلام چرا قسمت اول وقسمت دوم از آموزش ساخت سیستم مدیریت محتوا نیست

amir baragy

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

 $_SERVER[&#8216;DOCUMENT_ROOT&#8217;].&#8217;/CMS&#8217; 

مگه نباید به صورتهای زیر نوشت؟

  $_SERVER[&#8216;PHP_SELF&#8217;] 

تشکر

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

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

محمد

ایا SITE_ROOT یه تابع هست که به روت سایت اشاره میکنه ؟

لقمان آوند

یه ثابت هست و آدرس ریشه سایت رو در خودش داره .

سید احسان عظیمی

ممنوووووووووووووووووووووووون

REZATAKRO

من vip گرفتم چرا میگه کاربر عادی هستید ؟

لقمان آوند

سلام دوست عزیز
پرداخت شما تائید و اکانت vip تون فعال شد .
موفق باشید

سید علی

ای بابا باز یه سوال دیگه برام پیش اومد.ببخشید اینقدر سوال میکنم.سرتونم درد اوردم.
برای بالا بردن امنیت سایت اضافه کردن پیشوند مثلا wp_ به اول جداول دیتابیس کافیه یا باید به چیز های دیگه ای هم پیشوند اضافه کرد؟
بازم ببخشید 😀

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

این پیشوند برای دیتابیس وردپرس هستش بعدشم توضیه نمیشه پیشوند همین wp باشه بهتره عوضش کرد،برای دیتابیس این سری میتونید پیشوند دلخواه رو قرار بدین.

سید علی

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

محمد

با افزونه wp better security هم میشه این کار رو انجام داد

سید علی

سلام.بازم ممنون از مطالب خوبتون
یه سوال دیگه که شاید زیاد ربطی هم نداشته باشه برام پیش اومد.با php و mysql امارگیر هم میشه ساخت؟؟؟

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

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

محمد

حرف سنگینی بود

سید علی

سلام.ممنون از اموزشای خوبتون
چرا اخر کد های هر فایل php رو نبستید؟ منظورم عدم وجود ?> در اخر اون فایل ها هست.

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

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

aligh

سلام آقای علی محمدی.

آیا

 function test(&#8230;){&#8230;}

با

 public function test(&#8230;){&#8230;}

فرق داره ؟

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

اون کلمه public در بحث شی گرایی به کار میره و بهش میگن اصلاح گر،در واقع برای تعیین دسترسی به متد ها وخاصیت های درون یک کلاس از اینا استفاده میشه،مثلا private فقط در درون خود کلاس قابل دسترسی هست و public در بیرون کلاس قابل دسترسی هست،یکی دیگه هم با نام protected داریم که فقط برای کلاس هایی که از کلاس جاری مشتق شدن قابل دسترسی هستش.

1234567890

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

اصلن همین مطالبو یاد گرفته که میخواد آپدیت شه روز به روز؟ 😛

آقا دمتو گرم … ما که راضی هستیم خدا هم راضیه 🙂