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 :

Masquer certaines parties d'URI


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut Masquer certaines parties d'URI
    Bonjour,
    Je développe une application dynamique. J'ai consulté un certain nombre de sites sur le masquage d'URL/URI mais je n'ai trouvé que des articles anciens ou non applicables à mon besoin.
    J'ai une URI du type http://domaine.eu/index.php?page=mapage&tab=1&id=2. Je voudrais n'afficher dans la barre d'adresse du navigateur que la partie http://domaine.eu/index.php, c'est à dire uniquement les parties scheme et authority (article Ionos). La partie path étant en option.

    Question préalable: Est-ce la bonne méthode? Quelle serait les alternatives?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 102
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 102
    Points : 8 212
    Points
    8 212
    Billets dans le blog
    17
    Par défaut
    Je développe une application dynamique. J'ai consulté un certain nombre de sites sur le masquage d'URL/URI
    Pourquoi ? Avoir des paramètres en URL fait partie intégrante du web.

    J'ai une URI du type http://domaine.eu/index.php?page=mapage&tab=1&id=2. Je voudrais n'afficher dans la barre d'adresse du navigateur que la partie http://domaine.eu/index.php
    Sans les paramètres GET "page", "tab" et "id", sauras-tu encore afficher la bonne page ?
    Généralement pour avoir une URL plus "sexy" on reformule en "http://domaine.eu/mapage/1/2" ou "http://domaine.eu/page/mapage/tab/1/id/2"
    Ceci est parti intégrante de frameworks comme Laravel ou Symfony
    Il existe également des librairies qui gèrent cela, comme FastRoute => https://github.com/nikic/FastRoute
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Bonjour


    Et si je vais sur http://domaine.eu/index.php?page=mapage&tab=1&id=2 et que je mets un favori sur cette URL.

    Si derrière, avec une solution magique, tu aurais réécris en http://domaine.eu/index.php que vais-je recevoir ? Ben ... pas du tout la même chose en fait.

    Tu me fais penser à moi il y a trente ans; hop hop, j'allais réinventer le monde... Depuis, la sagesse aidant, je sais que si tout le monde fait comme "ceci" alors ils ont très certainement d'excellentes raisons de le faire comme ça. Réinventer, c'est cool pour apprendre mais au bout du chemin, ah oui en fait, je comprends; ils avaient bien raison.

    Maintenant, si tu ne veux pas les paramètres en URL; une seule solution : oublier le GET et faire un POST et tu passes page et tab sous forme de données dans la requête POST.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 102
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 102
    Points : 8 212
    Points
    8 212
    Billets dans le blog
    17
    Par défaut
    Par contre une page en POST ne peut pas être mise en favori
    Un "Page précédente" donne des messages désagréables
    Et sémantiquement parlant, POST doit (ou devrait ) servir à créer une nouvelle ressource quand GET permet d'y accéder
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Par contre une page en POST ne peut pas être mise en favori
    Correct. Mon exemple de favori voulait illustrer le GET sans les paramètres mais, yep, ma réponse pouvait laisser croire que ...

    Citation Envoyé par Séb. Voir le message
    Et sémantiquement parlant, POST doit (ou devrait ) servir à créer une nouvelle ressource quand GET permet d'y accéder
    Tu fais référence au verbe POST comme on le retrouve dans les API REST.

    Dans un formulaire (tel qu'un moteur de recherche), l'action associée au bouton Submit est bien souvent un POST; à raison; il s'agit de poster un formulaire; pas de créer une ressource.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

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

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 579
    Points : 804
    Points
    804
    Par défaut
    Mon but était d'éviter la modification des paramètres d'URI par des utilisateurs mal intentionnés. Mais ce n'est peut-être pas une bonne idée.

    Citation Envoyé par Séb. Voir le message
    Généralement pour avoir une URL plus "sexy" on reformule en "http://domaine.eu/mapage/1/2" ou "http://domaine.eu/page/mapage/tab/1/id/2"
    Dans ce cas, comment fais-tu pour récupérer de façon simple les infos sans recourir à une librairie?

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 991
    Points
    2 991
    Par défaut
    Citation Envoyé par moimp Voir le message
    Mon but était d'éviter la modification des paramètres d'URI par des utilisateurs mal intentionnés. Mais ce n'est peut-être pas une bonne idée.
    Pourquoi serait-ce "mal intentionné" ? Chaque paramètre ayant été controllé dans ton code php, si je m'amuse à mettre &tab=portnawak; comme derrière tu as écris une règle qui valide que tab existe et est, dans ton cas, un chiffre; tout va bien.

    Je vis en Belgique, parfois quand je vais sur certains sites, hop, je suis immédiatement dirigé vers une page &lang=nl-BE (Néerlandais de Belgique); hop, je modifie en fr-BE et je suis légitime à faire ça.

    Si un paramètre est affiché en URL ==> tu dois le checker dans ton code PHP et, en fait, même s'il n'est pas en URL. Tout paramètre échangé entre ton "consommateur" et ton serveur doit être validé.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  8. #8
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tous les serveurs web (Apache, Nginx, IIS...) proposent la réécriture d'URLs, pour cela il faut placer une règle de réécriture dans le fichier adéquate.
    Le but de la manœuvre est de virer tous les paramètres GET de l'URL pour la simplifier. Par exemple pour passer de https://monsite.loc/index.php?article=truc&page=2 à https://monsite.loc/truc-2.html.

    Tape "réécriture d'URL" (URL rewriting) avec le nom de ton serveur web (Apache) dans ton moteur de recherche préféré (duckduckgo) et tu trouveras une foultitude de tutoriels sur le sujet.
    La réécriture d'URL n'est pas spécialement compliquée, mais peut sembler pas évidente, déroutante au départ, donc mon conseil: commence tes essais par les tutoriels les plus simples pour ensuite aller progressivement jusqu'à la documentation officielle de ton serveur.

    NB: chez certains hébergeurs, il faut faire une demande pour activer mod_rewrite (le module de réécriture d'Apache), je me souviens que c'était le cas chez ovh il y a quelques années.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. [XL-2003] Masquer ou figer certaines parties de l'écran
    Par Alexandra 01 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 03/08/2010, 10h03
  2. Astuce pour afficher/masquer certaines partie facilement
    Par casier dans le forum Mise en forme
    Réponses: 2
    Dernier message: 21/08/2009, 14h09
  3. Masquer certaines lignes sur un etat
    Par badara2 dans le forum Access
    Réponses: 3
    Dernier message: 15/10/2005, 19h24
  4. Masquer une partie du formulaire
    Par Neuromancien2 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/01/2005, 14h23
  5. Réponses: 2
    Dernier message: 09/10/2004, 20h45

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