تبلیغات
Fact World - ساخت فید آر اس اس (RSS Feed)، با استفاده از php و mysql

آموزش برنامه نویسی و مهارتهای وب

article 

ساخت فید آر اس اس (RSS Feed)، با استفاده از php و mysql

mysql-php-rss-feedآر اس اس (RSS) مخففی از سرواژه های RDF Site Summary (کلمه RDF مخفف Resource Description Framework) و معروف به Really Simple Syndication است و در اصطلاح به روشی گفته می شود که با آن می توان بدون مراجعه به یک سایت یا یک وبلاگ، با استفاده از ابزارهایی موسوم به آر اس اس خوان یا Feed Reader، آخرین مطالب آن را با صرف حداقل زمان و به صورت متن ساده یا متن همراه تصاویر معمولا به صورت چکیده پیش خوانی نمود، فیدها یا خوراک وب به زبان xml یا Extensible Markup Language هستند، به طور ساده زبان xml کدهایی را تولید می کند که برای انسان و ماشین قابل خواندن و استفاده بوده و قابلیت سازگاری با پلتفرم های مختلف را داشته باشد، پایه گذار xml کنسرسیوم جهانی وب یا همان w3c بود که با هدف پشتیبانی از یونیکدهای زبان های مختلف جهان در اینترنت، دست به ساخت این زبان زد که امروزه کم تر سایت یا وبلاگی است که یک خروجی rss نداشته باشد، در آموزش پیش رو خواهیم گفت که چگونه می توانیم به کمک php و mysql برای سایت یا وبلاگ شخصی خود فید آر اس اس یا همان خوراک وب را ایجاد و مدیریت کنیم.

آشنایی با فرمت کلی فید آر اس اس:


قبل از اینکه بتوانیم کدهای php و mysql خود را بنویسیم و از آنها خروجی xml بگیریم، باید فرمت کلی آن را بشناسیم؛ به طور ساده یک فید آر اس اس استاندارد، به صورت زیر است.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>عنوان فید</title>
<link>http://yoursite.com</link>
<description>توضیح</description>
<language>fa</language>
<copyright>Copyright</copyright>
<item>
<title>عنوان مطلب</title>
<description>توضیح مطلب</description>
<link>لینک مطلب</link>
<guid>لینک مطلب</guid>
<pubDate>تاریخ مطلب به میلادی</pubDate>
<source url="http://yoursite.com/rss.xml">وبگو</source>
</item>
</channel>
</rss>
توضیح:
- کد بالا شیوه کلی نگارش صحیح خروجی یک فید آر اس اس ورژن 2 است.
- برای سازگاری و کاربرد بیشتر، تگ guid نیز به کد اضافه شده است (در حالت معمول بدون این تگ هم فید قابل استفاده است).
- یونیکد فید آر اس اس مخصوصا برای زبان فارسی باید utf-8 باشد.
- مطالب و اطلاعات آنها بین تگ های <item> و <item/> نوشته می شوند، یعنی برای هر مطلب، یک <item> و <item/> به همراه محتوای درون آن تکرار می شود.

چگونه از php و mysql برای ایجاد یک فید آر اس اس استفاده کنیم:


پس از اینکه با فرمت کلی خوراک وب آشنا شدیم، گرفتن خروجی از اطلاعات موجود در دیتابیس گام دوم است، برای این کار ابتدا یک فایل خالی با نام rss.xml ترجیحا در ریشه سایت بسازید (از این فایل برای نوشتن و خروجی نهایی استفاده خواهیم کرد)، سپس کد زیر را متناسب با دیتابیس و سیستم مدیریت محتوای خود تنظیم کنید.
<?php
//تعریف سرتیترها
$rssfeed = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$rssfeed .= "<rss version=\"2.0\">";
$rssfeed .= "<channel>";
$rssfeed .= "<title>وبگو | فید آر اس اس</title>";
$rssfeed .= "<link>http://yoursite.com</link>";
$rssfeed .= "<description>آموزش برنامه نویسی و مهارتهای وب</description>";
$rssfeed .= "<language>fa</language>";
$rssfeed .= "<copyright>Copyright (C) ".date('Y')." http://yoursite.com</copyright>";
//انتخاب مطالب از پایگاه داده
$result = mysql_query("SELECT * FROM articles WHERE show = 'show' ORDER BY ranking + 0 DESC LIMIT 20")
or die (mysql_error());
//استفاده از ردیف های پایگاه داده
while($row = mysql_fetch_array($result)){
 $id = $row['id'];
 $title = $row['title'];
 //ایجاد خروجی استاندارد و جلوگیری از ایجاد کاراکترهای غیر مجاز
 $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
 $summary = $row['summary'];
 //ایجاد خروجی استاندارد و جلوگیری از ایجاد کاراکترهای غیر مجاز
 $summary = htmlspecialchars($summary, ENT_QUOTES, 'UTF-8');
 //تبدیل تاریخ دیتابیس به تاریخ استاندار
 $date = $row['date'];// 22-12-1999
 $stringArray = explode("-", $date);
 $date = mktime(0,0,0,$stringArray[1],$stringArray[2],$stringArray[0]);
 $convert = date("D, j M Y", $date);
 $date = $convert .' '. $row['time'].' '.'GMT';
 //تعریف لینک خروجی
 $link = "http://yoursite.com/?article=$id";
 //ایجاد آیتم برای فید
 $rssfeed .= "<item>";
 $rssfeed .= "<title>" . $title . "</title>";
 $rssfeed .= "<description>" . $summary . "</description>";
 $rssfeed .= "<link>" . $link . "</link>";
 $rssfeed .= "<guid>" . $link . "</guid>";
 $rssfeed .= "<pubDate>" . $date . "</pubDate>";
 //$rssfeed .= "<author>" . mail . "(url)"."</author>"; //اختیاری
 $rssfeed .= "<source url=\"http://yoursite.com/rss.xml\">وبگو</source>";
 $rssfeed .= "</item>";
 }
