Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP] Fonction qui renvoie l'url

    10 juin 2006 à 18:01:02

    Salut !

    J'ai une petite question ^^ J'ai fais une page menu.php qui, evidement, contient le menu que je vais inclure dans toute mes pages. Le probleme, c'est que quand je l'inclus a un autre niveau de l'arborescence, les url ne sont plus valide (vu que je met des liens du style "href=dossier/page.php") !

    Je voudrais eviter de faire des liens absolus. Est-ce qu'il existe une fonction me renvoyant ma position dans l'arborescence du site ?


    Je sais qu'il existe une fonction renvoyant la position exacte de la page sur le serveur (du style pour la page /dossier/page.php ca renvoie www/var/free.fr/pleins_de_trucs_bizare/dossier/page.php). Mais je pense pas qu'elle soit utile dans ce cas la...

    Je voudrais faire un script qui me renvoie la variable $chemin avec pour valeur, par exemple '../../' ! Une fonction renvoyant le nombre de niveau depuis la racine du site serait parfaite :p Comme ca je pourrais faire :

    <a href="<?php echo $chemin; ?>dossier/page.php">Mon lien</a>


    Quelle fonction pourrais-je utiliser ? Merci a ceux qui pourront m'aider !

    :) @+
    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2006 à 18:02:24

      Tu peut utiliser :
      $_SERVER['REQUEST_URI']

      Pour connaitre l'url courante de ta page.

      Pierre
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2006 à 18:06:41

        C'est parfait, Merci Pierre !!! Maintenant, j'ai plus qu'a ecrire le script :) si je coupe le premier caractere (/) et que je fais une regex pour remplacer tout le reste par .. ca devrait faire l'affaire ;)
        • Partager sur Facebook
        • Partager sur Twitter
          10 juin 2006 à 18:12:55

          il me semble qu'il existe une fonction ... je cherche, je te tiens au courant
          • Partager sur Facebook
          • Partager sur Twitter
            10 juin 2006 à 18:24:24

            Makkhdyn avait fait une fonction qui ressemble à ce que tu cherches : http://www.siteduzero.com/forum-83-17384-283294.html#r283294 :)
            • Partager sur Facebook
            • Partager sur Twitter
              10 juin 2006 à 18:48:49

              Je comprend pas sa fonction :( Enfin la fonction je la comprend partiellement ! Faut mettre quoi pour $source et $dest ?

              En attendant, j'etait en train d'ecrire mon propre script mais je bloque sur la regex :


              <?php

                      $chemin = $_SERVER['REQUEST_URI'];
                     
                      //Traitement de $chemin pour obtenir le niveau (../../etc...)
                      $chemin = preg_replace('!^/!', '', $chemin); //cette regex marche (supprime le premier slash)

                      //ces deux regex ne marchent pas
                      $chemin = preg_replace('!/([a-z0-9A-Z._-])+$!', '/', $chemin); //pour enlever le nom de fichier a la fin

                      $chemin = preg_replace('!(([a-z0-9A-Z._-])+/)!', '../', $chemin); //pour remplacer chaque nom de dossier par ..
                     
              ?>

              Les deux derniere regex ne marchent pas...je sais pas pourquoi :(
              • Partager sur Facebook
              • Partager sur Twitter
                10 juin 2006 à 19:01:38

                La fonction de Makkdyn donne le chemin relatif pour aller du répertoire $source au répertoire $dest :)
                Exemple dans le message de la permière version de la fonction : http://www.siteduzero.com/forum-83-17384-282303.html#r282303

                Et oublie les regex :p
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juin 2006 à 19:42:15

                  Ha ok, j'ai compris :p je vais tester ca de suite.

                  Mais juste un truc, pourquoi je devrais oublier les regex ? ca se resoudrai en 3 lignes alors que la c'est une fonction qui fais pleins de trucs pour avoir le meme resultat...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juin 2006 à 19:47:16

                    Et comment ta regex va-t-elle vérifier si les 2 chemins ont un départ commun ? ou si un chemin contient plus de répertoires que l'autre ? :p^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 juin 2006 à 19:49:45

                      ca marche pas, ou alors je dois me tromper dans la destination...

                      echo relativepath($_SERVER['REQUEST_URI'], '/'); //renvoie ../, alors que la page est a la racine du site


                      pour la regex, honnetement j'y ai pas reflechi. mais bon, si j'arrive a faire marcher cette fonction, le probleme sera clos (meme si j'aimerais trouver la bonne regex)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juin 2006 à 19:55:11

                        Moi je comprend pas comment l'utilisé dans un site la fonction de Makkdyn :s
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juin 2006 à 19:57:10

                          Oui, ca marche pas dans un site, ca ajoute un niveau pour rien !

                          Mais bon c'est pas grave vu que ca y est j'ai trouvé ! C'etait pas bien difficile :


                          <?php
                                  $chemin = $_SERVER['REQUEST_URI'];
                                 
                                  //Traitement de $chemin pour obtenir le niveau (../../etc...)
                                  $chemin = preg_replace('!^/!', '', $chemin); //Pour supprimer le premier slash

                                  $chemin = preg_replace('!([a-z0-9A-Z._=?&-])+$!', '', $chemin); //pour enlever le nom de fichier a la fin

                                  $chemin = preg_replace('!(([a-z0-9A-Z._=?&-])+./)!', '../', $chemin); //pour remplacer chaque nom de dossier par ..
                                 
                          ?>
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 juin 2006 à 20:06:35

                            Et il ne reste plus qu'à en faire une fonction ! ^^
                            Je test ce script de suite !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 juin 2006 à 18:39:21

                              Je me posais une question : A quoi bon renvoyer une url de la sorte plutot que de mettre directement http://www.xxx.fr/xxx/index.htm ??? :euh::euh:
                              Secret (cliquez pour afficher)
                              Pas taper :(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 juin 2006 à 21:58:13

                                bah pour plusieurs raisons

                                • Si tu visite ton site en local avec easyphp ou autre
                                • Si tu change de serveur (je suis chez free alors peut etre un jour ... lol)
                                • apres je sais pas lol mais je suis sur qu'il y en a d'autres !


                                et puis aussi c pour le plaisir de faire un script en php :p
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [PHP] Fonction qui renvoie l'url

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown