PHP ja relatiiviset linkit

Reisilä

ajattelin vääntää PHP:n Include toiminnolla navigaatiobannerin sivuille. Eli teen yhden html-tiedoston jossa linkit näkyy, ja upotan sen includella sitten tarvittaville sivuille.

Linkkien kanssa onkin sitten ongelma koska sivuja on eri hakemistoissa. Jos linkki toimii tällä sivulla, ei se toimi enää alahakemiston sivulla.

Miten tämä pitäisi taklata?

6

1517

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • teuro

      Mulla on samanlainen systeemi, mutta mulla on linki.php tiedosto. Tämä tiedosto on seuraavannäköinen:

      echo"nimi

      Tätä tiedostoa kutsutaan ylaosa.php tiedostosta, joka lisätään varsinaiselle sivulle, jossa on määriteltynä tuo maaginen $polku-muuttuja esim.

      $polku = "../";

      Nyt linkit.php osaa muuntaa linkin oikein.

      • J3j

        Tuohan toimii vain yhden hakemiston taaksepäin ../ jos tuota klikkaa etusivulla niin ei toimikkaan (mikäli osoite on muotoa, isp.fi/sivuja/tunnuksesi).

        Joten ennemmin linkit ihan näin

        / = etusivu
        /linkit
        /keskustelu
        jne...

        Ja määrittelee http://www.w3schools.com/TAGS/tag_base.asp sivusi osoitteen.


      • teuro
        J3j kirjoitti:

        Tuohan toimii vain yhden hakemiston taaksepäin ../ jos tuota klikkaa etusivulla niin ei toimikkaan (mikäli osoite on muotoa, isp.fi/sivuja/tunnuksesi).

        Joten ennemmin linkit ihan näin

        / = etusivu
        /linkit
        /keskustelu
        jne...

        Ja määrittelee http://www.w3schools.com/TAGS/tag_base.asp sivusi osoitteen.

        Tuohon $polku muuttujaan voi siis laittaa ihan niin paljon noin ../ kuin vain on tarvetta. Itselläni toiminut varsin mallikkaasti.


      • J3j
        teuro kirjoitti:

        Tuohon $polku muuttujaan voi siis laittaa ihan niin paljon noin ../ kuin vain on tarvetta. Itselläni toiminut varsin mallikkaasti.

        En ymmärtänyt väärin, toki noita ../ voi lisätä vaikka kuinka paljon, mutta ei se ratkaise ongelmaa.

        Jos olet http://isp.fi/teuro/
        ../ = http://isp.fi/
        ../../ = http://isp.fi/

        ../uutiset = http://isp.fi/uutiset
        ../../uutiset = http://isp.fi/uutiset


        Jos oletkin http://isp.fi/teuro/linkit
        ../ = http://isp.fi/teuro/
        ../../ = http://isp.fi/

        ../uutiset = http://isp.fi/teuro/uutiset
        ../../uutiset = http://isp.fi/uutiset


        Jos olet http://isp.fi/teuro/linkit/blogit
        ../ = http://isp.fi/teuro/linkit/
        ../../ = http://isp.fi/teuro/

        ../uutiset = http://isp.fi/teuro/linkit/uutiset
        ../../uutiset = http://isp.fi/teuro/uutiset


        Jos taas base url = http://isp.fi/teuro
        jolloin / = http://isp.fi/teuro/
        ja /linkit = http://isp.fi/teuro/linkit
        vaikka olet missä hakemistossa.


        Toki tuo sinun esimerkkisi toimii jos sivusto on tietyllä rakenteella, mutta tällöin on oltava tarkka ettei vahingossa tule että linkki joka osoittaa ihan väärään paikkaan. Mutta ennemmin siinäkin määrittelee $polku = '/teuro'; jolloin tiedetäänkin tarkka sijainti mihin linkki vie, eikä se ole riippuvainen missä ollaan.

        $polku sijasta kannattaa käyttää vakioita http://fi2.php.net/manual/en/function.define.php joka on määritelty asetuksia sisältävässä tiedostossa, eikä jokaisessa sivussa erikseen.

        Ja tuo esimerkkisi antaa parse erroria.


    • tagittaja
    • ne sivut

      sillä includella siihen...
      (tai mielummin require();)

      Jos ei haittaa että ulkomuoto on kaikilla sivuilla sama niin:

      $sivu = isset($_GET['s']) ? $_GET['s'] : '';
      require($sivu);

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      22
      5234
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      25
      4398
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      28
      2541
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2264
    5. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      2008
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      15
      1928
    7. En ole koskaan kokenut

      Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka
      Ikävä
      19
      1617
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      12
      1541
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      21
      1277
    10. Kerranki asiat oikein

      Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa
      Haapavesi
      10
      1194
    Aihe