PHP include unter PHP 5

  1. TeisT

    TeisT Thread Starter MacUser Mitglied

    Mitglied seit:
    16.11.2003
    Beiträge:
    125
    Zustimmungen:
    0
    Hallo,

    nach meinem Festplattencrash habe ich komplett wieder PHP installieren müssen. Meine Website hatte ich damals mit PHP 4 aufgebaut und es hat prima funktioniert. Nach dem Update funktioniert das include nun nicht mehr. Hat sich da etwas geändert?

    So funktioniert es unter PHP 4:

    HTML:
    php
    
    $action = $HTTP_GET_VARS["action"];
    if(!isset($action))
    {
    include("aktuelles.php");
    } 
    else 
    {
    if(file_exists("$action.php")) 
    { 
    include("$action.php"); 
    } 
    else 
    { 
    echo"<b>Seite nicht vorhanden!</b>"; 
    } 
    } 
    
    Nun wird nichts mehr geladen aber es kommt auch keine Fehlermeldung. :confused:

    Danke!
     
    TeisT, 16.12.2006
    #1
  2. kahler

    kahler MacUser Mitglied

    Mitglied seit:
    26.09.2005
    Beiträge:
    234
    Zustimmungen:
    0
    Wie wärs mit:

    PHP:
    <?php

    $action 
    $HTTP_GET_VARS["action"];

    if(!isset(
    $action)) {
        include(
    "aktuelles.php");
    } else {
        if(
    file_exists($action.".php")) { 
            include(
    $action.".php"); 
        } else { 
            echo
    "<b>Seite nicht vorhanden!</b>"
        } 
    }
    ?>
    So (oder so ähnlich) müsste es funktionieren. Deshalb niemals Variablen in Strings schreiben und drauf hoffen, dass die Sprache schon selbst damit klar kommt.
     
    kahler, 16.12.2006
    #2
  3. Jakob

    Jakob MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Es stimmt schon, was Kahler sagt. Am besten nutzt Du noch die 'einfachen Anführungszeichen' dann muss PHP den String auch nicht mehr nach Variablen durchsuchen.

    Dein Problem liegt aber an einer anderen Stelle: HTTP_GET_VARS ist veraltet.

    Nutze $_GET, $_POST oder gleich $_REQUEST.
     
    Jakob, 16.12.2006
    #3
  4. TeisT

    TeisT Thread Starter MacUser Mitglied

    Mitglied seit:
    16.11.2003
    Beiträge:
    125
    Zustimmungen:
    0
    Ok, danke erstmal! Ehrlich gesagt bin ich ja nicht so der non-printler! ;-) Ist das Aufwändig umzuschreiben bzw. wonach muss ich bei Google suchen?
     
    TeisT, 16.12.2006
    #4
  5. sticki

    sticki MacUser Mitglied

    Mitglied seit:
    26.07.2006
    Beiträge:
    153
    Zustimmungen:
    0
    naja, das wird von php aber explizit zur verfügung gestellt...variablen in doppelt angeführten strings werden textuell ersetzt.

    teist:
    im prinzip ersetzt du $HTTP_GET_VARS durch $_GET...müsste so sein.
     
    sticki, 17.12.2006
    #5
  6. TeisT

    TeisT Thread Starter MacUser Mitglied

    Mitglied seit:
    16.11.2003
    Beiträge:
    125
    Zustimmungen:
    0
    Ja, cool! So funktioniert es schon. Danke! Habt ihr zufällig noch eine PHP-Buch-Empfehlung für mich? Möglichst mit vielen Praxisbeispielen?
     
    TeisT, 17.12.2006
    #6
  7. Jakob

    Jakob MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Je nachdem wie tief Du in die Materie einsteigen willst. Wenn Du wirkliche Programmiertechniken anwenden möchtest und nicht nur 08/15 Scriptkiddie spielen willst (was für die eigene HP ja voll ok ist) empfehle ich Dir „Besser PHP programmieren“ von Carsten Möhrke (Galileo Verlag). Auch für Anfänger verständlich, jedoch schon höheres Niveau.

    Für den ganz kleinen Einstieg, gibt's ein paar Dummy-Bücher bei Amazon. Den Empfehlungen da konnte ich bis jetzt immer gut trauen.
     
    Jakob, 17.12.2006
    #7
  8. mr660

    mr660 MacUser Mitglied

    Mitglied seit:
    28.08.2006
    Beiträge:
    294
    Zustimmungen:
    22
    aus grundsaetzlichen überlegungen zum thema sicherheit ist davon abzuraten, einen include aus den uebergebenen werten zu erstellen. das file_exists ist ganz nett, aber nicht wirklich hilfreich. was ist wenn ich ein bisschen rumrate und z.b. mal "action=admi" ausprobieren. ist sichergestellt, dass ich nicht aus versehen dateien erwische, die mich gar nix angehen. was ist mit "../../../xxxx" oder noch schlimmer "action=http://boese.site/einbruch"?

    markus
     
    mr660, 18.12.2006
    #8
  9. 2nd

    2nd MacUser Mitglied

    Mitglied seit:
    25.07.2004
    Beiträge:
    8.901
    Zustimmungen:
    242
    Du hast schon Recht, wenn man nach obigem Bsp. vorgeht. Muss man aber nicht, man kann das ja ausbauen. Übergabe der Parameter im $_GET Array, dann Prüfung derselben auf Validität (Typ/Wertebereich) und Verknüpfung des Parameters mit einem String in Abhängigkeit des Wertes. Passt der Wert nicht, wird ein Default gesetzt.

    So kann nichts passieren.

    2nd
     
    2nd, 18.12.2006
    #9
Die Seite wird geladen...
Ähnliche Themen - PHP include PHP
  1. MAC4-EVER
    Antworten:
    3
    Aufrufe:
    1.759
    MAC4-EVER
    22.04.2010
  2. TeisT
    Antworten:
    4
    Aufrufe:
    552
    TeisT
    18.05.2007
  3. martinibook
    Antworten:
    9
    Aufrufe:
    1.389
    moses_78
    22.10.2006
  4. Maja84
    Antworten:
    25
    Aufrufe:
    1.413
  5. BendAR
    Antworten:
    1
    Aufrufe:
    454
    Yankee
    27.08.2005