• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

عضویت ویژه طلایی گارد ایران با تخفیف 50%

برای عضویت کلیک کنید

9 ارسال در این موضوع قرار دارد

درودی دباره

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

میخواستم آموزش ساخت cms یا همون سیستم مدیریت محتوا به سورت oop یا همون شی گرایی یادتون بدم 

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

این آموزش هم منبعش http://aparnet.ir هستش

/*********************************************************************************************** */

 

ساخت یک CMS ساده در PHP

 

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

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

 


مراحل پروژه:

ساختن دیتابیس

وصل شدن به دیتابیس

نشان دادن فرم با دو فیلد

ذخیره کردن اطلاعات در در فرم

نمایش داده های ذخیره شده

در ادامه مطلب با ما همراه باشید…

 

 

 


ساخت کلاس

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

 

class simpleCMS{
    var $host;
    var $username;
    var $password;
    var $database;
         
    public function display_public(){
             
    }
         
    public function display_admin(){
             
    }
         
    public function write(){
             
    }
         
    public function connect(){
             
    }
         
    public function buildDB(){
             
    }
}

 

میبینید که ما چهار متغیر و پنج متد را ساختیم. خب حالا تابع buildDB را کامل میکنیم.

 

 


ساختن دیتابیس

 

public function buildDB(){
    $sql="create table if not exists testDB (
            title varchar(150),
            bodytext text,
            created varchar(100)    
    )";
    return mysql_query($sql);
}

تابع بالا یک کد MySQL را اجرا میکند. ابتدا چک میکند که آیا جدول testDB وجود دارد در صورت وجود نداشتن آن را ایجاد میکند.

 

 


متصل شدن به دیتابیس

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

 

public function connect(){
    mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error());
    mysql_select_db($this-> database) or die("Could not select database. " . mysql_error());
    return $this->buildDB();
}

 

 

در تابع بالا ابتدا ما به سرور MySQL وصل میشویم و سپس جدول مربوطه رو انتخاب میکنیم. همانطور که میبینید مقدار بازگشتی این تابع اجرای تابع buildDB است. زیرا ما میخواهیم مطمئن شویم در هربار فراخوانی این تابع بر روی دیتابیس خودمان بازنویسی(Overwrite) نمیکنیم.

 

 


ساخت فرم

 

public function display_admin(){
    return <<<ADMIN_FORM
    <form action="{$_SERVER&#91;'PHP_SELF'&#93;}" method="post">
        <label for="title">Title:</label>
        <input name="title" id="title" type="text" maxlength="150" />
        <label for="bodytext">Body Text:</label>
        <textarea name="bodytext" id="bodytext"></textarea>
        <input type="submit" value="Create This Entry!" />
    </form>
ADMIN_FORM;
}

 

دوباره با یک تابع ساده روبرو هستیم. زمانی که فراخوانی میشود یک فرم HTML ساده را برمیگرداند.

همانطور که میبینید مقدار اکشن فرم برابر با PHP_SELF مقدار دهی شده است. این مقدار باعث میشود که در هر صفحه ای که این تابع فرخوانی شود مقدار action هم آدرس همان صفحه باشد.

نحوه مقدار بازگشتی در این تابع هم جذاب است. به این فرمت استفاده شده در پی اچ پی HEREDOC میگویند. در مورد HEREDOC

 

 


ذخیره اطلاعات در دیتابیس

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

 

public function write($p){
    if($p['title'])
    $title=mysql_real_escape_string($p['title']);
    if($p['bodytext'])
        $bodytext=mysql_real_escape_string($p['bodytext']);
    if($title && $bodytext){
        $created=time();
        $sql="insert into testDB values('$title','$bodytext','$created')";
        return mysql_query($sql);
    }else{
        return false;
    }
}

 

این تابع با استفاده از فرم با متد post فراخوانی میشود که درون متغیر $p قرار میگیرد. در داخل تابع با یک if شروع کردیم که اگر مقدار $p ست نشده بود از آن بگذرد در غیر اینصورت آن را بوسیله تابع mysql_real_escape_string در متغیر مربوطه قرار میدهیم. این عملیات را برای  متغیر دوم هم اجرا میکنیم. حالا اگر هر دو متغیر ست شده بودند ما آنها را به همراه زمان جاری در دیتابیس قرار میدهیم.

 

 


نمایش اطلاعات از دیتابیس

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

 

public function display_public(){
    $q="select * from testDB order by created desc limit 3";
    $r=mysql_query($query);
    if($r!==FALSE && mysql_num_rows($r) > 0){
        while ($a=mysql_fetch_assoc($r)){
            $title=stripcslashes($a['title']);
            $bodytext=stripcslashes($a['bodytext']);
                     
            $entry_display .= <<<ENTRY_DISPLAY
                     
            <h2>$title</h2>
            <p>
                $bodytext
            </p>
ENTRY_DISPLAY;
        }
    }else{
        $entry_display=<<<ENTRY_DISPLAY
                 
        <h2>This page is under construction</h2>
        <p>
            No enries have been made on this page.
        </p>
ENTRY_DISPLAY;
    }
    $entry_display .=  <<<ADMIN_OPTION
             
    <p class="admin_link">
        <a href="{$_SERVER&#91;'PHP_SELF'&#93;}?admin=1" >Add a new entry</a>
    </p>
ADMIN_OPTION;
    return $entry_display;
}

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

 

 


استفاده از کلاس نوشته شده

خب حالا شما اولین CMS خودتان را ساختید. حالا زمان استفاده از آن رسیده است.

برای استفاده از این کلاس باید یک صفحه جداگانه درست کنیم. ابتدا فایلی که داخل آن کلاس را نوشتیم به پوشه _class انتقال میدهیم. سپس یک فایل با نام display.php درون پوشه ریشه(منظور بیرون پوشه _class است) درست میکنیم.

درون آن کدهای زیر را قرار میدهیم.

<!DOCTYPE html>
<html>
    <head>
        <title>SimpleCMS</title>
    </head>
    <body>
     
    </body>
</html>

سپس برای استفاده از این کلاس کدهای PHP زیر را درون تگ body قرار میدهیم.

<?php
    include_once('_class/simpleCMS.php');
    $obj= new simpleCMS();
    $obj->host="localhost";
    $obj->username="root";
    $obj->password="";
    $obj->database="testDB";
         
    $obj->connect();
 
    if ( $_POST )
        $obj->write($_POST);
     
    echo ( @$_GET['admin'] == 1 ) ? $obj->display_admin() : $obj->display_public();
?>

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

 

دانلود فایل های مربوط به این پروژه


نکته مهم: این CMS فقط جهت آموزش ساخت یک دیتابیس ساده و همچنین نحوه کار با OOP در PHP بیان شده است و برای استفاده تجاری مناسب نیست. زیرا دارای چندین حفره امنیتی است.

 

DeMoN، C0d3!Nj3ct!0n و Reza.Attacker پسندیده اند

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

درباره ی ما

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