در مورد تغيير آدرس واقعي مي توني از MOD Rewrite (.htaccess) در PHP استفاده كني، بعنوان مثال لينك زير رو در نظر بگير:
http://www.gtpland.com/news/385.html
در واقع آدرس دسترسي اصلي بصورت زير مي باشد:
http://www.gtpland.com/news/shownews.php?newsid=385
كه براي انجام اين كار كافيه يه فايل .htaccess در مسيري كه فايل ها وجود داره ايجاد كني و اطلاعات زير رو در اون قرار بدي (البته براي مثال فوق و براي موارد ديگر ممكنه كمي متفاوت باشه)
کد:
RewriteEngine On
RewriteRule ^([0-9]*).html shownews.php?newsid=$1
با اين كار ما تعيين كرده ايم كه اگه در نوار آدرس مرورگر آدرس هاي تعيين شده فوق ذكر گرديد صفحه PHP مورد نظر باز بشه ، حالا براي اينكه اين تغييرات بر روي نمايش صفحات نيز تأثير بگذارد (تغيير لينك ها به فرمت html يا شكل مورد نظر) در فايل PHP (ترجيحاً در فايل header برنامه) مقادر زير رو قرار مي ديم:
PHP:
ob_start();
function change_url(&$data)
{
$iurl = array(
"'shownews.php\?newsid=([0-9]*)'"
);
$ourl = array(
"\\1.html"
);
$data = preg_replace($iurl, $ourl, $data);
return $data;
}
حال بايد در پايان صفحه (ترجيحاً فايل footer برنامه) كدهاي زير رو قرار بديد:
PHP:
$pagecontents = ob_get_contents();
ob_end_clean();
print(change_url($pagecontents));
نكته: در صورتي مجاز به استفاده از MOD Rewrite خواهيد بود كه كامپايلر مجهز به Apache بوده و همچنين اين خاصيت در تنظيمات فعال باشد.
دقت داشته باشيد كه قرارگيري آدرس ها در آرايه ها بايد از بالاترين ليست آرگومان (GLOBAL) ها صورت گيرد بدين صورت كه در صورتي كه يك صفحه توسط يك فايل PHP با تعداد آرگومان هاي متفاوت قابل دسترسي هست ابتدا اوني كه بزرگتر هست رو بنويسيد، بعنوان مثال ما دو لينك زير رو در نظر مي گيريم:
کد:
page.php?do=show&mode=inline
كه در اين حالت ما بايد ابتدا لينك دوم يعني page.php?do=show&mode=inline را در آرايه قرار دهيم در غير اينصورت در نمايش با مشكل مواجه خواهيم شد، البته اين شرايط براي فايل .htaccess وجود نداره و شما مي تونيد به هر ترتيبي كه خودتون تمايل داشته باشيد آدرس ها رو قرار بديد.
اگه خواستي مي توني اين مثال رو هم ببين:
http://forums.gtpland.com/showpost.php?p=35528&postcount=17
------------------------------------------
در مورد سؤال دوم هم فعلاً روشي رو سراغ ندارم ، اما روش كار مي كنم اگه به نتيجه رسيدم حتماً پاسخ رو همين جا مي نويسم.