Получить текущий домен
у меня есть мой сайт на сервер
http://www.myserver.uk.com
для этого у меня есть два домена:
http://one.com
и
http://two.com
Я хотел бы получить с PHP текущий домен, но если я использую этот
myserver.uk.com
вместо:
one.com or two.com
как я могу получить домен, а не имя сервера? У меня есть PHP версии 5.2
8 ответов:
должна быть
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.)
Comments