در اين آموزش قصد دارم در چند مرحله نحوه ساخت يك سيستم وبلاگ دهي رو توضيح بدم.دقت كنيد كه پروژه در رده مقدماتي – متوسط و پيشرفته هست!در واقع از سطح مقدماتي شروع مي كنيم و به بالاتر پيش ميريم.موارد و نكات امنيتي رو در حين كد نويسي ها سعي مي كنم توضيح بدم اما به خاطر اينكه پروژه پيچيده نشه به نكات ابتدايي اكتفا مي كنيم.
توجه كنيد كه اين يك سيستم وبلاگ دهي واقعي نيست(به دليلي سادگي زياد!)!بلكه فقط يك پروژه عملي هست براي افزايش توانمندي مخاطب در برنامه نويسي هست.در واقع ميشه اسمش رو mini blogger بذاريم 
ملزومات: آشنايي مقدماتي با php و mysql
قسمت اول :
ابتدا يك ديتابيس جديد ميسازيم:
کد:
CREATE DATABASE `blogdehi` ;
ساخت جداول :
1. جدول اعضا
کد:
CREATE TABLE `blogdehi`.`users` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`user` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`password` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`email` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
دستورات اس كيو ال رو توضيح نمي دم و پيش فرض رو بر اين ميذارم كه با اين دستورات آشنا هستيد.اگر كسي با دستورات مشكل داشت مي تونه از php my admin كمك بگيره
به ازاي هر عضو در سيستم ما قرار هست يك ركورد به جدول اضافه بشه.
هر كاربر داراي يك شناسه (id) از نوع عدد صحيح (int) هست كه بايد منحصر به فرد باشه و براي همين اون رو از AUTO_INCREMENT و PRIMARY KEY تعريف كردم.اين كار باعث ميشه در ارتباط بين جداول،جتسجو و جلوگيري از افزونگي داده ها كمك شاياني بشه.
اطلاعات بيشتر:
Unique key - Wikipedia, the free encyclopedia
Unique key - Wikipedia, the free encyclopedia
نام كاربري،رمز عبور،پست الكترونيك و نام كاربر رو هم از نوع رشته (varchar) در نظر گرفتم.
جدول وبلاگ ها:
مي تونستيم همون نام كاربري رو به عنوان نام وبلاگ هم در نظر بگيريم ، اما فرض كنيم مثل برخي سيستم هاي وبلاگ دهي ميخواهيم كاري كنيم كه يك كاربر بتونه چند وبلاگ داشته باشه..البته براي اينكه آموزش پيچيده نشه و بخش مديريت پيچيده تري هم نداشته باشيم فعلا پيش فرض رو بر يك وبلاگ مي ذاريم.
اين جدولمون بايد شامل ، شناسه وبلاگ،شناسه صاحب وبلاگ،آدرس وبلاگ،عنوان وبلاگ،توضيحات وبلاگ،كلمات كليدي وبلاگ باشد.
کد:
CREATE TABLE `blogdehi`.`blogs` (
`blogid` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT( 5 ) NOT NULL ,
`blog` VARCHAR( 255 ) NOT NULL ,
`title` INT( 255 ) NOT NULL ,
`description` TEXT NOT NULL ,
`keys` VARCHAR( 255 ) NOT NULL
) ENGINE = InnoDB CHARACTER SET ucs2 COLLATE ucs2_general_ci
خب اين جدول هم مثل جدول قبل هست و توضيح خاصي نياز نداره...
جدول قالب ها :
هر وبلاگ داراي يك قالب منحصر به فرد هست كه به صورت پيش فرض نمايش داده ميشه و تعدادي قالب پيش فرض كه كاربر مي تونه يكي رو براي وبلاگش انتخاب كنه.
بنابراين جدولي داراي چنين مشخصاتي مي سازيم:
شناسه قالب : شناسه عددي منحصر به فرد براي قالب
شناسه وبلاگ صاحب قالب،
وضعيت قالب : يك عدد كه نشون مي ده قالب فعلي قالب پيش فرض ما هست،يا قالبي هست كه مي تونه توسط بازديد كننده انتخاب بشه (مثل كمبو باكس تغيير قالب در پايين بعضي انجمن ها)، يا يك قالب هست كه در آرشيو نگه داري ميشه.
كد قالب : كه شامل كد HTML و Javascript تگ گذاري شده قالب هست.
کد:
CREATE TABLE `blogdehi`.`template` (
`tmpid` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`blogid` INT( 5 ) NOT NULL ,
`active` INT( 1 ) NOT NULL ,
`code` TEXT NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
جدول مطالب :
شامل شناسه مطلب،شناسه وبلاگ صاحب مطلب،شناسه نويسنده مطلب،عنوان مطلب،شناسه موضوع مطلب،تاريخ مطلب،متن مطلب،متن ادامه مطلب مي باشد.
کد:
CREATE TABLE `blogdehi`.`data` (
`postid` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT( 5 ) NOT NULL ,
`blogid` INT( 5 ) NOT NULL ,
`title` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`text` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`fulltext` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`cat` INT( 5 ) NOT NULL ,
`date` TIMESTAMP NOT NULL
) ENGINE = InnoDB
جدول موضوعات وبلاگ ها:
شامل شناسه موضوع،شناسه وبلاگ صاحب موضوع،عنوان موضوع مي باشد.
کد:
CREATE TABLE `blogdehi`.`cat` (
`catid` INT( 5 ) NOT NULL ,
`blogid` INT( 5 ) NOT NULL ,
`title` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = InnoDB
جداول ديگري هم مثل جدول مديريت، لينك ها و ... هست كه اگر در حين توضيح پروژه فرصتي براي گسترشش داشتم به پروژه اضافه مي كنم.تا الان هم جزييات زياد اضافي رو وارد برنامه كردم فقط به خاطر اينكه جذاب تر بشه!وگرنه پيچيده گي كار رو بالاتر مي بره.
اميدوارم جدول لازمي از قلم نيوفتاده باشه و اگه افتاده باشه بعدا اضافه مي كنم.
فعلا خودم خسته شدم!
و براي اينكه آموزش هم خسته كننده نشه شروع كد نويسي رو به جلسات بعدي موكول مي كنم.
نكته مورد اهميت اين پروژه اينه كه قصد دارم در اين پروژه از به كارگيري HTML در كدهاي PHP خودداري كنم.برنامه رو شي گرا نمي نويسم تا ساده تر باشه اما به تعدادي function كاربردي تبديلش مي كنم.
سپاس