Получить текущий домен



у меня есть мой сайт на сервер



http://www.myserver.uk.com


для этого у меня есть два домена:



http://one.com


и



http://two.com


Я хотел бы получить с PHP текущий домен, но если я использую этот



myserver.uk.com


вместо:



one.com or two.com


как я могу получить домен, а не имя сервера? У меня есть PHP версии 5.2

916   8  

8 ответов:

попробуйте использовать этот: $_SERVER['SERVER_NAME']

или Parse

$_SERVER['REQUEST_URI']

EDIT:

apache_request_headers ()

должна быть

echo $_SERVER['HTTP_HOST'];

и может использоваться так

if(strpos( $_SERVER['HTTP_HOST'], 'banana.com') !== false){
    echo "Yes this is indeed the banana.com domain";
}

этот код ниже-хороший способ увидеть все переменные в $_SERVER в структурированном HTML-выводе с выделенными ключевыми словами, который останавливается непосредственно после выполнения. Поскольку я иногда забываю, какой из них использовать сам - я думаю, что это может быть изящным.

<?php 
// change banana.com to the domain you were looking for.. 
$wordToHighlight= "banana.com";
$serverVarHighlighted = str_replace( $wordToHighlight, '<span style=\'background-color:#883399; color: #FFFFFF;\'>'. $wordToHighlight .'</span>',  $_SERVER );
echo "<pre>";
print_r( $serverVarHighlighted );
echo "</pre>";
exit();
?>

используя $_SERVER['HTTP_HOST'] получает меня (поддомена.)maindomain.расширение. Кажется, самое простое решение для меня.

Edit: если вы действительно "перенаправляете" через iFrame, вы можете добавить параметр get, который указывает домен.

<iframe src="myserver.uk.com?domain=one.com"/>

и затем вы можете установить переменную сеанса, которая сохраняет эти данные во всем вашем приложении.

попробовать $_SERVER['SERVER_NAME']. Советы: создайте PHP-файл, который вызывает функцию phpinfo() и смотрите раздел "переменные PHP". Есть куча полезных переменных, о которых мы никогда не думали.

поздний ответ, но вот он идет:

$currentDomain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME']);

это даст вам чистое доменное имя, без www

Я знаю, что это может быть не совсем по теме, но по моему опыту, я нахожу хранение WWW-ness текущего URL-адреса в переменной полезным.

Edit: кроме того, пожалуйста, см. Мой комментарий ниже, чтобы увидеть, к чему это приводит.

это важно при определении того, следует ли отправлять вызовы Ajax с помощью " www " или без:

$.ajax("url" : "www.site.com/script.php", ...

$.ajax("url" : "site.com/script.php", ...

при отправке вызова Ajax имя домена должно совпадать с именем в адресной строке браузера, в противном случае вы придется Uncaught SecurityError в консоли.

поэтому я придумал это решение для решения проблемы:

<?php
    substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false;

    if ($WWW) {
        /* We have www.example.com */
    } else {
        /* We have example.com */
    }
?>

затем, основываясь на том, является ли $WWW true или false, выполните правильный вызов Ajax.

Я знаю, что это может показаться тривиальным, но это такая распространенная проблема, что легко споткнуться.

Я не знаю, как этот ответ получил сотни тысяч просмотров без единого упоминания о проблемах безопасности на руку.

неправильно:

$_SERVER['HTTP_HOST'] получает домен из заголовков запроса, которая составляет открыты для манипуляций хакеров.

$_SERVER['SERVER_NAME'] немного лучше, но в зависимости от конфигурации вашего сервера, это может быть небезопасно.

правильный образом:

самый безопасный способ-это сохранить домен в базе данных или конфигурационном файле. Многие фреймворки уже заботятся об этом для вас, поэтому обратитесь к документации для вашего конкретного фреймворка.

для пользователей WordPress:

Если вы используете WordPress, вы можете безопасно получить домен вот так:

$urlparts = parse_url(home_url());
$domain = $urlparts['host'];

(но если вы создаете URL в WordPress, просто используйте home_url или site_url.)

просто:

echo apache_request_headers()[3];

Comments

    Ничего не найдено.