PHP include unter PHP 5

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von TeisT, 16.12.2006.

  1. TeisT

    TeisT Thread Starter MacUser Mitglied

    Beiträge:
    125
    Zustimmungen:
    0
    MacUser seit:
    16.11.2003
    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!
     
  2. kahler

    kahler MacUser Mitglied

    Beiträge:
    234
    Zustimmungen:
    0
    MacUser seit:
    26.09.2005
    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.
     
  3. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    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.
     
  4. TeisT

    TeisT Thread Starter MacUser Mitglied

    Beiträge:
    125
    Zustimmungen:
    0
    MacUser seit:
    16.11.2003
    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?
     
  5. sticki

    sticki MacUser Mitglied

    Beiträge:
    153
    Zustimmungen:
    0
    MacUser seit:
    26.07.2006
    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.
     
  6. TeisT

    TeisT Thread Starter MacUser Mitglied

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

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    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.
     
  8. mr660

    mr660 MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    22
    MacUser seit:
    28.08.2006
    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
     
  9. 2nd

    2nd MacUser Mitglied

    Beiträge:
    8.902
    Zustimmungen:
    242
    MacUser seit:
    25.07.2004
    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
     
Die Seite wird geladen...
Ähnliche Themen - PHP include unter
  1. MAC4-EVER
    Antworten:
    3
    Aufrufe:
    1.729
    MAC4-EVER
    22.04.2010
  2. TeisT
    Antworten:
    4
    Aufrufe:
    527
    TeisT
    18.05.2007
  3. martinibook
    Antworten:
    9
    Aufrufe:
    1.344
    moses_78
    22.10.2006
  4. Maja84
    Antworten:
    25
    Aufrufe:
    1.347
  5. BendAR
    Antworten:
    1
    Aufrufe:
    438
    Yankee
    27.08.2005