در برخی پروژههاتان شاید نیاز داشته باشید که به آدرسی که در نوار آدرس دیده میشود دسترسی داشته باشید و طبق آن تصمیمگیری کنید.
نمونه بارز این نوع استفاده، در تبدیل آدرسهای شامل علامت سؤال (؟) به آدرسهایی با کلمات کلیدی (یا در اصلاح آدرسهای Friendly) است.
مثلاً این آدرس را:
http://hamid.aftab.cc/?p=2
به این آدرس تبدیل میکنیم:
http://hamid.aftab.cc/about
در حقیقت وقتی کاربر سایت را با این آدرس:
http://hamid.aftab.cc/about
فراخوانی کرد، انتهای آدرس را اسکن میکنیم و اگر about دیدیم، همان چیزی را نشانش میدهیم که در حالت p=2 باید نشان میدادیم.
اما چگونه آدرس را اسکن کنیم و با آن کار کنیم؟
دستورات مختلفی برای به دست آوردن اجزای آدرس وجود دارد که سه مورد از مهمترینهای آنها را بیان میکنیم:
$_SERVER['HTTP_HOST']
این دستور دامنه سایت را به دست میآورد. یعنی در حقیقت چیزی که بین // و اولین / قرار میگیرد.
به طور مثال اگر کد زیر را:
$url = $_SERVER['HTTP_HOST']
;
echo $url;
در یک فایل ذخیره و فراخوانی کنید، با توجه به آدرس http://aftab.cc/modules.php?name=Tutorials&op=viewtut&id=483 نتیجه زیر را خواهید دید:
aftab.cc
$_SERVER['REQUEST_URI']
این دستور، دامنه سایت را رها کرده و ادامه آدرس را به دست میآورد. یعنی از اولین / تا انتهای آدرس.
به طور مثال اگر کد زیر را:
$url = $_SERVER['
REQUEST_URI
']
;
echo $url;
در یک فایل ذخیره و فراخوانی کنید، با توجه به آدرس http://aftab.cc/modules.php?name=Tutorials&op=viewtut&id=483 نتیجه زیر را خواهید دید:
/modules.php?name=Tutorials&op=viewtut&id=483
$_SERVER['HTTPS']
با استفاده از این دستور، میتوان پروتکل صفحه را متوجه شد. یعنی فهمید که http است یا https
اگر این مقدار برابر با on باشد، یعنی پروتکل https است و اگر خیر، یعنی http است.
نکته پایانی:
قطعه کد زیر ترکیبی از استفاده از این سه نوع دستور را در قالب یک تابع به نمایش میگذراد. سعی کنید آن را تحلیل کنید:
/**
*
* @get the full url of page
*
* @return string
*
*/
function getAddress()
{
/*** check for https ***/
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
/*** return the full address ***/
return $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
/*** example usage ***/
echo getAddress();
?>
موفق باشید؛
حمید رضا نیرومند