Obter o domínio actual
http://www.myserver.uk.com
Para isso, tenho dois domínios:
http://one.com
e
http://two.com
Eu gostaria de obter com o domínio atual do PHP, mas se eu usar $_SERVER['HTTP_HOST']
então isso me mostra
myserver.uk.com
em vez de:
one.com or two.com
Como posso obter domínio, não o nome do servidor? Eu tenho PHP versão 5.2
8 answers
Tenta usar isto.: $_SERVER['SERVER_NAME']
Ou parse
$_SERVER['REQUEST_URI']
Editar:
A melhor utilização seria
echo $_SERVER['HTTP_HOST'];
E pode ser usado assim
if(strpos( $_SERVER['HTTP_HOST'], 'banana.com') !== false){
echo "Yes this is indeed the banana.com domain";
}
Este código abaixo é uma boa maneira de ver todas as variáveis em $_SERVER numa saída HTML estruturada com as suas palavras-chave realçadas, que pára imediatamente após a execução. Uma vez que às vezes me esqueço de qual me usar - acho que isto pode ser bom.
<?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();
?>
Usar $_SERVER['HTTP_HOST']
dá-me um subdomínio.) maindomain.extensao. Parece-me a solução mais fácil.
Editar: se você está realmente 'redirecionando' através de um iFrame você poderia adicionar um parâmetro get que afirma o domínio.
<iframe src="myserver.uk.com?domain=one.com"/>
E depois pode definir uma variável de sessão que persiste estes dados ao longo da sua aplicação.
Tenta {[[0]}.
Dicas: crie um arquivo de PHP que chama a função phpinfo()
e veja a seção "Variáveis de PHP". Há um monte de variáveis úteis que nunca pensámos lá.
$currentDomain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME']);
Dar-lhe-á um nome de domínio LiMPO, SEM www
Eu sei que isto pode não ser inteiramente sobre o assunto, mas na minha experiência, eu acho útil armazenar WWW-ness da URL atual em uma variável.
Edit: além disso, por favor veja o meu comentário abaixo, para ver onde isto está a chegar.
Isto é importante para determinar se enviar chamadas Ajax com "www", ou sem:
$.ajax("url" : "www.site.com/script.php", ...
$.ajax("url" : "site.com/script.php", ...
Ao enviar uma chamada Ajax o nome de domínio deve corresponder ao da barra de endereços do navegador, caso contrário você terá SecurityError na consola.
Então, arranjei esta solução para resolver o problema:<?php
substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false;
if ($WWW) {
/* We have www.example.com */
} else {
/* We have example.com */
}
?>
Então, baseado em se $WWW é verdadeiro, ou falso executar a chamada Ajax adequada.
Eu sei que isto pode parecer trivial, mas este é um problema comum que é fácil de tropeçar.Domínio na sua base de dados ou ficheiro de configuração. Muitos frameworks já cuidam disso para você, então consulte a documentação para o seu framework particular.
Para usuários do WordPress:
Se o seu uso do WordPress, você pode obter o domínio de forma segura assim:
$urlparts = parse_url(home_url());
$domain = $urlparts['host'];
(mas se estiver a construir um URL no WordPress, basta usar home_url ou site_url .)
Tenta simplesmente:
echo apache_request_headers()[3];