Я використовую XAMPP на Windows&Vista. У моїй розробці є http://127.0.0.1/test_website/
.
Як мені отримати http://127.0.0.1/test_website/
за допомогою PHP?
Я пробував щось подібне, але жоден з них не спрацював.
echo dirname(__FILE__)
or
echo basename(__FILE__);
etc.
Спробуй це:
<?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>
Дізнайтеся більше про попередньо визначену змінну $_SERVER
.
Якщо ви плануєте використовувати https, ви можете скористатися цим:
function url(){
return sprintf(
"%s://%s%s",
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
$_SERVER['SERVER_NAME'],
$_SERVER['REQUEST_URI']
);
}
echo url();
#=> http://127.0.0.1/foo
Згідно з цією відповіддю, будь ласка, переконайтеся, що ви правильно налаштували ваш Apache, щоб ви могли безпечно покладатися на SERVER_NAME
.
<VirtualHost *>
ServerName example.com
UseCanonicalName on
</VirtualHost>
ПРИМІТКА: Якщо ви залежите від ключа HTTP_HOST
(який містить введення користувача), вам все одно доведеться зробити деяке очищення, видалити пробіли, коми, повернення каретки, все, що не є допустимим символом для домену. Перевірте, наприклад, вбудовані функції php parse_url.
Функція налаштована на виконання без попереджень:
function url(){
if(isset($_SERVER['HTTPS'])){
$protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
}
else{
$protocol = 'http';
}
return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}
Я думаю, що в суперглобалі $_SERVER
є інформація, яку ви шукаєте. Це може бути щось на кшталт цього:
echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
Ви можете переглянути відповідну документацію з PHP тут.