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 :

Adressage: lien et URL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Par défaut Adressage: lien et URL
    Bonjour / Bonsoir à tous,


    Je viens vers vous car je cherche à trouver réponse à une question que je me pose depuis déjà un petit bout de temps.


    Notes:
    1: Dans les bouts de code suivants, ce qui est entre crochets est optionnel
    2: J'ai volontairement enlevé des parties des balises pour une lecture plus claire
    3: Par moment je vais donner du pseudo-code pour alléger le texte
    4: Considérons l'architecture suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    / (racine du site)
         index.php
         css_dossier
         necessaire_dossier
         dossierExemple1
              index.php
              images (dossier)
         dossierExemple2
              index.php
              images (dossier)
         .
         .
         .

    Actuellement, mes liens sont de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/?var1=val1[&var2=val2]">
    J'ai un fichier index.php qui est (grossièrement) de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SI  !est_vide_et_correcte($var1)  ALORS
         SI  !est_vide_et_correcte($var2)  ALORS
              include $var1.$var2
         SINON
              include $var1
         FSI
    FSI
    Ce qui fait que les adresses de la barres d'adresses sont de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www.monSite.fr/?var1=val1[&var2=val2]
    Pour être un peu plus explicite, la variable "var1" renseigne un dossier.
    Si la variable "var2" n'est pas définie alors on inclut par défaut le fichier index.php présent dans ce dossier.
    En revanche si "var2" est définie alors on inclut le fichier de nom "var2" du dossier "var1".


    Mon problème est donc le suivant:

    Comment faire pour arrêter de passer dans la barre d'adresse des variables ?

    Sachant que:
    1: Je veux que l'URL dans la barre d'adresse (pour renprendre l'exemple précédent) soit comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www.monSite.fr/val1/[val2.php]
    2: Je suis conscient qu'il me faut modifier mes liens et ca ne me pose aucun problème
    3: Et c'est le plus gros problème: j'ai des fichiers NÉCESSAIRES pour toutes les pages (qui sont donc inclus à tous les chargements de page) présents dans le dossier /necessaire

    Donc, il n'est pas possible de simplement faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/val1/[val2.php]">
    Car j'ai des erreurs PHP !


    J'espère avoir été clair dans mes explications.

    Si vous avez des questions, n'hésitez pas à me les poser!

    J'espère que vous avez compris non seulement ce que je veux mais aussi et surtout ma contrainte (inclure les fichiers présents dans /necessaire)


    Cordialement,

    Graimbault

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Graimbault Voir le message
    Donc, il n'est pas possible de simplement faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/val1/[val2.php]">
    Si.

    Citation Envoyé par Graimbault Voir le message
    Car j'ai des erreurs PHP !
    Il suffit de les corriger (notamment, inclure tout ce dont tu as besoin dans chaque fichier php.)

    Bon, et autre suggestion : tu changes bel et bien tes URL, mais tu utilise le rewrite-URL côté PHP pour que côté serveur ça retransforme vers les URL que tu avais au début. Mais personne ne fait comme ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Par défaut Merci thelvin
    Merci pour ta réponse.

    Il est vrai qu'il semble possible de faire des liens classiques puis d'inclure un fichier à la racine qui lui même inclurait les fichiers nécessaires mais je ne trouve pas cette solution très propre.

    De plus, le temps de chargement devrait logiquement en patir...

    Merci pour ton aide, avant de boucler le sujet, je vais attendre un peu voir si quelqu'un n'aurait pas une solution "miracle" à mon pseudo-problème !


    Graimbault

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il est vrai qu'il semble possible de faire des liens classiques puis d'inclure un fichier à la racine qui lui même inclurait les fichiers nécessaires mais je ne trouve pas cette solution très propre.
    Pas très propre ?
    Pourtant, la plupart des FrameWork par défaut optent pour cette solution.
    D'ailleurs, coté concept il n'y qu'un seul et unique fichier à la racine : index.php (www bien souvent).
    Ce index.php est le FrontController, ensuite vient d'autres aspects qui se charges d'inclure tous les autres fichiers nécessaire afin de fournir le document (le HTML) demandé : bootstrap, dispatcher, routeur, etc ...
    Tous ces autres fichiers sont placés, structurés ailleurs que dans la racine du serveur Web (le www), ceci par mesure de sécurité.

    Une des règles (réécriture) assez courante qui elle est assez souple, c'est de procéder ainsi :
    -http://www.site.com/<controller>/<action>(/<val1>(<val2>))

    Ceci vient du MVC (les FrameWork sont souvent basés sur ce concept), et ça part de la logique suivante :
    Lorsqu'une demande (une URL) parvient au serveur Web (Apache), elle devra contenir au moins
    - le nom du Controller (on peu considérer ça comme le nom de la page Web)
    - puis de l'action à réaliser (encore que, on peu faire en sorte que ça soit optionnel, l'action par défaut serait : index).
    - en option les ou les valeurs du ou des paramètres (identifiant ou autre)


    Après ça, il y a toujours des exceptions à la règle (à la généralité qu'est l'exemple ci-dessus), et ces FrameWork l'intègrent bien souvent (voire tous), et il permettent de définir d'autres règles d'écritures plus ou moins avancées.


    Tout ceci est assez différent de la voie que tu as pris, et ton principe qui serait de passer en paramètre des valeurs correspondant à des endroits où se trouveraient les ou les fichiers à inclure est trop lourd, et casse-gueule à mon sens.
    Il n'y a pas à dire où ces fichiers se trouvent, c'est d'ailleurs l'un des buts recherché quand on fait de la réécriture/un site dynamique, à l'inverse d'un site purement statique.
    C'est par mesure de sécurité (entre autre) : Si l'URL est le reflet de l'arborescence qu'on a sur le disque, et bien quelque part on facilite le boulot d'un hacker.

    Donc essai de voir les chose différemment.
    Pour fournir un document HTML, on a besoin d'un nom (pas 36), et éventuellement d'une action à réaliser.
    Ensuite il suffit de faire un code qui lui va se charger de piocher toutes les données (fichiers, Bdd, etc ...) nécessaires.
    Ce que je veux dire par là, c'est qu'il n'est pas nécessaire de renseigner dans l'URL, val1/val2/val3 qui correspondrait à inclure 3 fichiers.
    Si c'est le cas, il y a un truc qui ne va pas (à mon sens).

  5. #5
    Membre éclairé
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Par défaut Problème solutionné !
    Bonjour et merci à vous deux pour vos réponses.


    J'ai lu, compris et écouté vos conseils pour modifier mon site en fonction.

    Si à l'avenir d'autres membres se posent la question de la mise en place:

    Mes liens (par exemple du menu) sont donc maintenant du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/dossier/de/destination/" title="Destination">Item 1</a>

    Dans le dossier "destination" (la feuille de l'arbre de lien) j'ai un fichier index.php qui inclue un un fichier à la racine de mon site. Donc début de index.php est de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    include_once $_SERVER["DOCUMENT_ROOT"] . 'aInclure.php';
    .
    .
    .

    Et c'est dans ce fichier "aInclure.php" que j'inclus mes fichiers absolument nécessaires dont je parlais dans la description de mon problème (qui font mon "template").


    En tout et pour tout, mon site ayant un nombre de page minimal, la modification (+ débugger les nouvelles erreurs évidemment) a du me prendre 2 heures. Donc c'est pas très long et personnellement je trouve que ça vaut le coup!


    Voilà, du coup j'obtiens ce que je voulais, c'est à dire des adresses qui ne font plus 50Km de long à cause des variables passées par URL.


    J'ai donc ce que je voulais!


    Encore merci à vous pour vos conseils et d'avoir pris le temps de me rédiger un gros ET très intéressant post (RunCodePhp).



    Cordialement,

    Graimbault

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

Discussions similaires

  1. BBcode 1 lien 2 url demande d'aide
    Par toomail dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/11/2010, 16h50
  2. Réponses: 7
    Dernier message: 03/04/2008, 22h31
  3. lien avec url?
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2007, 09h07
  4. Lien vers url sur animation
    Par Pyrhus dans le forum Flash
    Réponses: 3
    Dernier message: 07/07/2007, 06h54
  5. [FLASH MX2004] Problème de lien get url
    Par condorbleu777 dans le forum Dynamique
    Réponses: 5
    Dernier message: 24/04/2006, 20h48

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