[PHP] Inculde Problem mit php

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Blacklotus, 6. Oktober 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. Oktober 2006
    Inculde Problem mit php

    sorry jungs wenn die frage vll schon paar mal gestellt wurde also ich will eine datei auf meiner page includen die sich im ordner inc befindet. Ich hab sie ganz normal verlinkt also bei href= inc/home.php

    und dann diesen code verwendet.
    Code:
    <td colspan="6" rowspan="15" background="images/cmpage3_55.gif" width="407" height="451" alt="" valign="top">
     
    
    <div style="position: relative; left: 5; top: 2; width:400 ; height:430 ; overflow: auto">
    
    
     <?
     if (!isset($_GET[inc])) $_GET[inc]="home";
     include ((file_exists("inc/".$_GET[inc].".php")?"inc/".$_GET[inc].".php":"inc/404.php"));
     ?>
     </div>
     </td>
    
     
    Die home wird auch standart mäßig angezeigt aber wenn ich jetzt zb about.php beim nächst link angebe und man klickt drauf wird ne neue seite geöffnet und es wird eben nicht included.

    Brauche echt Hilfe sorry !!!
     
  2. 6. Oktober 2006
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: Inculde Problem mit php

    sagen wir es mal so:
    dein php-code iss grässlich...

    PHP:
            <?
            
    if (!isset( $_GET [ inc ]))  $_GET [ inc ]= "home" ;
            include ((
    file_exists ( "inc/" . $_GET [ inc ]. ".php" )? "inc/" . $_GET [ inc ]. ".php" : "inc/404.php" ));
            
    ?>
    1) bei if IMMER { und } benutzen!!! auch wenn es ohne geht...
    2) file_exists("inc/".$_GET[inc].".php")?"inc/".$_GET[inc].".php":"inc/404.php" mag zwar richtig sein, iss aber nicht gerade übersichtlich. -> schlechter stil
    3) werde ich dir keine weitere hilfe zu dem teil geben, da es eine sicherheitslücke hat. wie man dateien richtig included wurde hier schon oft angegeben und diskutiert; es exisitert auch ein tutorial (der erste post davon ist genauso grottenfalsch, jedoch die darunter berichtigen es: stichwort: switch...) -> SUFU

    //edit: habe anscheinend meinen guten tag heute:
    Frage zum Codeaufbau bei einer HP - RR:Board
    da... einfach mal den post von hans-pedda anschauen...
     
  3. 6. Oktober 2006
    AW: Inculde Problem mit php

    Du musst die verarbeitung ändern, wie auch schon gesagt.
    Die Sichere Variante davon ist switch, macht zwar mehr arbeit, aber du bist auf der sicheren Seite.

    Ansonsten solltest du versuchen dich mehr an richtlien zu halten die es für PHP gibt.
    Ich würde dir empfehlen dir mal ein Tutorial vorzunehmen.

    z.B. tut.php-q.net
     
  4. 6. Oktober 2006
    AW: Inculde Problem mit php

    hey danke ihr beiden ich hab das jetzt mit der swich variante gemacht.
    aber das problem besteht immernoch wenn man auf einen link klickt öffnet sich die php datei in einem neuen fenster und wird nicht included!
     
  5. 6. Oktober 2006
    AW: Inculde Problem mit php

    PHP:
    if (!isset( $_GET [ inc ]))  $_GET [ inc ]= "home" ;
    include ((
    file_exists ( "inc/" . $_GET [ inc ]. ".php" )? "inc/" . $_GET [ inc ]. ".php" : "inc/404.php" ));
    ?>
    Du hast vergessen ein Fragezeichen (?) zu setzen.

    PHP:
    if (!isset( $_GET [ inc ]))  $_GET [ inc ]= "home" ;
    include (?(
    file_exists ( "inc/" . $_GET [ inc ]. ".php" )? "inc/" . $_GET [ inc ]. ".php" : "inc/404.php" ));
    ?>
    Wenn ich unrecht hatte, tut es mir leid. Finde den Code nur momentan ziemlich unübersichtlich ;o

    greetz


    E// bitte beitrag löschen, da nutzlos.
     
  6. 6. Oktober 2006
    AW: Inculde Problem mit php

    ja danke blos das prob ist das die seiten eben neu geöffnet werden wäre echt wichtig wenn ihr mir hilft brauch das bis heute 17 uhr

    greez bewertungen hab ich euch 3 gegeben
     
  7. 6. Oktober 2006
    AW: Inculde Problem mit php

    tja... geb mal den neuen code mit switch

    und du bist dir sicher, dass die dateien vorhanden sind?
    du bist dir sicher, dass in der datei auch was ausgegeben wird?
     
  8. 6. Oktober 2006
    AW: Inculde Problem mit php

    Das kann nicht an PHP liegen. Gib mal bitte den Code vom a-Tag!
     
  9. 6. Oktober 2006
    AW: Inculde Problem mit php

    Mit Switch wür das ganze so aussehen:

    PHP:
    <? php
        
    if(isset( $_GET [ 'go' ])) {
            switch(
    $_GET [ 'go' ]) {

                                case 
    "start" :
                    include 
    "content/start.php" ;
                    break;
                                case 
    "aktuell" :
                    include 
    "content/aktuell.php" ;
                    break;
                                case 
    "vita" :
                    include 
    "content/vita.php" ;
                    break;
                                case 
    "publi" :
                    include 
    "content/publi.php" ;
                    break;
                                case 
    "verlage" :
                    include 
    "content/verlage.php" ;
                    break;
                                case 
    "rezens" :
                    include 
    "content/rezens.php" ;
                    break;
                                case 
    "proben" :
                    include 
    "content/proben.php" ;
                    break;
                                case 
    "kollegen" :
                    include 
    "content/kollegen.php" ;
                    break;
                                case 
    "links" :
                    include 
    "content/links.php" ;
                    break;
                                case 
    "kontakt" :
                    include 
    "content/kontakt.php" ;
                    break;
                            
                default:  
    // Wenn eine ungültige go angegeben wurde
                        // sollen die News gezeigt werden
                    
    include  "content/start.php" ;
                    break;
            }     
        } else {
            
    // wenn go nicht angegeben wurde
            // sollen die News angezeigt werden.
            
    include  "content/start.php" ;
        }
    ?>
    Die Seite wird dann z.b. über index.php?go=aktuell aufgerufen.

    hansi
     
  10. 6. Oktober 2006
    AW: Inculde Problem mit php

    das ganze sieht so bei mir aus:

    Code:
    <?php
     if(isset($_GET['go'])) {
     switch($_GET['go']) {
    
     case "start":
     include "content/start.php";
     break;
     case "about":
     include "content/about.php";
     break;
     case "vita":
     include "content/vita.php";
     break;
     case "uebers":
     include "content/uebers.php";
     break;
     case "ital":
     include "content/uebers.php#ital";
     break;
     case "span":
     include "content/uebers.php#span";
     break;
     case "franz":
     include "content/uebers.php#franz";
     break;
     case "publi":
     include "content/publi.php";
     break;
     case "verlage":
     include "content/verlage.php";
     break;
     case "rezens":
     include "content/rezens.php";
     break;
     case "proben":
     include "content/proben.php";
     break;
     case "kollegen":
     include "content/kollegen.php";
     break;
     case "links":
     include "content/links.php";
     break;
     case "werkstatt":
     include "content/werkstatt.php";
     break;
     
     default: // Wenn eine ungültige go angegeben wurde
     // sollen die News gezeigt werden
     include "content/start.php";
     break;
     } 
     } else {
     // wenn go nicht angegeben wurde
     // sollen die News angezeigt werden.
     include "content/start.php";
     }
    ?> 
    
    So ja alles da also die 2 ersten als test about.php und start.php im ordner content!
    die start.php wird eben auch standart mäßig angezeit.

    hier mal die ganze index.php

    Download offline!/

    HILFE
     
  11. 6. Oktober 2006
    AW: Inculde Problem mit php

    jaja... das wissen wir schon das hat er ja schon gemacht gehabt, bevor du gepostet hast...

    1)em... also in der index stehen soweit ich das überblicken kann keine links zu den anderen seiten...
    die wären jetzt eigentlich ganz wichtig...
    poste am besten mal grad so einen link, wie du ihn hast

    2)das: content/uebers.php#franz wird nicht funktionieren... (jedenfalls wüsste ich es nicht, dass es das tut)
     
  12. 6. Oktober 2006
    AW: Inculde Problem mit php

    onMouseOver="MM_swapImage('Image165','','images/cmpage3_25_3.gif',1)"></a><a href="content/start.php" onMouseOut="MM_swapImgRestore()"


    hier so sieht ein link aus!
     
  13. 6. Oktober 2006
    AW: Inculde Problem mit php

    mach mal alstarget _self rein
    also
    Code:
    <a href="content/start.php" target="_self" onMouseOut="MM_swapImgRestore()">
    
    /edit:
    btw solltest du auch ne variable übergebn -.-

    also:
    Code:
    <a href="content/start.php?inc=home" target="_self" onMouseOut="MM_swapImgRestore()">
    
    oder so was
     
  14. 6. Oktober 2006
    AW: Inculde Problem mit php

    Was nützt dir denn überhaupt dein Switch, wenn du ihn nie in der Verlinkung anwendest?

    Du verlinkst auf alle möglichen Varianten, aber nirgends verlinkst du so, dass der Switch Bereich überhaupt angewandt wird. Von daher hat das auch keinen Sinn, dort nach Fehlern zu suchen.

    Zeile 162 beispielsweise:
    Code:
    href="inc/home.php"
    Was bringt dir dabei der Switch? - Nichts! Du musst wenn du den Switch anwenden musst schon auf index.php?go=home verlinken, damit das Ganze funktioniert. Im Switch fragste ja ab nach $_GET['go'].
    Das $_GET gibt dir an, was in der Adressleiste als Wert für die jeweilige Variable angegeben wird.

    Beispiel:
    index.php?var=key

    dort gibt dir $_GET['var'] den Wett "key" aus. So auch bei index.php?go=home.
    Ist der Wert in der Variable $_GET['go'] "home", so wird die untere Zeile im Switch ausgeführt.
    So funktioniert das bei allen Seiten. Sollte das immernoch im neuen Fenster öffnen, der Inhalt aber richtig angezeigt werden (auch includet) dann bau mal in deinen < href=""...> Tag ein target="_self" ein.
     
  15. 6. Oktober 2006
    AW: Inculde Problem mit php

    Ja danke hab das prob auch gefunden

    War wieder voll lächerlich, naja danke gib dir auch noch ne Bewertung und naja ich mach das ohne switch
    so wie ichs von anfang an machen wollte
     
  16. 6. Oktober 2006
    AW: Inculde Problem mit php

    dann gib mir den link zu deiner fertigen hp

    ich bringe sie dir dann in ca. 20min down...
    man man man... wenn du das so machen willst, wie in deinem ersten post, dann hast du ein sicherheitsproblem...
     
  17. 7. Oktober 2006
    AW: Inculde Problem mit php

    Noe. Er hat kein Sicherheitsproblem. Wo sollte er deiner Meinung nach eins haben?
     
  18. 7. Oktober 2006
    AW: Inculde Problem mit php

    um es nochmal deutlich zu sagen:

    hier:
    PHP:
            <?
            
    if (!isset( $_GET [ inc ]))  $_GET [ inc ]= "home" ;
            include ((
    file_exists ( "inc/" . $_GET [ inc ]. ".php" )? "inc/" . $_GET [ inc ]. ".php" : "inc/404.php" ));
            
    ?>
    er hat, wenn ich seinen letzten post richtig verstanden habe diese version benutzt...

    was passiert, wenn kein open_basedir gesetzt ist? bzw. was passiert, wenn es mir gelingt diese schwachstelle in php auszunutzen Schlupfloch in PHPs open_basedir-Gefängnis | heise Security
    tja... überleg es dir...

    die methode mit file_exists mag korrekt sein und die sicherheit erhöhen. JEDOCH nicht immer und überall... weißt du ob bei ihm die vorraussetzungen erfüllt sind, dass es eben nicht funktioniert? nein?! also kannst du auch nicht sagen, dass er kein sicherheitsproblem hat...

    die einzig 100% sichere variante ist die mit switch, da hier absolut keine variablen, die per $_GET kommen direkt benutzt werden um eine datei zu includen... es gilt wie immer: jeder wert der vom client kommt ist potentiell unsicher...
     
  19. 7. Oktober 2006
    AW: Inculde Problem mit php

    Auch wenns nicht mehr ganz zum Thema passt:
    Bei mir funzt der Anker

    hansi
     
  20. 8. Oktober 2006
    AW: Inculde Problem mit php

    Wie willst du denn die Schwachstelle ausnutzen, ohne dafuer die Funktion symlink() aufzurufen? Tja... ueberleg es dir...

    Genauso wahrscheinlich ist es, dass er das ganze auf einem schlecht konfigurierten Rootserver macht, dessen Root-Passwort sein Name rueckwaerts ist....
     
  21. 8. Oktober 2006
    AW: Inculde Problem mit php

    mhh... was ich damit andeuten wollte war:

    man(n) muss sich nicht eine potentielle sicherheitslücke schaffen... und file_exists ist eben aus den genannten gründen eine potentielle sicherheitlücke.
     
  22. 8. Oktober 2006
    AW: Inculde Problem mit php

    Die eben genannten Gruende treffen aber nicht zu. Deine angebliche Sicherheitsluecke hat sich ja jetzt als unwahr herausgestellt und alle Hoster haben open_basedir an. Sicher, ich wuerde es auch so nicht machen, aber es ist keine direkte Sicherheitsluecke in der Form.
     
  23. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.