amir01
Well-Known Member
با سلام.
با توجه به اینکه تو این چند وقت متوجه شدم خیلی ها دوست دارن که یک سیستم خبری داشته باشن، یا خودشون بنویسن، یا دوست دارن نوشتن یک سی ام اس رو یاد بگیرن، این آموزش رو که آموزش نوشتن یه سیستم خبری خیلی خیلی ساده با امکانات زیر رو آماده کردم که در اختیار دوستان بذارم. به امید اینکه نهایت استفاده رو ببرید.
امکانات :
مدیریت اخبار
ثبت خبر جدید
ویرایش خبرهای موجود
حذف خبرها
شمارنده بازدیدها برای هر خبر
لینک مستقیم برای خبرها
بسم الله الرحمن الرحیم...
خب شروع میکنیم.
1- اول که یک دیتابیس درست میکنیم و یک جدول که ساختارش به صورت زیر هست:
2- حالا یک فایل به اسم config.php ایجاد میکنیم و اطلاعات دیتابیس رو تو می نویسیم به این صورت:
admin/config.php
3- حالا یه صفحه برای لوگین مدیریت میسازیم. من ساده ترینش رو نوشتم. شما میتونید بعدا برای افزایش امنیت این کد رو به اون صورتی که دوست دارید تغییر بدید. در ضمن بگم که فایهای مدیریت در پوشه ای به اسم admin باید قرار بگیرن.
admin/index.php
توضیحات : همونطور که میبیند در ابتدای صفحه کدی نوشتیم مبنی بر اینکه اگر فرم ورود به مدیریت ارسال شده بود، سرور برامون یک جلسه ایجاد کنه.
4- حالا صفحه افزودن/ ویرایش خبرها رو درست میکنیم.
admin/addNews.php
توضیحات : خب اول این صفحه گفتیم که چک کنه اگه جلسه ی مدیریت وجود داشت، صفحه افزودن خبر رو نشون بده و در خط آخر هم یه else گذاشتیم یعنی اگه جلسه ای پیدا نکرد کاربر رو به صفحه index.php (همون صفحه لوگین) هدایت کنه.
بعدش که یه سری کد اچ تی ام ال برای عنوان صفحه و سی اس اس و اینا هستش که کاری باهاش نداریم. بعدش از یه ساختار شرطی استفاده کردیم که چک میکنه می بینه اگه متغیر Act که از طریق متد POST ارسال شده ارزش AddNews رو داشت، خبر رو تو دیتابیس ذخیره کنه و اگه ارزش EditNews رو داشت، اطلاعات جدیدی که توسط مدیر برای ویرایش خبر داده شده رو تو دیتابیس جایگزین کنه.
این دو مرحله هم به این صورته که یه کوئری برای افزودن خبر :
و اون یکی برای بروز کردن دیتابیس :
البته شما میتونید این دوتا صفحه رو جدا کنید مثلا یه صفحه به اسم editNews.php درست کنید که کارش فقط ویرایش مطلب باشه. این کار سلیقه ایه.
بعد از این کوئری ها هم که دوباره یه دستور شرطی برای خبر دادن به کاربر گذاشتیم که فکر کنم نیازی به توضیحات نداشته باشه.
5- صفحه مدیریت خبرها
admin/mgrNews.php
توضیحات : توی این صفحه قراره که ما لیست خبرهایی که تا حالا تو دیتابیس ذخیره شده رو به مدیر نشون بدیم. و این کار رو توسط دستور SELECT انجام میدیم. قسمت اول صفحه رو که عین همون صفحه افزودن خبر هست رو دیگه توضیح نمیدم. پایین ترش گفتیم که با یه if چک کنه که اگه متغیر delID از طریق متد GET به صفحه ارسال شده بود، خبری که مشخصه id اون همون عددی هستش که از متغیر delID رو از دیتابیس حذف کنه.
بعدش هم گفتیم که با دستور SELECT همه اطلاعات ذخیره شده تو دیتابیس رو بیرون بکشه و توسط یه حله while اونا رو تو یه جدول نشون بده.
6- خب تا اینجا بخش مدیریت سیستم تموم شد و حالا تنها چیزی که نیاز داریم، صفحه ای برای نمایش خبرهاست که به صورت زیر مینویسیمش:
index.php
توضیحات : همونطور که مشاهده میکنید این صفحه هم مثل همون صفحه mgrNews.php که لیست خبرها رو نشون میداد هستش فقط قالب نمایشش رو تغییر دادیم.
پایان...
دیدید؟ اصلا کار عجیب و غریبی نیست نوشتن یه سی ام اس الکی می ترسن. فقط یکم حوصله میخواد. (البته این نظر منه!)
هر از چندگاهی آموزش اضافه کردن امکانات دیگه به این سیستم رو اینجا میذارم. سر بزنید.
اینجا هم میتونید یه دمو ازش ببینید : http://aloche.ir/pro/NewsCMS
راستی وایسید... یوزرنیم و پسورد ادمین هم test هست که میتونید عوض کنید. البته باید بلد باشید که گند نزنید(!)
اگه سوالی از قسمتی دارید حتما بپرسید...
کل سیستم رو هم پیوست کردم برای کسایی که کپی پیست بلد نیستن(!) :دی یا یکم .... شون میاد که کپی پست کنن. (;
خب امیدوارم که استفاده برده باشید.
همیشه خوب باشید.
یاحق...
با توجه به اینکه تو این چند وقت متوجه شدم خیلی ها دوست دارن که یک سیستم خبری داشته باشن، یا خودشون بنویسن، یا دوست دارن نوشتن یک سی ام اس رو یاد بگیرن، این آموزش رو که آموزش نوشتن یه سیستم خبری خیلی خیلی ساده با امکانات زیر رو آماده کردم که در اختیار دوستان بذارم. به امید اینکه نهایت استفاده رو ببرید.
امکانات :
مدیریت اخبار
ثبت خبر جدید
ویرایش خبرهای موجود
حذف خبرها
شمارنده بازدیدها برای هر خبر
لینک مستقیم برای خبرها
بسم الله الرحمن الرحیم...
خب شروع میکنیم.
1- اول که یک دیتابیس درست میکنیم و یک جدول که ساختارش به صورت زیر هست:
کد:
CREATE TABLE `news` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` TEXT NOT NULL ,
`content` TEXT NOT NULL ,
`date` VARCHAR( 20 ) NOT NULL ,
`visits` INT NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM;
2- حالا یک فایل به اسم config.php ایجاد میکنیم و اطلاعات دیتابیس رو تو می نویسیم به این صورت:
admin/config.php
کد:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'news';
$link = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db ($dbname, $link);
?>
3- حالا یه صفحه برای لوگین مدیریت میسازیم. من ساده ترینش رو نوشتم. شما میتونید بعدا برای افزایش امنیت این کد رو به اون صورتی که دوست دارید تغییر بدید. در ضمن بگم که فایهای مدیریت در پوشه ای به اسم admin باید قرار بگیرن.
admin/index.php
کد:
<?php
session_start();
if ( isset($_POST['userName']) && isset($_POST['passWord']) )
{
if ( ($_POST['userName'] == "test") && ($_POST['passWord'] == "test") )
{
$_SESSION['userName'] = $_POST['userName'];
header ("Location: addNews.php");
}
}
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="Author" content="Amir Jafari <[email protected]>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="style.css" rel="stylesheet">
<title> News Management : Admin Login </title>
</head>
<body>
<form action="" method="POST">
<div align="center">
<table border="0" width="300" cellpadding="0" dir="rtl" class="newsbody">
<tr>
<td align="right" id="newstitle" colspan="2"><b>» ورود به بخش مدیریت</b></td>
</tr>
<tr>
<td>
<table border="0" dir="rtl" cellpadding="0" id="main" width="100%">
<tr>
<td align="left" dir="rtl">نام کاربری:</td>
<td align="right" dir="rtl"><input type="text" name="userName" size="20" class="box"></td>
</tr>
<tr>
<td align="left" dir="rtl">رمزعبور:</td>
<td align="right" dir="rtl"><input type="password" name="passWord" size="20" class="box"></td>
</tr>
<tr>
<td align="left" dir="rtl"></td>
<td align="right" dir="rtl"><input type="submit" value=" ورود " name="submit" class="btn"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="footer">Programming by <a href="mailto:[email protected]">Amir Jafari</a>.</td>
</tr>
</table>
</div>
</form>
</body>
</html>
توضیحات : همونطور که میبیند در ابتدای صفحه کدی نوشتیم مبنی بر اینکه اگر فرم ورود به مدیریت ارسال شده بود، سرور برامون یک جلسه ایجاد کنه.
4- حالا صفحه افزودن/ ویرایش خبرها رو درست میکنیم.
admin/addNews.php
کد:
<?php
session_start();
if ( isset($_SESSION['userName']) ) {
if ( (isset($_GET['act'])) && ($_GET['act'] == "logOut") )
{
unset ($_SESSION['userName']);
header ("Location: index.php");
}
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="Author" content="Amir Jafari <[email protected]>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="style.css" rel="stylesheet">
<title> News Management : Add News </title>
</head>
<body>
<?php
if ( isset($_POST['Act']) && ($_POST['Act'] == "AddNews") )
{
include "config.php";
$AddNews = mysql_query ("INSERT INTO `news` VALUES ('', '".$_POST['newsTitle']."', '".$_POST['newsContent']."', '".mktime()."', '0')");
if ( $AddNews )
{
$Prompt = '<font color="green"><b>خبر جدید با موفقیت ثبت شد.</b></font>';
}
else
{
$Prompt = '<font color="red"><b>متاسفانه مشکلی در ثبت خبر جدید وجود دارد.</b></font>';
}
}
elseif ( isset($_POST['Act']) && ($_POST['Act'] == "EditNews") )
{
include "config.php";
$EditNews = mysql_query ("UPDATE `news` SET `title` = '".$_POST['newsTitle']."', `content` = '".$_POST['newsContent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
if ( $EditNews )
{
$Prompt = '<font color="green"><b>تغییرات با موفقیت اعمال شدند.</b></font>';
}
else
{
$Prompt = '<font color="red"><b>متاسفانه مشکلی در ثبت تغییرات وجود دارد.</b></font>';
}
}
else
{
$Prompt = false;
}
if ( isset($_GET['edtID']) && ($_GET['edtID'] !== "") )
{
include "config.php";
$Query = mysql_query("SELECT * FROM `news` WHERE `id` = '".intval($_GET['edtID'])."' LIMIT 1");
$row_rsEdit = mysql_fetch_array($Query);
}
?>
<div align="center">
<table border="0" width="600" id="main" cellpadding="0">
<tr>
<td id="nav">
<ul id="navlist">
<li><a href="addNews.php">افزودن خبر</a></li>
<li><a href="mgrNews.php">آرشیو خبرها</a></li>
<li><a href="?act=logOut">خروج</a></li>
</ul>
</td>
</tr>
<tr>
<td id="main">
<form action="" method="POST">
<input type="hidden" name="Act" value="<?php echo (isset($row_rsEdit)) ? "EditNews" : "AddNews"; ?>">
<?php echo (isset($row_rsEdit)) ? '<input type="hidden" name="id" value="'.$row_rsEdit['id'].'">' : ''; ?>
<div align="center">
<table border="0" width="460" dir="rtl" cellpadding="0">
<tr>
<td align="center" colspan="2"><?php echo $Prompt; ?></td>
</tr>
<tr>
<td align="left" width="83" height="24">عنوان خبر :</td>
<td align="right" height="24"><input type="text" name="newsTitle" value="<?php echo $row_rsEdit['title']; ?>" size="30" class="box"></td>
</tr>
<tr>
<td align="left" width="83" valign="top">متن خبر :</td>
<td><textarea rows="12" name="newsContent" cols="70"><?php echo $row_rsEdit['content']; ?></textarea></td>
</tr>
<tr>
<td width="83"> </td>
<td align="left"><input type="submit" value="ثبت خبر" name="submit" class="btn"></td>
</tr>
</table>
</div>
</form>
</td>
</tr>
<tr>
<td id="footer">Programming by <a href="mailto:[email protected]">Amir Jafari</a>.</td>
</tr>
</table>
</div>
</body>
</html>
<?php } else { header ("Location: index.php"); } ?>
توضیحات : خب اول این صفحه گفتیم که چک کنه اگه جلسه ی مدیریت وجود داشت، صفحه افزودن خبر رو نشون بده و در خط آخر هم یه else گذاشتیم یعنی اگه جلسه ای پیدا نکرد کاربر رو به صفحه index.php (همون صفحه لوگین) هدایت کنه.
بعدش که یه سری کد اچ تی ام ال برای عنوان صفحه و سی اس اس و اینا هستش که کاری باهاش نداریم. بعدش از یه ساختار شرطی استفاده کردیم که چک میکنه می بینه اگه متغیر Act که از طریق متد POST ارسال شده ارزش AddNews رو داشت، خبر رو تو دیتابیس ذخیره کنه و اگه ارزش EditNews رو داشت، اطلاعات جدیدی که توسط مدیر برای ویرایش خبر داده شده رو تو دیتابیس جایگزین کنه.
این دو مرحله هم به این صورته که یه کوئری برای افزودن خبر :
کد:
mysql_query ("INSERT INTO `news` VALUES ('', '".$_POST['newsTitle']."', '".$_POST['newsContent']."', '".mktime()."', '0')");
کد:
mysql_query ("UPDATE `news` SET `title` = '".$_POST['newsTitle']."', `content` = '".$_POST['newsContent']."' WHERE `id` = '".$_POST['id']."' LIMIT 1");
بعد از این کوئری ها هم که دوباره یه دستور شرطی برای خبر دادن به کاربر گذاشتیم که فکر کنم نیازی به توضیحات نداشته باشه.
5- صفحه مدیریت خبرها
admin/mgrNews.php
کد:
<?php
session_start();
if ( isset($_SESSION['userName']) ) {
if ( (isset($_GET['act'])) && ($_GET['act'] == "logOut") )
{
unset ($_SESSION['userName']);
header ("Location: index.php");
}
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="Author" content="Amir Jafari <[email protected]>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="style.css" rel="stylesheet">
<title> News Management : News Archives </title>
</head>
<body>
<?php
include "config.php";
if ( isset($_GET['delID']) && !empty($_GET['delID']) )
{
$DelNews = mysql_query ("DELETE FROM `news` WHERE `id` = '".intval($_GET['delID'])."' LIMIT 1");
if ( $DelNews )
{
$Prompt = '<font color="green"><b>خبر انتخابی با موفقیت حذف شد.</b></font>';
}
else
{
$Prompt = '<font color="red"><b>متاسفانه مشکلی در حذف خبر وجود دارد.</b></font>';
}
}
else
{
$Prompt = false;
}
?>
<div align="center">
<table border="0" width="600" id="main" cellpadding="0">
<tr>
<td id="nav">
<ul id="navlist">
<li><a href="addNews.php">افزودن خبر</a></li>
<li><a href="mgrNews.php">آرشیو خبرها</a></li>
<li><a href="?act=logOut">خروج</a></li>
</ul>
</td>
</tr>
<tr>
<td id="main">
<form action="" method="POST">
<input type="hidden" name="Act" value="AddNews">
<div align="center">
<table border="0" width="460" dir="rtl" cellpadding="0" id="main" style="margin-top: 10px;">
<tr>
<td align="center" colspan="4"><?php echo $Prompt; ?></td>
</tr>
<tr>
<td id="listHeader">عنوان</td>
<td id="listHeader">تاریخ</td>
<td id="listHeader">ویرایش</td>
<td id="listHeader">حذف</td>
</tr>
<?php
$Query = mysql_query ("SELECT * FROM `news` ORDER BY `id` DESC");
while ( $row_rsNews = mysql_fetch_array($Query) ) { ?>
<tr id="listItem">
<td align="right"><?php echo $row_rsNews['title']; ?></td>
<td align="center"><?php echo date("Y/n/d", $row_rsNews['date']) ?></td>
<td align="center"><a href="addNews.php?edtID=<?php echo $row_rsNews['id']; ?>">[Edit]</a></td>
<td align="center"><a href="?delID=<?php echo $row_rsNews['id']; ?>">[x]</a></td>
</tr>
<?php } ?>
</table>
</div>
</form>
</td>
</tr>
<tr>
<td id="footer">Programming by <a href="mailto:[email protected]">Amir Jafari</a>.</td>
</tr>
</table>
</div>
</body>
</html>
<?php } else { header ("Location: index.php"); } ?>
توضیحات : توی این صفحه قراره که ما لیست خبرهایی که تا حالا تو دیتابیس ذخیره شده رو به مدیر نشون بدیم. و این کار رو توسط دستور SELECT انجام میدیم. قسمت اول صفحه رو که عین همون صفحه افزودن خبر هست رو دیگه توضیح نمیدم. پایین ترش گفتیم که با یه if چک کنه که اگه متغیر delID از طریق متد GET به صفحه ارسال شده بود، خبری که مشخصه id اون همون عددی هستش که از متغیر delID رو از دیتابیس حذف کنه.
بعدش هم گفتیم که با دستور SELECT همه اطلاعات ذخیره شده تو دیتابیس رو بیرون بکشه و توسط یه حله while اونا رو تو یه جدول نشون بده.
6- خب تا اینجا بخش مدیریت سیستم تموم شد و حالا تنها چیزی که نیاز داریم، صفحه ای برای نمایش خبرهاست که به صورت زیر مینویسیمش:
index.php
کد:
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta name="Author" content="Amir Jafari <[email protected]>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="admin/style.css" rel="stylesheet">
<title> Index of News! </title>
</head>
<body>
<?php
include "admin/config.php";
if ( isset($_GET['newsID']) )
{
$SQL = "SELECT * FROM `news` WHERE `id` = '".intval($_GET['newsID'])."' LIMIT 1";
mysql_query ("UPDATE `news` SET visits=visits+1 WHERE `id` = '".intval($_GET['newsID'])."' LIMIT 1");
}
else
{
$SQL = "SELECT * FROM `news` ORDER BY `id` DESC";
}
$Query = mysql_query ($SQL);
while ( $row_rsNews = mysql_fetch_array($Query) ) {
?>
<div align="center">
<table border="0" width="500" cellpadding="0" dir="rtl" class="newsbody">
<tr>
<td align="right" id="newstitle"><b><a href="index.php?newsID=<?php echo $row_rsNews['id']; ?>" title="لینک مستقیم">[+]</a> <?php echo $row_rsNews['title']; ?></b></td>
</tr>
<tr>
<td align="right" dir="rtl"><?php echo nl2br($row_rsNews['content']); ?></td>
</tr>
<tr>
<td align="left"><?php echo date("Y/n/d", $row_rsNews['date']) ?> | بازدیدها: <?php echo $row_rsNews['visits']; ?></td>
</tr>
</table>
</div>
<?php } ?>
</body>
</html>
توضیحات : همونطور که مشاهده میکنید این صفحه هم مثل همون صفحه mgrNews.php که لیست خبرها رو نشون میداد هستش فقط قالب نمایشش رو تغییر دادیم.
پایان...
دیدید؟ اصلا کار عجیب و غریبی نیست نوشتن یه سی ام اس الکی می ترسن. فقط یکم حوصله میخواد. (البته این نظر منه!)
هر از چندگاهی آموزش اضافه کردن امکانات دیگه به این سیستم رو اینجا میذارم. سر بزنید.
اینجا هم میتونید یه دمو ازش ببینید : http://aloche.ir/pro/NewsCMS
راستی وایسید... یوزرنیم و پسورد ادمین هم test هست که میتونید عوض کنید. البته باید بلد باشید که گند نزنید(!)
اگه سوالی از قسمتی دارید حتما بپرسید...
کل سیستم رو هم پیوست کردم برای کسایی که کپی پیست بلد نیستن(!) :دی یا یکم .... شون میاد که کپی پست کنن. (;
خب امیدوارم که استفاده برده باشید.
همیشه خوب باشید.
یاحق...
پیوست ها
آخرین ویرایش: