Buchi: zwei kleine Codes mit einander kombinieren, bitte helfen!

Hallo,
ich nutze zur Zeit einen PHP auf meiner Website! Doch dieser soll erweitert bzw. mit einem anderen kombiniert werden!

Diesen Code verwende ich z.Z.:
<?php
 if(isset($_GET['seite']))
 {
 $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);
 if(@file_exists($_GET['seite'].'.htm'))include($_GET['seite'].'.htm');
 else echo 'Sorry, die Datei existiert nicht!';
 }
 else include('seite/home.htm');
?>

Aber ich möchte auch gerne .php Dateien einbinden! Damit es funktioniert müsste es so aussehen:
<?php
 if(isset($_GET['seite']))
 {
 $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);
 if(@file_exists($_GET['seite'].'.php'))include($_GET['seite'].'.php');
 else echo 'Sorry, die Datei existiert nicht!';
 }
 else include('seite/home.htm');
?>

Doch ich möchte ja beides einbinden, einmal .htm und auf der anderen Seite .php! Nun ist meine Frage wie kann ich die beiden Codes mit einander kombinieren, bzw wie müsste der Code lauten?

Ich hoffe ihr könnt mir bei meinem Problem helfen!
Danke!

  1. Γειά σου, Buchi!

    ich nutze zur Zeit einen PHP auf meiner Website!

    Du meinst, du verwendest ein PHP-_Script_. ;-)

    Doch dieser soll erweitert bzw. mit einem anderen kombiniert werden!

    Diesen Code verwende ich z.Z.:

    <?php

    if(isset($_GET['seite']))
    {
    $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);
    if(@file_exists($_GET['seite'].'.htm'))include($_GET['seite'].'.htm');
    else echo 'Sorry, die Datei existiert nicht!';
    }
    else include('seite/home.htm');
    ?>

    
    >   
    > Aber ich möchte auch gerne .php Dateien einbinden! Damit es funktioniert müsste es so aussehen:  
    > ~~~php
    
    <?php  
    
    >  [...]  
    >  if(@file_exists($_GET['seite'].'.php'))include($_GET['seite'].'.php');  
    >  [...]  
    > ?>
    
    

    Doch ich möchte ja beides einbinden, einmal .htm und auf der anderen Seite .php! Nun ist meine Frage wie kann ich die beiden Codes mit einander kombinieren, bzw wie müsste der Code lauten?

    Du suchst elseif. So geht's:

    if(@file_exists($_GET['seite'].'.htm')) include($_GET['seite'].'.htm');  
    elseif (@file_exists($_GET['seite'].'.php')) include($_GET['seite'].'.php');  
    else echo 'Sorry, die Datei existiert nicht!';
    

    Пока!
    Sven aus Bonn

    --
    Ἀεὶ πάντα ῥεῖ.
    Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
    Athen rückt in Sichtweite. ;-)
    1. Danke!!!!!!!!!!!!
      Bloß jetzt stellt sich mir ein weiteres Problem! Ich habe damit versucht, mein Gästebuch so in die Seite einzubauen ohne, dass sich ein neues Fenster öffnet!
      Doch leider kommt nun eine Fehlermeldung!
      http://krombacher.kr.funpic.de/index.php?seite=seite/gast/index
      Ich wäre sehr erfreut, wenn du ihr mir auch bei diesem Problem helfen könntet!!!
      Schönen Gruß und nochmals Danke!!!
      Buchi

      1. Γειά σου, Buchi!

        Bloß jetzt stellt sich mir ein weiteres Problem! Ich habe damit versucht, mein Gästebuch so in die Seite einzubauen ohne, dass sich ein neues Fenster öffnet!
        Doch leider kommt nun eine Fehlermeldung!
        http://krombacher.kr.funpic.de/index.php?seite=seite/gast/index

        Du meinst http://krombacher.kr.funpic.de/index.php?seite=seite/gast/index.

        Ich wäre sehr erfreut, wenn du ihr mir auch bei diesem Problem helfen könntet!!!

        Nun, das schaut nach einem Fehler in deinem Gästebuchscript aus. Es versucht eine Datei (global.php?) zu includen, die offenbar nicht in dem Verzeichnis vorhanden ist.

        Пока!
        Sven aus Bonn

        --
        Ἀεὶ πάντα ῥεῖ.
        Selfcode: ie:% fl:( br:> va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:) mo:} zu:) - Selfcode dekodieren - Selfcode-Info
        Athen rückt in Sichtweite. ;-)
        1. Hello,

          diese Art, 'include()' zu verwenden ist sowieso eine Genickschussübung!
          Mit etwas Trickserei kann man immer noch allerhand Blödsinn damit anstellen.

          Parameter von außen, also aus dem unsicheren Bereich sollten niemals direkt in den Befehlsstrom eingebunden werden, sonder immer erst noch über eine Übersetzungstabelle gejagt werden. Und wenn sie dort nicht drinstehen, sind sie eben gefälscht...

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. echo $begrüßung;

            diese Art, 'include()' zu verwenden ist sowieso eine Genickschussübung!
            Mit etwas Trickserei kann man immer noch allerhand Blödsinn damit anstellen.

            Spielst du da auf den Handbuchhinweis zu file_exists() an, dass diese Funktion mittels Wrapper auch entfernt lagernde Dateien (sprich über http, ftp erreichbare Ressourcen) testen kann?
            Wenn ja, dann dürfte das meiner Meinung nach kein großes Problem darstellen, da man den Wrapper, soweit ich das verstanden habe, erst händisch aktivieren muss. Insofern benötigt man, um file_exists() passieren zu können, mindestens direkten Zugriff auf das Dateisystem des Servers.

            echo "$verabschiedung $name";

            1. Ich nutze ja dass Burningbook von Wortlab! Ich kenn mich zwar nicht aus aber würde sagen, dass es schon etwas komplizierter ist! Doch wenn ich es richtig sehe, kommen sich das Gästebuch und das kleine PHP Script meiner Seite in die quere und blocken sich.
              Gibt es vielleicht auch Wrapper für sowas? Ich kenn Wrapper nur von Mambo.
              Danke im Vorraus!
              Gruß
              Buchi

            2. Hello,

              Spielst du da auf den Handbuchhinweis zu file_exists() an, dass diese Funktion mittels Wrapper auch entfernt lagernde Dateien (sprich über http, ftp erreichbare Ressourcen) testen kann?

              Das wäre noch schlimmer, wenn man einschaltet.
              Es reichte mir schon die Lücke, dass man _alle_ Files auf dem lokalen Host abfragen kann, wenn der etwas schlampig eingerichet ist aber zumindest die des Virtual Hosts der betroffenen Domain, also auch außerhalb der DocRoot!

              Harzliche Grüße vom Berg
              esst mehr http://www.harte-harzer.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
            3. Hallo,
              erstmal sorry wegen neuem Thread aber ich hab nen neuen gemacht, weil es ja eigentlich mit dem Anfangsthema nix mehr zu tun hat!

              Was verstehe ich unter Wrapper?
              Mit Wrapper verstehe ich ein kleines Programm oder wie man es bezeichnen soll, welches eine Website in diesem Fall das Gästebuch in meine Website importiert.
              Ich kenne die bezeichnung nur durch Mambo ein CMS wo ich das hatte und so andere Websites einbinden konnte!
              Wozu brauche ich einen Wrapper?
              Ich brauche einen da mir sonst eine Fehlermeldung an den Kopf geschmissen wird, welche nicht auftrtt wenn ich das Gästebuch außerhalb meiner Website, sprich mit neuem Fenster lade!

              1. echo $begrüßung;

                Mit dem Wrapper hast du bestimmt was missverstanden, der, den ich meinte, hat mit deinem Thema nicht viel zu tun. Vergiss das einfach wieder. :-)

                Du musst nur beim Includen von Seiten dafür sorgen, dass der Pfad stimmt. Entweder du gibst ihn absolut an (/wurzel/pfad/zur/datei.php) oder relativ zu dem Ort wo das vom Anwender/Browser aufgerufene Script liegt, was meist besser ist, da man dann alles einfacher auf einen anderen Server kopieren kann, falls mal ein Umzug ansteht.
                Wenn dein einzubindendes Script in einem Unterverzeichnis liegt, so ist das mit anzugeben.

                index.php + gaestebuch/gb.php => include 'gaestebuch/gb.php';

                Wenn nun aber gb.php weitere Scripte nachlädt, welche sich ebenfalls im Verzeichnis gaestebuch befinden, und das ohne Verzeichnisangabe macht, dann hast du ein Problem, weil PHP relativ zu index.php sucht.

                index.php + gaestebuch/gb.php + gaestebuch/datei.php => include 'gaestebuch/datei.php'; (egal ob das in index.php oder gb.php steht)

                Du kannst das lösen, ohne die gaestebuch-Dateien zu ändern, wenn du in index.php einen include_path setzt (oder erweiterst) (siehe set_include_path()).

                echo "$verabschiedung $name";

                1. Du musst nur beim Includen von Seiten dafür sorgen, dass der Pfad stimmt. Entweder du gibst ihn absolut an (/wurzel/pfad/zur/datei.php) oder relativ zu dem Ort wo das vom Anwender/Browser aufgerufene Script liegt, was meist besser ist, da man dann alles einfacher auf einen anderen Server kopieren kann, falls mal ein Umzug ansteht.
                  Wenn dein einzubindendes Script in einem Unterverzeichnis liegt, so ist das mit anzugeben.

                  index.php + gaestebuch/gb.php => include 'gaestebuch/gb.php';

                  Wenn nun aber gb.php weitere Scripte nachlädt, welche sich ebenfalls im Verzeichnis gaestebuch befinden, und das ohne Verzeichnisangabe macht, dann hast du ein Problem, weil PHP relativ zu index.php sucht.

                  index.php + gaestebuch/gb.php + gaestebuch/datei.php => include 'gaestebuch/datei.php'; (egal ob das in index.php oder gb.php steht)

                  Du kannst das lösen, ohne die gaestebuch-Dateien zu ändern, wenn du in index.php einen include_path setzt (oder erweiterst) (siehe set_include_path()).

                  Sorry aber ich versteh nur BAHNHOF!
                  Ich kenn mich absolut mit PHP nicht aus! Ich hab das Script von nem Freund bekommmen!
                  Was muss ich machen, damit das Gästebuch perfekt funktioniert?

  2. Hi Buchi,

    Doch ich möchte ja beides einbinden, einmal .htm und auf der anderen Seite .php! Nun ist meine Frage wie kann ich die beiden Codes mit einander kombinieren, bzw wie müsste der Code lauten?

    Dieses Problem trat bei mir neulich ebenfalls auf. Ich bin dazu umgestiegen, NUR php-Dateien zu benutzen (PHP-Dateien dürfen natürlich auch ausschließlich html-Code enthalten, php-Code muss nicht unbedingt drin sein).
    Eine Lösung, die mir eingefallen ist, war, einen GET-Parameter in der URL zu übertragen. Ich nannte diesen "ext" für "extension" und gab ihm die gewünschte Endung. Dein Code müsste danach so aussehen:

      
    <?php  
     if(isset($_GET['seite']))  
     {  
     $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);  
     if(@file_exists($_GET['seite'].'.$_GET['ext']))include($_GET['seite'].'.$_GET['ext']');  
     else echo 'Sorry, die Datei existiert nicht!';  
     }  
     else include('seite/home.htm');  
    ?>  
    
    

    Mit diesem Script ist es ebenfalls möglich, Projekt-externe Dateien zu includen. Wenn du das wirklich willst, dann lass dir gesagt sein, dass hierbei "böser Code" von deinem Script ausgeführt werden kann (obwohl dein Script schon recht sicher ist), der auf fremden Servern liegt und auf den du keinen Einfluss haben kannst.
    Willst du das (wie ich hoffe) aber verhindern, dann lege ich dir $_SERVER['Document_Root']; ans Herz. Damit lassen sich nur noch Dateien aus dem DocumentRoot des Servers includen.

    MfG -
    xola

    --
    Unterschied zwischen Gott und Admin?
    -- Gott ist gnädig!
    (Biesterfeld in http://forum.de.selfhtml.org/archiv/2005/7/t110831/#m696446 )
    1. Hi, erstmal danke!

      <?php
      if(isset($_GET['seite']))
      {
      $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);
      if(@file_exists($_GET['seite'].'.$_GET['ext']))include($_GET['seite'].'.$_GET['ext']');
      else echo 'Sorry, die Datei existiert nicht!';
      }
      else include('seite/home.htm');
      ?>

        
      Wenn ich den Code so anwende, kommt leider diese Meldung:  
      Parse error: parse error, unexpected T\_STRING in /usr/export/www/vhosts/funnetwork/hosting/krombacher/index.php on line 48  
        
        
        
      Was ich nicht verstehe, warum fremder Server? Ich habe einen Account bei www.funpic.de und dort habe ich die Website liegen und auch das Gästebuch installiert.  
      Oder hab ich da was falsch verstanden?  
      Gruß  
      Buchi
      
      1. Ich nutze z.Z. diesen Code doch damit kann ich leider nicht auf Dateien des Gästebuchs zugreifen. Aber immerhin gibt er nicht die Meldung "Datei existiert nicht!"

        <?php
         if(isset($_GET['seite']))
         {
         $_GET['seite']=str_replace(array('http://','ftp://','..'),array('','',''),$_GET['seite']);
         if(@file_exists($_GET['seite'].'.htm'))include($_GET['seite'].'.htm');
         elseif (@file_exists($_GET['seite'].'.php')) include($_GET['seite'].'.php');
         else echo 'Sorry, die Datei existiert nicht!';
         }
         else include('seite/home.htm');
        ?>