211 votes

Obtenir le domaine actuel

J'ai mon site sur le serveur http://www.myserver.uk.com .

Sur ce serveur, j'ai deux domaines :

one.com and two.com

J'aimerais obtenir le domaine actuel en utilisant PHP, mais si j'utilise $_SERVER['HTTP_HOST'] puis il m'affiche

myserver.uk.com

au lieu de :

one.com or two.com

Comment puis-je obtenir le domaine et non le nom du serveur ?

0 votes

Vous ne pouvez obtenir que l'URL primaire. Lequel de ces trois est le principal ?

2 votes

Comment vos deux domaines redirigent-ils les requêtes vers votre serveur ?

1 votes

@infgeoax probablement un cadre...

228voto

onehalf Points 576

Essayez d'utiliser ceci :

$_SERVER['SERVER_NAME']

Ou analyser :

$_SERVER['REQUEST_URI']

Référence : apache_request_headers()

39 votes

-1 : Avec cette seule réponse, je ne sais pas exactement ce que font les différentes suggestions que j'examine. Bien sûr, cela me donne un point de départ pour continuer à chercher, mais en soi, ce n'est vraiment pas une bonne réponse...

8 votes

Il suffit d'imprimer_r(apache_request_headers()) et vous comprendrez tout :)

4 votes

@SarahLewis HTTP_X_ORIGINAL_HOST peut être modifié par l'utilisateur et n'est pas fiable. Ce n'est pas toujours un problème, mais il faut en être conscient.

93voto

Kilian Lindberg Points 489

La meilleure utilisation serait

echo $_SERVER['HTTP_HOST'];

Et il peut être utilisé comme suit :

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

Le code ci-dessous est un bon moyen de voir toutes les variables de $_SERVER dans une sortie HTML structurée avec vos mots-clés en surbrillance qui s'arrête directement après l'exécution. Comme il m'arrive parfois d'oublier lequel utiliser moi-même, je pense que cela peut être intéressant.

<?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();
?>

41voto

Raz0rwire Points 181

L'utilisation $_SERVER['HTTP_HOST'] me donne (subdomain.)maindomain.extension. Cela me semble être la solution la plus simple.

Si vous redirigez par l'intermédiaire d'une iFrame, vous pouvez ajouter un champ GET qui définit le domaine.

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

Vous pouvez ensuite définir une variable de session qui conserve ces données tout au long de votre application.

2 votes

Le plus important est qu'il inclut le numéro de port de sorte que je n'ai pas besoin de le concaténer par la suite. phpinfo suggéré par bsdnoobz m'aide à trouver la bonne solution cependant.

11voto

bsdnoobz Points 8147

Essayer $_SERVER['SERVER_NAME'] .

Conseils : Créez un fichier PHP qui appelle la fonction phpinfo() et voir la section "Variables PHP". Il y a un tas de variables utiles auxquelles on ne pense jamais.

0 votes

Vous pouvez toujours essayer d'imprimer $_SERVER et de rechercher

10voto

Sarkar Points 43

Pour obtenir le domaine :

$_SERVER['HTTP_HOST'] 

Domaine avec protocole :

$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https';
$domainLink = $protocol . '://' . $_SERVER['HTTP_HOST'];

Total du protocole, du domaine et de la chaîne de requête :

$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . '?' . $_SERVER['QUERY_STRING'];

**Comme $_SERVER['SERVER_NAME'] n'est pas fiable pour l'hébergement multi-domaines !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X