دسترسی به موقعیت و Path فایل در PHP
۱۱ شهریور ۱۳۸۹ ساعت ۱۰:۳۳
پی اچ پی
نحوه پیدا کردن Path و Url اسکریپت
برای ساختن کدهای انعطاف پذیر، باید مسیر فایلها رو داینامیک تعیین کنیم که همه جا کار کنه.
چند خط کد زیر اطلاعات خوبی از موقعیت فایل رو میدهند ولی تضمینی بر اینکه همه جا کار کنند نیست! در حالت کلی تقریبا همه جا صحیح کار می کنه.
$baseurl = 'http'.(isset($_SERVER['HTTPS'])?'s':'').'://'
.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).'/';
$basepath = str_replace('\\','/',dirname(__FILE__)).'/';
define('BASE_RELATIVE_URL',dirname($_SERVER['SCRIPT_NAME']).'/');
define('BASE_URL', $baseurl);
define('BASE_PATH', $basepath);
echo 'Base Relative Url: ' . BASE_RELATIVE_URL;
echo 'Base Url: ' . BASE_URL;
echo 'Base Path: ' . BASE_PATH;
برای نمونه، این کد رو در فایلی در Localhost با آدرس زیر قرار میدیم:
F:/Wamp/www/parent/child/test.php
همونجور که واضحه، URL این فایل به این شکل خواهد بود:
http://localhost/parent/child/test.php
در این حالت، خروجی کد بالا به این شکل خواهد بود:
/* Base Relative Url: /parent/child/ Base Url: http://localhost/parent/child/ Base Path: F:/Wamp/www/parent/child/ */
پینوشت: ممنون از سپهر عزیز که پیشنهاد اضافه کردن ['SERVER['HTTPS_$ رو دادند. باید دقت کرد ['SERVER['HTTPS_$ مقداری قطعی نیست و در برخی سرورها، با وجود استفاده از SSL این مقدار وجود ندارد. از کد زیر نیز میتوان استفاده کرد که مطمئنتر است ولی همچنان قطعی نیست:
$server_https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'; $server_port = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != 80; $scheme = ($server_https || $server_port) ? 'https' : 'http';


Google Chrome
تو چی فکر می کنی؟