آموزش ایجاد Rss در زبان PHP
آموزش ایجاد Rss در زبان PHP
در این پست آموزش ساخت RSS در زیان PHP را یاد می گیریم تا بتوانیم رتبه سایت خود را بالا ببریم.
در پست های قبلی آموزش نحوه ایجاد RSS در ASP.Net را توضیح دادیم و همچنین نحوه استفاده آن در Feedburner را توضیح دادیم و شما می توانید از این آموزش جهت استفاده در Feedburner سایت خودتان بکار ببرید.
آر اس اس (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 بگیریم، باید فرمت کلی آن را بشناسیم؛ به طور ساده یک فید آر اس اس استاندارد، به صورت زیر است.
<link>http://iranganj.ir</link> <description>توضیح</description> <language>fa</language> <copyright>Copyright</copyright> <item> <title>عنوان مطلب</title> <description>توضیح مطلب</description> <link>لینک مطلب</link> <guid>لینک مطلب</guid> <pubDate>تاریخ مطلب به میلادی</pubDate> <source url="http:// iranganj.ir /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://iranganj.ir</link>"; $rssFeed .= "<description>آموزش برنامه نویسی و مهارتهای وب</description>"; $rssFeed .= "<language>fa</language>"; $rssFeed .= "<copyright>Copyright (C) " . date('Y') . " http://iranganj.ir</copyright>"; //انتخاب مطالب از پایگاه داده define("DB_SERVER_LOCAL", "localhost"); define("DB_USER_LOCAL", "root"); define("DB_PASS_LOCAL", ""); define("DB_NAME_LOCAL", "rss"); $connection = mysqli_connect(DB_SERVER_LOCAL, DB_USER_LOCAL, DB_PASS_LOCAL, DB_NAME_LOCAL); mysqli_query($connection, "set names 'utf8'"); if (mysqli_connect_errno()) { die("database connection failed: " . mysqli_connect_error() . "(" . mysqli_connect_errno() . ")" ); } $query = "SELECT * "; $query .= "FROM topic "; $query.="ORDER BY TopicId DESC "; $topicInfo = mysqli_query($connection, $query); if(!$topicInfo){ die("database query failed"); } //استفاده از ردیف های پایگاه داده while ($row = mysqli_fetch_assoc($topicInfo)) { $pageName = $row["Title"]; $pageNameEdit = str_replace(".", "-", str_replace(" ", "-", $pageName)); $topicId = $row['TopicId']; $title = $row['Title']; //ایجاد خروجی استاندارد و جلوگیری از ایجاد کاراکترهای غیر مجاز $title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); $metaDescription = $row['Description']; //ایجاد خروجی استاندارد و جلوگیری از ایجاد کاراکترهای غیر مجاز $metaDescription = htmlspecialchars($metaDescription, ENT_QUOTES, 'UTF-8'); //تبدیل تاریخ دیتابیس به تاریخ استاندار $date = $row['InsertDate']; $stringArray = explode("-", $date); $date = mktime(0,0,0,$stringArray[1],$stringArray[2],$stringArray[0]); $convert = date("D, j M Y", $date); $date = $convert . ' ' . $row['InsertTime'] . ' ' . 'GMT'; //تعریف لینک خروجی $link = "http://iranganj.ir/DynamicPage.php?topicId=$topicId/$pageNameEdit"; //ایجاد آیتم برای فید $rssFeed .= "<item>"; $rssFeed .= "<title>" . $title . "</title>"; $rssFeed .= "<description>" . $metaDescription . "</description>"; $rssFeed .= "<link>" . $link . "</link>"; $rssFeed .= "<guid>" . $link . "</guid>"; $rssFeed .= "<pubDate>" . $date . "</pubDate>"; //$rssFeed .= "<author>" . mail . "(url)"."</author>"; //اختیاری $rssFeed .= "<source url=\"http://iranganj.ir/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); ?>
در قسمت mysqli_query، از جدول فرضی topic کل اطلاعات را خواندیم که شما می توانید مثلا 20 مورد را بخوانید.- htmlspecialchars و تنظیمات آن برای جلوگیری از ایجاد کاراکترهای غیر مجاز در خروجی xml است.
فرمت استاندارد تاریخ در فید آر اس اس به صورت Mon 16 Feb 2015 14:36:40 GMT (جهت نمونه) است، لذا باید تاریخ mysql را به کمک توابع explode و mktime به این فرمت استاندارد تبدیل کنیم.
- قسمت مربوط به <author> اختیاری است، به طور استاندارد باید ایمیل سایت خود را در این قسمت تعریف کنید که این کار ممکن است موجب هجوم اسپمرها به آدرس پست الکترونیک شما شود.
قسمت پایانی کد chmod ،fopen ،fwrite و fclose برای نوشتن اطلاعات در فایل rss.xml است.
برای به روز رسانی مرتب فید آر اس اس بهتر است آن را در قسمت ارسال مطالب ایمپورت کنید تا با هر بار انتشار و ارسال پست های جدیدتر، اطلاعات جدید جایگزین موارد قبلی شود.
نظر / سوال