تخفیف ویژه

ساخت CMS ساده با PHP - قسمت 11 - نمایش کامل مطلب و صفحه 404

‏  19 دقیقه
۰۹ مرداد ۱۳۹۳
ساخت CMS ساده با PHP - قسمت 11 - نمایش کامل مطلب و صفحه 404

به نام خدا و سلام،در ادامه آموزش سری CMS در قسمت قبلی ما لیست مطالب سایت رو در صفحه اول نشون دادیم و دکمه ادامه مطلب رو هم ساختیم،در این قسمت هم صفحه نمایش کامل مطلب و صفحه 404 رو ایجاد می‌کنیم.

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

ایجاد صفحه نمایش کامل مطلب

یه فایل جدید با نام view.php در ریشه اصلی پروژه ایجاد می‌کنیم و کدهای زیر رو براش مشخص میکنم.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><?php echo $post['post_title']; ?></title
    <!-- Bootstrap -->
    <link href="css/bootstrap.css" rel="stylesheet">
     <link href="css/bootstrap-rtl.css" rel="stylesheet">
    <link href="css/bootstrap-theme.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="navbar navbar-default navbar-static-top" role="navigation">
                  <ul class="nav navbar-nav">
                      <li><a href="http://localhost:2020/CMS">خانه</a></li>
                  </ul>
              </div>
          </div>
          <div class="row">
              <div class="col-md-8">
                  <div class=" panel panel-default">
                          <div class="panel-heading">
                              <h3 class="panel-title"><?php echo $post['post_title']; ?></h3>
                              <span style="margin-top: -15px;" class="pull-left">
                                  <?php get_persian_date($post['post_date']); ?>
                              </span>
                          </div>
                          <div class="panel-body">
                              <p><?php echo $post['post_body']; ?></p>
                          </div>
                  </div>
                  <div id="comments" class="alert alert-info text-center ">
                      <span>تعداد نظرات این مطلب : </span>
                       <span> <?php echo get_post_comment_count($post_id); ?></span>
                     
                  </div>
              </div>
              <div class="col-md-4">
                  <div class="panel panel-default">
                      <div class="panel-heading">
                          <h3 class="panel-title">اخرین مطالب</h3>
                      </div>
                      <div class="panel-body">
                          <ul class="posts-list">
                          <?php
                           $latest=get("posts",10);
                          while($post=mysql_fetch_assoc($latest)): ?>
                              <li ><a href="view.php?p=<?php echo $post['post_ID']; ?>"><?php echo $post['post_title']; ?></a></li>
                          <?php endwhile; ?>
                           </ul>
                      </div>
                  </div>
              </div>
          </div>
      </div>
    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/script.js"></script>
  </body>
</html>

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

اگر مطلب یافت نشد یا اینکه اطلاعات نادرستی در کوئری استرینگ وارد شده به صفحه 404 کاربر رو هدایت می‌کنیم.

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

require_once 'init.php';
if(isset($_GET['p'])){
    $post_id=intval($_GET['p']);
    $post= get_post_by_id($post_id);
    if(!$post){
        redirect("404.php");
    }
}

اول از همه فایل اصلی init لود میشه و بعدشم چک میکنیم اون کوئری استرینگ ست شده باشه،با تابع intval مقدار عددی شناسه مطلب در کوئری استرینگ رو اعتبار سنجی می‌کنیم و با تابع get_post_by_id مطلب مورد نظر رو واکشی میکنیم و در متغییر post قرار میدیم.

اگه متغییر post برابر false باشه اونوقت کاربر رو به صفحه 404 هدیت می‌کنیم.

تابع get_post_by_id رو مجددا بررسی می‌کنیم.

function get_post_by_id($id=null){
    if(!empty($id) && intval($id)){       
        $result=  mysql_query("SELECT * FROM posts WHERE post_ID={$id} LIMIT 1");
        return mysql_fetch_assoc($result);
    }
    return false;
}

در اینجا شناسه پاس داده شده رو دوباره اعتبار سنجی می‌کنیم و اگه صحیح باشه مقدار رو از دیتابیس می‌گیرم و نتیجه رو return می‌کنیم در غیر این صورت مقدار false رو بر میگردونیم.

تابع redirect

این تابع رو برای هدایت کاربر به صفحات مختلف تعریف می‌کنیم.فایل fucntions.php رو باز کنید و این تابع رو به صورت زیر تعریف کنید.