$rssfeed .= "</channel>";
$rssfeed .= "</rss>";
//نوشتن اطلاعات در فایل خروجی
$file = "rss.xml";
chmod($file, 0755);
$fileHandle = fopen($file, 'w+')
or die("خطا: سطح دسترسی برای ویرایش فایل در سرور تنظیم نیست!");
$stringData = $rssfeed;
fwrite($fileHandle, $stringData);
fclose($fileHandle);
?>
توضیح:
- همان طور که گفتیم، برای استفاده از کد بالا باید موارد مورد نیاز را با توجه به پایگاه داده و سیستم مدیریت محتوای خود ویرایش کنید.
- در قسمت mysql_query، از جدول فرضی articles تعداد 20 مورد از آخرین مطالب منتشر شده ('WHERE show = 'show) را انتخاب کرده ایم.
- ranking + 0 برای جلوگیری از بروز مشکل عدد فرض نشدن ردیف هایی است که به صورت varchar تعریف شده اند (اگر در یک ردیف varchar بخواهید با اعداد، sort کنید، باید عدد صفر را به مقدار موجود اضافه کنید تا mysql نوع آن ردیف را به عنوان عدد بشناسد و بتواند روی آن ردیف، sort عددی را اجرا کند)، اگر نوع داده در ردیف مورد نظر INT باشد، نیازی به جمع با عدد صفر نیست.
- htmlspecialchars و تنظیمات آن برای جلوگیری از ایجاد کاراکترهای غیر مجاز در خروجی xml است.
- فرمت استاندارد تاریخ در فید آر اس اس به صورت Sat, 21 Apr 2012 14:36:40 GMT (جهت نمونه) است، لذا باید تاریخ mysql را به کمک توابع explode و mktime به این فرمت استاندارد تبدیل کنیم.
- قسمت مربوط به <author> اختیاری است، به طور استاندارد باید ایمیل سایت خود را در این قسمت تعریف کنید که این کار ممکن است موجب هجوم اسپمرها به آدرس پست الکترونیک شما شود.
- قسمت پایانی کد (chmod ،fopen ،fwrite و fclose) برای نوشتن اطلاعات در فایل rss.xml است.
- برای به روز رسانی مرتب فید آر اس اس بهتر است آن را در قسمت ارسال مطالب ایمپورت کنید تا با هر بار انتشار و ارسال پست های جدیدتر، اطلاعات جدید جایگزین موارد قبلی شود.
section دسته بندی: آموزش کاربردی - آموزش کاربردی MySQL -


یکشنبه 13 مهر 1393

نظرات ()


دوشنبه 27 شهریور 1396 06:48 ب.ظ
I am really impressed with your writing skills and also with
the layout on your weblog. Is this a paid theme or did
you modify it yourself? Either way keep up the excellent quality writing,
it's rare to see a nice blog like this one these days.
دوشنبه 16 مرداد 1396 06:02 ق.ظ
Everyone loves what you guys are usually up too.
This kind of clever work and reporting! Keep up the great works guys I've
incorporated you guys to blogroll.
شنبه 14 مرداد 1396 02:17 ق.ظ
Oh my goodness! Incredible article dude! Thank you so much, However I am experiencing issues with
your RSS. I don't know the reason why I can't subscribe to it.
Is there anybody else getting the same RSS issues?
Anyone who knows the answer will you kindly respond? Thanks!!
جمعه 13 مرداد 1396 06:24 ق.ظ
Spot on with this write-up, I honestly believe this web site needs much more attention. I'll probably
be back again to read through more, thanks for the
information!
پنجشنبه 7 اردیبهشت 1396 01:56 ب.ظ
BHW
I do consider all of the ideas you have presented in your post.
They are very convincing and will certainly work.
Still, the posts are very short for newbies.
May just you please lengthen them a bit from subsequent time?
Thank you for the post.
چهارشنبه 23 فروردین 1396 06:05 ب.ظ
Its like you read my mind! You seem to know a lot about this, like you
wrote the book in it or something. I think that you
could do with a few pics to drive the message home a bit,
but instead of that, this is fantastic blog. A fantastic read.

I will definitely be back.

نظر خود را ثبت کنید:

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



آگهی
آموزش طراحی سایت
webgoo.ir

آموزش برنامه نویسی و مهارتهای وب
امکانات جانبی


IP شما: ( )