3 berichten aan het bekijken - 1 tot 3 (van in totaal 3)
  • Q:

    Bijdrager
    Martens

    PHP include

    Ik heb een vraagje over het PHP include commando. Je kan geen GET parameters aan een include meegeven op de normale manier:

    [code:1:06f814ccd8]
    <? include "test.php?parameter=value"; ?>
    [/code:1:06f814ccd8]

    Bovenstaand commando levert alleen maar een error op, het bestand “test.php?parameter=value” bestaat namelijk niet.

    [code:1:06f814ccd8]
    <? include "http://www.mirg.nl/test.php?parameter=value"; ?>
    [/code:1:06f814ccd8]

    Dit commando werkt wel, en test.php ontvangt ook netjes de GET parameter.

    Wat ik me alleen afvraag is dit: Weet PHP dat dit bestand op dezelfde server staat als waar hij al op zit of gaat hij moeilijk via internet naar z’n eigen bestand toe? Met andere woorden: Is het trager om het via methode 2 te doen? ;]


    Bijdrager
    fab
    ”Mirg”

    Dit commando werkt wel, en test.php ontvangt ook netjes de GET parameter.

    Wat ik me alleen afvraag is dit: Weet PHP dat dit bestand op dezelfde server staat als waar hij al op zit of gaat hij moeilijk via internet naar z’n eigen bestand toe? Met andere woorden: Is het trager om het via methode 2 te doen? ;]

    Je aanpak is nogal afwijkend van de functie van include().
    Het includen van files is primair bedoeld voor ‘lokale’ files, binnen het filesystem van de server. Hoewel PHP de mogelijkheid biedt ook files via HTTP te includen, is dit om meerdere redenen af te raden.

    Allereerst natuurlijk vanwege de vertraging die ontstaat door het verbinden met die server (PHP maakt nl. geen verschil tussen de lokale of externe server, je vraagt immers om een HTTP resource).

    Daarnaast kan een dergelijke aanpak een veiligheidslek in de hand werken. Stel dat je een parameter dynamisch laat toevoegen aan de include URL, dan zou het wel eens kunnen dat er misbruik gemaakt zou kunnen worden. In het ergste geval kan iemand dan zijn eigen file includen, met alle gevolgen van dien. Het gebruik van HTTP includes is al met al af te raden, en er zijn maar een handvol situaties waar dit gebruik aan de orde is.

    Als je een waarde wil doorgeven aan een include, dan kan dat met een gewone variabele, aangezien een include in de ‘variable scope’ van het script zelf wordt opgenomen.

    [code:1:fa246809e1]
    // code voor het ‘hoofd script’

    <?php

    $parameter = ‘value’;
    include(’test.php’);

    ?>

    // code voor test.php:

    <?php

    echo $parameter;

    ?>

    [/code:1:fa246809e1]

    dit geeft gewoon ‘value’ weer, alsof je de code binnen je bestaande script had gezet.

    Succes!


    Bijdrager
    Martens

    Thanks voor de uitleg, het is helemaal duidelijk nu ;]

    Ik weet hoe include hoort te werken trouwens, ik vroeg me af of je op die manier ook lokaal parameters mee kon geven of dat het inderdaad over HTTP ging, wat jammer genoeg het geval is ;] Ik hou nogal van kale code met zo weinig mogelijk regels ;]

3 berichten aan het bekijken - 1 tot 3 (van in totaal 3)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.