پنج‌شنبه ۱ آذر ۱۴۰۳ |  عضویت / ورود






[ بخش اصلی آموزشها | افزودن آموزش | داری بیشترین امتیاز | دارای بیشترین بیننده | جدیدترین نظرات ]

نکاتی در مورد کار با URL در پی.اچ.پی (Working with addresses in PHP)


Wednesday, 2010 December 01   نویسنده: Hamid   تعداد بازدید: 49960 بار  #آموزش PHP‏   امتیاز متوسط: امتیازی داده نشده است

در برخی پروژه‌هاتان شاید نیاز داشته باشید که به آدرسی که در نوار آدرس دیده می‌شود دسترسی داشته باشید و طبق آن تصمیم‌گیری کنید.

نمونه بارز این نوع استفاده، در تبدیل آدرس‌های شامل علامت سؤال (؟) به آدرس‌هایی با کلمات کلیدی (یا در اصلاح آدرس‌های Friendly) است.

مثلاً این آدرس را:

http://hamid.aftab.cc/?p=2

به این آدرس تبدیل می‌کنیم:

http://hamid.aftab.cc/about

در حقیقت وقتی کاربر سایت را با این آدرس:

http://hamid.aftab.cc/about

فراخوانی کرد، انتهای آدرس را اسکن می‌کنیم و اگر about دیدیم، همان چیزی را نشانش می‌دهیم که در حالت p=2 باید نشان می‌دادیم.

اما چگونه آدرس را اسکن کنیم و با آن کار کنیم؟

دستورات مختلفی برای به دست آوردن اجزای آدرس وجود دارد که سه مورد از مهم‌ترین‌های آن‌ها را بیان می‌کنیم:

1-

$_SERVER['HTTP_HOST']

این دستور دامنه سایت را به دست می‌آورد. یعنی در حقیقت چیزی که بین // و اولین / قرار می‌گیرد.

به طور مثال اگر کد زیر را:

$url = $_SERVER['HTTP_HOST'];

echo $url;

در یک فایل ذخیره و فراخوانی کنید، با توجه به آدرس http://aftab.cc/modules.php?name=Tutorials&op=viewtut&id=483 نتیجه زیر را خواهید دید:

aftab.cc

2-

$_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

3-

$_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();

?>

موفق باشید؛
حمید رضا نیرومند


.



ارسال سؤال یا نظر


1- سید امین:
بوسیله: , در: Wednesday, 2010 December 15-کد: 2553
ممنون به خاطر آموزش ها و نکات کاربردیتون


2- مشکین:
بوسیله: , در: Friday, 2011 December 23-کد: 3755
من سوال داشتم اینجا چجوری این آدرس

http://hamid.aftab.cc/?p=2
و به

http://hamid.aftab.cc/about
تبدیل میکنه، در حقیقت about کجا تعریف میشه؟

تا جایی که میدونم این کار و با فایل .htaccess هم میشه انجام داد ممنون میشم در اون مورد هم آمورش بزارید.

سوال دیگه هم داشتم که چجوری میتونم کد صفحه و غیر قابل دیدن کنم؟ مثلا بعضی پیج ها هستند که نه میشه کد های صفحه و دید و نه میشه کلا ذخیرشون کرد، ممنون میشم در این مورد هم توضیحی بدید.مرسی


3- محمد:
بوسیله: , در: Friday, 2015 October 16-کد: 13906
با سلام
من قالبی طراحی کردم و در وردپرس فراخوانیش کردم ولی به دلایلی در فانکشن وردپرس از دستورات پی اچ پی استفاده کردم تا دسترسی اسان تری در فراخوانی عکس ها و متن ها داشته باشم و در مورد متن موفق بودم اما در مورد عکس ها
ادرس رو کامل نمی یاره و عکس ها فراخوانی نمیشه
نمونه ای از کدی که گذاشتم رو براتون می فرستم
array( "name" => "مجموعه ",
"type" => "section"),
array( "name" => "متن خدمات",
"desc" => "",
"id" => "hirad_text",
"type" => "textarea",
"std" => ""),
array( "name" => "متن درباره ما",
"desc" => "",
"id" => "hirad1_text",
"type" => "textarea",
"std" => ""),

array( "name" => "متن تماس ما",
"desc" => "",
"id" => "hirad-call_text",
"type" => "textarea",
"std" => ""),

array( "name" => "گالری کوچک۱",
"desc" => "عکس مورد نظر را آپلود نمایید",
"id" => $shortname."home",
"type" => "text",
"std" => get_bloginfo('url') ."http://localhost/wordpress/wp-content/themes/css/images/.jpg"),
array( "type" => "close"),
و این همه قطعه کد فراخوانی برای عکس:



Tutorials ©