kostenloser Webspace werbefrei: lima-city


Include

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    Hallo,
    ich mache jetzt meine HP neu und verwende dazu includes.
    Also es wird eine Variable über GET übergeben und danach wird dann includiert.
    Das Include erfolgt aber erst weiter unten im Quelltext, also da wo es hingehört.
    Nun möcht ich aber den Seitentitel dem Include ändern.
    Dieses wird aber erst später eingebunden, und demnach kennt er den Seitentitle, der im Include definiert ist, noch nicht.
    Gibt es da eine Möglichkeit das irgendwie zu lösen ohne ein 2. Include??

    Ich hoffe ich hab das jetzt verständlich erfragt, ansonsten einfach nachfragen.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich habs noch nicht ganz verstanden.
    Wenn du den Scriptteil posten könntest, wäre das klasse. Dann kann man dir viel einfacher helfen.
  4. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Ich habs noch nicht ganz verstanden.
    Wenn du den Scriptteil posten könntest, wäre das klasse. Dann kann man dir viel einfacher helfen.


    OK.

    Ich hab alles unwichtige ausgeschnitten.

    Hier eine Beispielurl: http://philippkern.at.gg/?p=home
    (Ist aber noch nicht online)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>PhilippKern.at.gg - <?php echo $pagetitle;?> - by Philipp KERN</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta name="content-language" content="de" />
    <meta name="author" content="Philipp Kern" />
    <meta name="copyright" content="Philipp Kern" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name="language" content="Deutsch" />
    <meta name="robots" content="index,follow" />
    <!-- <base href="http://philippkern.at.gg/" /> -->
    <meta name="date" content="2007-10-07T+02:00" />
    <link rel="stylesheet" type="text/css" href="style_kp.css" />
    <link rel="shortcut icon" type="image/x-icon" href="images/favicon_kp.ico" />
    </head>
    <body>
    <div id="container">
    
    //Ausgeschnitten
    
    <div id="navi">
    <?php
    include "pages/navi.inc";
    ?>
    </div>
    
    <?php
    $page = $_GET['p'];
    if($page=="")
       include "pages/home.inc";
    else
       include "pages/".$page.".inc";
    ?>
    
    
    </div>
    <br><div class="copyright">Copyright &copy; 2007 Philipp Kern</div><br>
    </body>
    </html>


    Und hier eine der Include-Datein:

    <?php $pagetitle = "Home"; ?>
    <hr /><br /><br />
    <img src="images/beg1.gif" border="0" />
    <p>Hallo,<br />dies ist meine erste selbst erstellte Homepage.
     Ich biete euch hier Links zu Games, Downloads und zu n&uuml;tzlichen Seiten an. Es gibt auch ein <a href="?p=forum" />Forum</a> in dem
     man diskutieren kann.<br />
     Ich w&uuml;rde mich &uuml;ber einen Eintrag in mein <a href="?p=gaestebuch" />G&auml;stebuch</a> freuen
     und ich hoffe das ihr mir
     Verbesserungsvorschl&auml;ge (falls n&ouml;tig) und am besten deren Umsetzung mitteilen k&ouml;nnt.</p>
    <br /><br /><hr />


    Also es wird immer eine *.inc-Datei includiert (eigentlich 2) und der pagetitle soll immer dem Include entsprechend ge&auml;ndert werden.
    Aber das geht so nat&uuml;rlich nicht, da das Include erst nach der Ausgabe des $pagetitle ist.
    Gibt es da eine M&ouml;glichkeit das anders zu machen.


    Hoffe das ist verst&auml;ndlich.
  5. Du kannst die $_GET doch einfach ganz am anfang deines Scripts auslesen und dann an Hand dieser den Seitentitel &#228;ndern, z.B. indem du alle Seitentitel in einem assoziativen Array speicherst und den richtigen dann aufrufst.
  6. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Du kannst die $_GET doch einfach ganz am anfang deines Scripts auslesen und dann an Hand dieser den Seitentitel &#228;ndern, z.B. indem du alle Seitentitel in einem assoziativen Array speicherst und den richtigen dann aufrufst.


    Also was ein "assoziatives Array" ist wei&szlig; ich jetzt nicht aber, das hab ich mir auch schon gedacht. Also f&uuml;r den Pagetitle das &uuml;bergebene "p" zu nehmen, aber das ist nicht so gut da ich zB Home haben will aber die Datei hei&szlig;t aber home.
  7. machst halt eine case anweisung ganz oben ;)
    switch($_GET['p'])
    {
       case 'home': $titel = "Startseite"; break;
       case 'gb': $titel = "G&#228;stebuch"; break;
    }
    
    // und dann halt beim Titel:
     <title>PhilippKern.at.gg - <?php echo $titel;?> - by Philipp KERN</title>


    MfG
    .i
  8. s***h


    Also was ein "assoziatives Array" ist wei&szlig; ich jetzt nicht aber, das hab ich mir auch schon gedacht. Also f&uuml;r den Pagetitle das &uuml;bergebene "p" zu nehmen, aber das ist nicht so gut da ich zB Home haben will aber die Datei hei&szlig;t aber home.


    siehe:
    http://de.wikipedia.org/wiki/Assoziatives_Array
  9. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    machst halt eine case anweisung ganz oben ;)
    switch($_GET['p'])
    {
       case 'home': $titel = "Startseite"; break;
       case 'gb': $titel = "G&#228;stebuch"; break;
    }
    
    // und dann halt beim Titel:
     <title>PhilippKern.at.gg - <?php echo $titel;?> - by Philipp KERN</title>


    MfG
    .i


    Denke das ist die sinnvollste Idee. (Die ich auch verstehe^^)



    sesch schrieb:

    Also was ein 'assoziatives Array' ist wei&szlig; ich jetzt nicht aber, das hab ich mir auch schon gedacht. Also f&uuml;r den Pagetitle das &uuml;bergebene 'p' zu nehmen, aber das ist nicht so gut da ich zB Home haben will aber die Datei hei&szlig;t aber home.


    siehe:
    http://de.wikipedia.org/wiki/Assoziatives_Array


    Hab ich auch schon gefunden, danke. :biggrin:
  10. Jungs, ich wei&#223; ja nicht was ihr hier produzieren wollt, aber so wie es aussieht wird es eine herrliche Page-Injection Seite. D.h. jeder x-beliebige User kann Dateien (inkl. Passwortdateien) auslesen lassen indem er die Datei per URL Parameter &#252;bergibt.

    switch case ist schonmal eine gute L&#246;sung, doch bitte &#228;ndert den Quelltext dahingehend, dass der User einen Namen angebeben mu&#223; und dann &#252;ber das switch case die inklude-Variable und der Seitentitel gesetzt wird.

    Das sieht dann folgenderma&#223;en aus:
    <?
    switch($_GET['p'])
    {
       case 'home':   $inc = 'home.php'; $seitentitel = 'Startseite'; break;
       case 'gb':     $inc = 'gbook.php'; $seitentitel = 'G&#228;stebuch'; break;
       default:
                $inc = 'home.php'; $seitentitel = 'Startseite';
    }
    
    // beliebiger Quelltext
    // ...
    
    include_once($_SERVER['DOCUMENT_ROOT']."/unterverzeichnis/".$inc);
    
    // beliebiger Quelltext
    // ...
    ?>


    Damit ist dann Page-Injection unm&#246;glich geworden, weil wenn der Nutzer einen nicht von dir vorgegeben Namen (Dateiname/Verzeichnis) angibt, automatisch der Defaultwert (home.php) gesetzt wird. Es wird also zum Bsp. keine Passwortdatei inkludiert ;-)

    Gr&#252;&#223;le Scout
  11. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Jungs, ich wei&#223; ja nicht was ihr hier produzieren wollt, aber so wie es aussieht wird es eine herrliche Page-Injection Seite. D.h. jeder x-beliebige User kann Dateien (inkl. Passwortdateien) auslesen lassen indem er die Datei per URL Parameter &#252;bergibt.

    switch case ist schonmal eine gute L&#246;sung, doch bitte &#228;ndert den Quelltext dahingehend, dass der User einen Namen angebeben mu&#223; und dann &#252;ber das switch case die inklude-Variable und der Seitentitel gesetzt wird.

    Das sieht dann folgenderma&#223;en aus:
    <?
    switch($_GET['p'])
    {
       case 'home':   $inc = 'home.php'; $seitentitel = 'Startseite'; break;
       case 'gb':     $inc = 'gbook.php'; $seitentitel = 'G&#228;stebuch'; break;
       default:
                $inc = 'home.php'; $seitentitel = 'Startseite';
    }
    
    // beliebiger Quelltext
    // ...
    
    include_once($_SERVER['DOCUMENT_ROOT']."/unterverzeichnis/".$inc);
    
    // beliebiger Quelltext
    // ...
    ?>


    Damit ist dann Page-Injection unm&#246;glich geworden, weil wenn der Nutzer einen nicht von dir vorgegeben Namen (Dateiname/Verzeichnis) angibt, automatisch der Defaultwert (home.php) gesetzt wird. Es wird also zum Bsp. keine Passwortdatei inkludiert ;-)

    Gr&#252;&#223;le Scout


    Stimmt, du hast recht.

    Aber das Unterverzeichnis "pages" ist mir .htaccess gesch&uuml;tz, also wenn man es aufruft dan wird man auf eine 403-seite weitergeleitet (
    Order allow,deny
    deny from all
    ErrorDocument 403 http://localhost/KernPhilipp/hp/?p=403
    ).

    Kann man aber trotzdem &uuml;bergehen, aber man kann nur *.inc-Datein includieren die im pages-Verzeichnis liegen. Hab ich zB eine Datei mir PWs dann bekommt sie einfach die Endung php und man kann sie nicht mehr auslesen, oder??


    Edit: HAb mir dein Script noch mal durch den Kopf gehen lassen und bin zu dem Entschluss gekommen diese Variante zu w&auml;hlen, dann gibt es auch kein Warning wenn der User einen falschen Dateinamen angibt.

    Beitrag geändert: 12.10.2007 15:22:28 von philippkern
  12. Ja ich geb ja zu, dass es nicht unbedingt ganz leicht ist in deinem Fall auf PW-Dateien zuzugreifen. Weil hier aber auch diverse PHP Neulinge im Forum sind, passiert es dann schonmal schnell, dass bei diesen kein ".php" dahinter steht. Nebenbei gesagt, wenn das PHP nicht dahinter stehen w&#252;rde kann man sogar munter Verzeichniswechsel durchf&#252;hren ;-) ...mit einer .htaccess Datei ist es also nicht unbedingt getan.

    Wie dem auch sei - vertraut bitte keinen Nutzereingaben bzw. URL-Werten usw.
    Klar kann jeder sein eigenes Ding machen, aber warum erst "falsch" machen, wenn man es mit wenig Handgriffen gleich richtig machen kann ;-)


    Gr&#252;&#223;le


    Edit:
    Auch PHP Dateien k&#246;nnen gelesen werden. Dazu gibt man als Parameter-Wert einfach ein spezielles Script was auf einem eigenen Server liegt an. Dieses Script wird dann in deinem include() inkludiert und ausgef&#252;hrt... je nachdem wie gut das Script ist kann man recht schicke Sachen machen. Das Beste was ich bisher gesehen habe, war ein kompletter Dateimanager ;-)

    Beitrag geändert: 12.10.2007 15:50:03 von scout
  13. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Ja ich geb ja zu, dass es nicht unbedingt ganz leicht ist in deinem Fall auf PW-Dateien zuzugreifen. Weil hier aber auch diverse PHP Neulinge im Forum sind, passiert es dann schonmal schnell, dass bei diesen kein ".php" dahinter steht. Nebenbei gesagt, wenn das PHP nicht dahinter stehen w&#252;rde kann man sogar munter Verzeichniswechsel durchf&#252;hren ;-) ...mit einer .htaccess Datei ist es also nicht unbedingt getan.

    Wie dem auch sei - vertraut bitte keinen Nutzereingaben bzw. URL-Werten usw.
    Klar kann jeder sein eigenes Ding machen, aber warum erst "falsch" machen, wenn man es mit wenig Handgriffen gleich richtig machen kann ;-)


    Gr&#252;&#223;le


    Edit:
    Auch PHP Dateien k&#246;nnen gelesen werden. Dazu gibt man als Parameter-Wert einfach ein spezielles Script was auf einem eigenen Server liegt an. Dieses Script wird dann in deinem include() inkludiert und ausgef&#252;hrt... je nachdem wie gut das Script ist kann man recht schicke Sachen machen. Das Beste was ich bisher gesehen habe, war ein kompletter Dateimanager ;-)

    Beitrag ge&auml;ndert: 12.10.2007 15:50:03 von scout


    Also ist es jetzt nicht sicher?!

  14. ja weil der nutzer angeben kann was er m&#246;chte, aber trotzdem nur eine von dir deffinierte Aktion ausgef&#252;hrt wird. also die default seite aufgerufen wird.

    gr&#252;&#223;le
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!