php-switch, datei mit get-parametern laden, die wiederum get benutzt



  • hey leutz...

    ich habe eine datei, "forums.html", die über "include"
    eine andere datei mit einbindet. nun soll aber bei dieser anderen datei
    eine get-variable verwendet werden.

    ich dachte, man könnte mehrere get-variablen schachteln, so:

    index.php?content=010.php?cat=0
    

    aber es scheint nicht zu gehen, ich bekommen eine warnung:

    Warning: main(html/010.php?cat=0) [function.main]: failed to open stream: Invalid argument in D:\Tools\Xitami\webpages\index.php on line 71

    die betreffende stelle:

    if ( ! isset ( $_GET [ 'content']))
    {

    include ( "html/000.htm");
    return;
    }

    include "html/" . $_GET [ 'content']; //betreffende zeile

    und jetzt blick ich überhaupt nicht mehr durch...



  • Vorab: Du baust dir da gerade eine Sicherheitslücke. Niemals Datein direkt über Parameter includen!

    Bau dir lieber ein Array für die möglichen Includefiles und übergib den Array-Index...

    Und das mit dem Include geht nicht, da er alles (inclusive Parameter) als Dateiname annimmt. Du könntest aber z.B. eine weiterleitung machen, oder eine Funktion in der entsprechenden Datei aufrufen und der die entsprechenden Parameter übergeben.



  • LUZA schrieb:

    hey leutz...

    ich habe eine datei, "forums.html", die über "include"
    eine andere datei mit einbindet. nun soll aber bei dieser anderen datei
    eine get-variable verwendet werden.

    ich dachte, man könnte mehrere get-variablen schachteln, so:

    index.php?content=010.php[b]?[/b]cat=0
    

    Um weitere Variablen per GET zu übergeben musst du die einzelnen Parameter im Query mit einem kaufmännischen Und (&) verbinden:

    index.php?content=010.php[b]&[/b]cat=0
    

    Die übergebene Variable cat (sowie auch content) kannst du dann, auch in der inkludierten Datei, über $_GET ansprechen:

    $cat_id = $_GET['cat'];
    

    Und mein Vorredner hat absolut recht, auf keinen Fall Dateinamen direkt aus dem URL entnehmen und ohne Prüfung benutzen! Eine Art ID bzw. ein Array-Index wäre auf jeden Fall besser.



  • er will ja nicht weitere Parameter übergeben, so wie ich das verstanden hab, sondern das script mit Parameter starten...



  • Da diese andere Datei in das Script inkludiert wird,
    sind alle GET-Parameter auch darin verfügbar.
    Daher muss er einfach nur mit dem & einen weiteren Parameter übergeben.
    Ich sehe ehrlich gesagt nicht wo das Problem liegt.

    Ich vermute mal er hatte vor das Script in dieser Form zu inkludieren:

    include("script.php?var=val");
    

    Das ist nicht möglich. Da aber wie gesagt die per GET übergebenen Variablen auch in dem inkludierten Script zur Verfügung stehen, reicht es doch wenn er es dem übergeordnen Script per GET übergibt. 🙄



  • [edit]
    argh.. da schreibt man stundelang solche artikel, und sieht die antwort nicht...
    thx, ich probiers mal aus
    [/edit]

    sry, ich hab mich da nich so genau ausgedrückt...

    die datei "010.php" erwartet einen parameter, nämlich "cat"

    010.php?cat=1
    

    die datei "index.php" erwartet auch einen parameter, "content"

    index.php?content=name_der_datei_die_angezeigt_werden_soll
    

    nun soll also "index.php" eine über parameter angegebene datei
    mit "include" einbinden.

    aber diese datei, die eingebunden werden soll, braucht auch parameter.
    bei[code]
    index.php?content=010.php?cat=0
    [/c

    ode]

    soll also "index.php" die datei "010.php" mit "include" einbinden und
    dieser datei als parameter "cat=0" übergeben...

    ist das irgendwie möglich? oder müsste ich dann im index explizit die parameter
    für "010.php" angeben?


Anmelden zum Antworten