function redirect($url){
    if(!empty($url)){
        header("Location: {$url}");
    }
}

خوب کدهای کامل صفحه برای view.php به صورت زیر میشه.

<?php 
require_once 'init.php';
if(isset($_GET['p'])){
    $post_id=intval($_GET['p']);
    $post= get_post_by_id($post_id);
    if(!$post){
        redirect("404.php");
    }
}
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><?php echo $post['post_title']; ?></title
    <!-- Bootstrap -->
    <link href="css/bootstrap.css" rel="stylesheet">
     <link href="css/bootstrap-rtl.css" rel="stylesheet">
    <link href="css/bootstrap-theme.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="navbar navbar-default navbar-static-top" role="navigation">
                  <ul class="nav navbar-nav">
                      <li><a href="http://localhost:2020/CMS">خانه</a></li>
                  </ul>
              </div>
          </div>
          <div class="row">
              <div class="col-md-8">
                  <div class=" panel panel-default">
                          <div class="panel-heading">
                              <h3 class="panel-title"><?php echo $post['post_title']; ?></h3>
                              <span style="margin-top: -15px;" class="pull-left">
                                  <?php get_persian_date($post['post_date']); ?>
                              </span>
                          </div>
                          <div class="panel-body">
                              <p><?php echo $post['post_body']; ?></p>
                          </div>
                  </div>
                  <div id="comments" class="alert alert-info text-center ">
                      <span>تعداد نظرات این مطلب : </span>
                       <span> <?php echo get_post_comment_count($post_id); ?></span>
                     
                  </div>
              </div>
              <div class="col-md-4">
                  <div class="panel panel-default">
                      <div class="panel-heading">
                          <h3 class="panel-title">اخرین مطالب</h3>
                      </div>
                      <div class="panel-body">
                          <ul class="posts-list">
                          <?php
                           $latest=get("posts",10);
                          while($post=mysql_fetch_assoc($latest)): ?>
                              <li ><a href="view.php?p=<?php echo $post['post_ID']; ?>"><?php echo $post['post_title']; ?></a></li>
                          <?php endwhile; ?>
                           </ul>
                      </div>
                  </div>
              </div>
          </div>
      </div>
    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/script.js"></script>
  </body>
</html>

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

ایجاد صفحه 404

خوب حالا برای ایجاد صفحه 404 فایلی با همین نام در ریشه پروژه ایجاد می‌کنیم و کدهای زیر رو براش قرار میدیم.

<?php 
require_once 'init.php';
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Simple CMS</title
    <!-- Bootstrap -->
    <link href="css/bootstrap.css" rel="stylesheet">
     <link href="css/bootstrap-rtl.css" rel="stylesheet">
    <link href="css/bootstrap-theme.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
  </head>
  <body>
      <div class="container">
          <div class="row">
              <div class="navbar navbar-default navbar-static-top" role="navigation">
                  <ul class="nav navbar-nav">
                      <li><a href="http://localhost:2020/CMS">خانه</a></li>
                  </ul>
              </div>
          </div>
          <div class="row">
              <div class="col-md-8">
                  <div class=" panel panel-default">
                          <div class="panel-heading">
                              <h3 class="panel-title">صفحه درخواستی شما یافت نشد</h3>
                              <span style="margin-top: -15px;" class="pull-left">
                                 
                              </span>
                          </div>
                          <div class="panel-body">
                              <p class="alert alert-danger">
                                  کاربر گرامی صفحه یا مطلب درخواستی شما یافت نشد
                              </p>
                          </div>
                  </div>
              </div>
              <div class="col-md-4">
                  <div class="panel panel-default">
                      <div class="panel-heading">
                          <h3 class="panel-title">اخرین مطالب</h3>
                      </div>
                      <div class="panel-body">
                          <ul class="posts-list">
                          <?php
                           $latest=get("posts",10);
                          while($post=mysql_fetch_assoc($latest)): ?>
                              <li ><a href="view.php?p=<?php echo $post['post_ID']; ?>"><?php echo $post['post_title']; ?></a></li>
                          <?php endwhile; ?>
                           </ul>
                      </div>
                  </div>
              </div>
          </div>
      </div>
    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/script.js"></script>
  </body>
</html>

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

خوب اینم از بخش نمایش کامل محتوا و  صفحه 404.

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

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

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

نیاز به لاگین

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

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

develop

سلام فایل پیوست شده برای پروژه دانلود نمیشه ممنون میشم پیگیری بفرمائید

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