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 :

Composition de lien en php


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut Composition de lien en php
    Bonjour,
    Je suis toujours fâché avec les liens absolus.
    J'ai un formulaire 'footForm.php' dans un répertoire 'root/views'. Dans ce formulaire, j'ai un bouton image dont l'attribut src fait référence à une image 'root/images/glass.png'
    Pour appeler l'image j'utilise une constante define('DIR_ROOT', $_SERVER['DOCUMENT_ROOT'].'/'); comme ceci: <input type="image" src="<?= DIR_ROOT; ?>images/glass.png" alt="Loupe" /> et rien ne s'affiche à l'écran.
    Si j'écris <input type="image" src="../images/glass.png" alt="Loupe" />, mon bouton image s'affiche correctement.

    Je teste avec la ligne <?= DIR_ROOT; ?>images/glass.png qui m'affiche:
    C:/wamp64/www/root/images/glass.png
    qui est bien le chemin désiré.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 646
    Points
    16 646
    Par défaut
    Salut
    src="<?= DIR_ROOT; ?> là j'ai un doute, ne serai-ce pas
    src="<? DIR_ROOT; ?>

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut
    src="<?= DIR_ROOT; ?> là j'ai un doute, ne serai-ce pas
    src="<? DIR_ROOT; ?>
    Voir https://www.php.net/manual/fr/function.echo.php
    echo dispose aussi d'une version courte, où vous pouvez faire suivre la balise PHP ouvrante d'un signe égal (=). Avant PHP 5.4.0, cette syntaxe n'était possible que si la directive de configuration short_open_tag était activée.

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 112
    Points : 16 646
    Points
    16 646
    Par défaut
    Merci pour l'information.

  5. #5
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Bonsoir

    Je ne comprends pas le problème... Idéalement, tout qui est peut être en relatif devrait l'être. Pour l'image, la bonne syntaxe serait le relatif "../images/glass.png".

    Dans ton exemple de lien absolu, tu fais donc référence à ton disque C: et non pas à un lien type http : // ton site/images/glass.png qui serait la bonne syntaxe. Si tu veux absolument de l'absolu (pourquoi?) ce serait un lien URL que tu devrais générer pour ton attribut src="".

    Le relatif rends plus simple la copie du site à un autre endroit, la récupération d'une archive pour la faire tourner en localhost, etc.

    Pour quelle raison donc veux-tu mettre le lien de l'image en absolu ?

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Moi, j'écrirais comme ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="image" src="<?=dirname(getcwd()). DIRECTORY_SEPARATOR."images".DIRECTORY_SEPARATOR."glass.png" ?>" alt="Loupe" />

  7. #7
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Bonjour

    Citation Envoyé par laurentSc Voir le message
    Moi, j'écrirais comme ça :
    Ce qui donnerait p.ex. `C:\Christophe\Sites\images\glass.png`et donc un lien en local (et à la sauce Windows dans mon cas) et non en https:// comme il serait logique d'avoir sur une page web.

    La raison qui vous pousse à vouloir faire cela m'échappe...

    Pourquoi pas juste `../images/glass.png` qui a l'avantage de fonctionner partout et de ne pas être totalement prisonnier de la structure des dossiers parents ?

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Les 2 solutions (la votre et la mienne) fonctionnent. En fait, ce que je propose crée un lien en local, si le code est en local, mais en distant (http://etc) si le code est lui-même distant....

  9. #9
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Salut Laurent


    Citation Envoyé par laurentSc Voir le message
    Les 2 solutions (la votre et la mienne) fonctionnent. En fait, ce que je propose crée un lien en local, si le code est en local, mais en distant (http://etc) si le code est lui-même distant....

    Oui mais ... en distant, le lien serait alors `/var/www/images/glass.png` et je doute qu'un hébergeur sérieux accepte d'afficher, au travers d'une page web, une image référencée de cette manière (càd en utilisant la localisation sur le filesystem). En outre, c'est un souci de sécurité puisque j'expose à un attaquant la structure de mon arborescence. Et, encore, j'ai un souci de portabilité : si je prends une copie de ma page HTML en offline (la mode des aspirateurs de site de l'époque); l'image sera juste brisée.


    Rien de tout ça avec une URL en relatif.

  10. #10
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    On peut commencer le chemin par un / : src="/images/...", src="/root/images/...".

    Citation Envoyé par cavo789 Voir le message
    Pourquoi pas juste `../images/glass.png` qui a l'avantage de fonctionner partout et de ne pas être totalement prisonnier de la structure des dossiers parents ?
    On peut y voir une question de lien logique entre la page et l'adresse cible.

    Pour cette arborescence :
    racine/
    - formulaire/
    - - index.html
    - - images/

    Le dossier "images" est spécifique au formulaire, le ciblage relatif est approprié.
    Si on déplace le dossier "formulaire", les chemins vers les images resteront valables.

    Pour cette arborescence :
    racine/
    - images/
    - formulaire/
    - - index.html

    Le dossier "images" regroupe toutes les images du site, un ciblage relatif à la racine du site peut convenir (le script n'a pas besoin de savoir où il se situe par rapport au dossier "images").
    De même, si on déplace le dossier "formulaire", les chemins vers les images resteront valables.

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Oui mais ... en distant, le lien serait alors `/var/www/images/glass.png`
    En êtes vous sûr ?
    J'ai pas testé mais supposant l'arborescence suivante (sur un serveur distant !)
    projet
        rep
            mon_fichier.php
        images
            glass.png
    
    si mon_fichier.php contient mon code, le lien sera (je pense) /projet/images/glass.png.
    Je suis d'accord que si le projet est à la racine, ça donnerait le lien que vous donnez.

  12. #12
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Citation Envoyé par Loralina Voir le message
    On peut commencer le chemin par un / : src="/images/...", src="/root/images/...".
    Nous sommes parfaitement d'accord : en relatif donc (soit /images/... depuis mon root, soit ../images/... pour remonter dans l'arborescence.

    Rien en absolu (/var/... ou c:\...)

  13. #13
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    En êtes vous sûr ?
    Oui car je l'ai testé sur un de mes sites en production avant de poster

  14. #14
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    En outre, c'est un souci de sécurité puisque j'expose à un attaquant la structure de mon arborescence.
    Merci de tes arguments Cavo.
    J'avoue que jusqu'ici, je codais mes liens comme moimp, pour les raisons que dit Loralina, pour me garder une souplesse si je veux modifier l'arborescence d'un site.
    Et à la réflexion, je me dis que je ne change JAMAIS l'arborescence de mes sites...
    Et
    1) C'est effectivement plus lourd à coder.
    2) C'est inutile pour moi.
    3) Tu m'apprends que c'est moins secure.

    Bref, dorénavant, au prochain projet, je passe aux liens relatifs.

  15. #15
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut
    Je suis un peu noyé par toutes vos réponses (qui se contredisent parfois).
    Lorsque j'ai débuté, je mettais toujours des liens relatifs. J'en suis arrivé à mettre des liens absolus par suite de problèmes rencontrés en production (chez 1&1-Ionos) et de remarques précédentes faites sur ce site.
    En particulier, chez l'hébergeur cité, j'ai eu le problème suivant: le lien '/images' ne renvoyait pas à la racine du site mais en amont sur l'ensemble de mes sites (je ne me souviens plus exactement du cas).
    Dans l’immédiat et en local (pour l'instant), je vais essayer d'avancer avec des liens relatifs (EDIT...), ce qui fonctionne pour l'image mais pas pour l'attribut formaction comme dans l'exemple ci-dessous.
    En ajoutant un attribut formaction comme ceci <input type="image" src="../images/glass.png" alt="Loupe" formaction="../footFormHandle.php" /> (lien relatif) ou comme ceci <input type="image" src="/images/glass.png" alt="Loupe" formaction="/footFormHandle.php" /> lien absolu, le fichier footFormHandle.php n'est pas appelé.
    EDIT: Correction erreur sur lien absolu

  16. #16
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Citation Envoyé par Dendrite Voir le message
    Bref, dorénavant, au prochain projet, je passe aux liens relatifs.
    Le sujet est assez complexe en réalité.
    Le fait est que de nombreux sites connus affichent des adresses absolues dans le code généré.
    Les raisons peuvent être variées (implications plus ou moins subtiles dans le référencement, "vol" de page...).
    Le tout est de gérer cela le plus dynamiquement possible.
    Pour un projet simple, on peut imaginer une petite fonction/méthode statique commune qui transforme une adresse relative (à la page ou à la racine) en une adresse absolue (il suffirait de modifier la fonction pour annuler cette transformation).

    Mais sans doute que dans bien des cas, des adresses relatives feront très bien l'affaire.

    Citation Envoyé par Dendrite Voir le message
    Et à la réflexion, je me dis que je ne change JAMAIS l'arborescence de mes sites...
    En même temps, beaucoup de choix de conception se basent sur des cas de figure hypothétiques qui ne surviennent que rarement.
    Ce n'est pas toujours une perte de temps.

  17. #17
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 642
    Points : 831
    Points
    831
    Par défaut
    Citation Envoyé par moimp Voir le message
    En ajoutant un attribut formaction comme ceci <input type="image" src="../images/glass.png" alt="Loupe" formaction="../footFormHandle.php" /> (lien relatif) ou comme ceci <input type="image" src="/images/glass.png" alt="Loupe" formaction="/footFormHandle.php" /> lien absolu, le fichier footFormHandle.php n'est pas appelé.
    EDIT: Correction erreur sur lien absolu
    Je viens de lire ici que l'attribut formaction ne fonctionne pas avec Internet Explorer, ce qui ne figure ni sur MDN et est contraire à cet article.

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

Discussions similaires

  1. [SQL] probléme avec lien xid.php?donnees=$donnees&reponse=$reponse
    Par mecmec dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 05/06/2007, 19h11
  2. Syntaxe d'un lien en php
    Par boulette85 dans le forum Langage
    Réponses: 6
    Dernier message: 23/02/2007, 22h44
  3. Lien en PHP
    Par simplynamed dans le forum Langage
    Réponses: 9
    Dernier message: 16/02/2007, 21h57
  4. lien tutoriaux php
    Par heero dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2005, 22h59
  5. [PHP-JS] Recuperer nom de lien en PHP
    Par lemagicien dans le forum Langage
    Réponses: 3
    Dernier message: 10/10/2005, 17h03

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