IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

$_SERVER['HTTP_HOST'] ou bien $_SERVER['SERVER_NAME'] ?


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut $_SERVER['HTTP_HOST'] ou bien $_SERVER['SERVER_NAME'] ?
    Bonjour,

    Je n'ai pas bien compris la différence entre ces 2 variables. L'une est "nom local du serveur" et l'autre "nom de domaine du serveur"
    Mais ça ne me parle pas en grand débutant que je suis.

    Suite à des pb d'URL sur mon site, je suis en train de remplacer les chemins relatifs par des URL dut type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://<?php echo $_SERVER['HTTP_HOST'] ?>/index.php"
    Mais j'ai découvert l'existence de $_SERVER['SERVER_NAME'].
    Sur mes premiers tests, cela semble revenir au même. Mais je ne suis pas sûr d'avoir testé dans toutes les configurations.

    Mon domaine est du type monsite.fr qui est référencé comme "www.monsite.fr" mais fonctionne aussi avec "monsite.fr".

    Pouvez-vous me conseiller ?

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    SERVER_NAME est mieux.

    Mais un ptit conseil, au lieu de le changer dans tous les liens, utilise plutôt une fonction pour créer ton lien.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Merci de l'info.
    Pour ton conseil, je ne sais pas si je vais savoir faire, et surtout, est-ce que ça va me faire gagner en lisibilité ?

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Non seulement tu vas gagner en lisibilité (y aura pas des $_SERVER['SERVER_NAME'] partout dans ton code) mais tu gagneras aussi grandement en maintenance : demain tu te dis "nan mais en fait 'HTTP_OST' c'est mieux" (pour X raisons), tu n'auras qu'un seul endroit à le changer dans ton code.

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Oui, mais au lieu d'avoir des $_SERVER['SERVER_NAME' partout, j'aurais des Get_link() partout (si ma fonction s'appelle Get_link)

    Au lieu d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://<?php echo $_SERVER['HTTP_HOST'] ?>/index.php"
    j'aurais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://<?php get_link() ?>/index.php"
    Je me trompe ?

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Encore mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function getLink($page) {
        return "http://".$_SERVER['SERVER_NAME']."/".$page.".php";
    }
    <a href="<?= geLink('index') ?>" />

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Ah oui, comme ça c'est tentant, en effet !

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Ah, j'ai un petit soucis à appliquer ton code.
    Je l'ai adapté comme ceci :

    En tête de header.php, avant le <!DOCTYPE html>, j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    function set_link($page) {
        return "http://".$_SERVER['SERVER_NAME']."/".$page;
    }
    ?>
    et dans le <head>, j'ai écrit (pour le lien de mon menu par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php set_link('index.php') ?>"
    Il semble que, dans ce contexte, $_SERVER['SERVER_NAME'] renvoie, non pas la racine de mon site mais le path complet (jusqu'au index.php exclu).
    Par exemple, si je suis sur la page www.monsite.fr/fr/test.php, le code ci-dessous renvoie : www.monsite.fr/fr/index.php et non www.monsite.fr/index.php

    As-tu une explication ?

    NOTA : j'ai essayé avec HTTP_HOST mais c'est pareil

  9. #9
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Non, normalement le SERVER_NAME est le même, peut importe l'endroit où tu te situe sur le site.

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Résolu !
    J'avais corrigé ton code pensant qu'il y avait une erreur dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?= geLink('index') ?>" />
    Je pensais que tu voulais dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php geLink('index') ?>" />
    Mais la syntaxe était bonne. Je ne la connaissais pas. C'est te dire si je suis débutant !

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Hum... ceci dit, je te conseillerais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo geLink('index') ?>" />
    car la notation proposée dépend de la directive short_open_tag du php.ini et elle n'est donc pas toujours activée...

    Sinon, tu mets vraiment des balises <a> dans le head ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    car la notation proposée dépend de la directive short_open_tag du php.ini et elle n'est donc pas toujours activée...
    Faux (ou presque), il suffit de s'assurer d'avoir php 5.4 minimum (qui devient quand même de plus en plus un standard aujourd'hui) car à partir de cette version le tag <?= est toujours disponible, peut importe la configuration de short_open_tag (c'est d'ailleurs pour cela que je n'hésite plus à l'utiliser dès que je le peux dans mes nouveaux développements).

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ah ben ça alors...
    Merci pour cette précision, je le savais pas.

    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. $_SERVER['HTTP_HOST'] retourne 127.0.0.1
    Par STunisino dans le forum Langage
    Réponses: 5
    Dernier message: 03/11/2012, 10h54
  2. probleme avec $_SERVER['SERVER_NAME']
    Par sebnutt dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/09/2012, 23h46
  3. Réponses: 4
    Dernier message: 27/10/2006, 14h19
  4. [Sécurité] Obtenir l'url courrante avec $_SERVER
    Par tsing dans le forum Langage
    Réponses: 5
    Dernier message: 18/11/2005, 11h04
  5. [Sécurité] $_SERVER['HTTP_REFERER'] / Norton Internet Security
    Par nicolas.charlot dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo