Includebefehl.

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

  • Includebefehl.

    Hallo miteinander.
    Also es geht darum.
    Ich habe ein script
    PHP-Code:
    <?php

    if (!isset($_GET['go']))
    {
       include (
    "home.php");
    }
    else
    {
       include (
    "{$_GET['go']}.php");
    }
    ?>
    Nun möchte ich als erstes, dass wen man zb. statt index.php?go=home, index.php?go=blaabla eingibt und die datei blaabla.php nicht existiert es auf die home.php weiterleitet.

    2.
    möchte ich eine weitere option und zwar...
    das wenn ich index.php?go=buildings&ID=betonwerk eingebe, die datei betonwerk.php im ordner buildings geöffnet wird.

    sodada, kann mir da jmd helfen?

    sry, für rechtschreibfehler^^muss nur zur arbeit

  • #2
    http://de3.php.net/manual/de/function.file-exists.php
    für dein erstes problem

    Kommentar


    • #3
      Schlage die Funktion file_exists nach.
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        PHP-Code:
        <?php

        if (!isset($_GET['go']))
        {
           include (
        "home.php");
        }
        else
        {
           include (
        "{$_GET['go']}.php");
        }
        if ( 
        file_exists )
        {
            include(
        'home.php');
        }
        ?>
        so sieht mein code jetzt aus....
        gut, die home.php wird angezeigt. aber ganz oben wird noch dieser fehlertext angezeigt

        Warning: include(blablabla.php) [function.include]: failed to open stream: No such file or directory in /var/kunden/webs/ucTools/index.php on line 9

        Warning: include() [function.include]: Failed opening 'blablabla.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/kunden/webs/ucTools/index.php on line 9

        edit:
        jetzt wird die home.php 2mal angezeigt, wenn ich auf index.php?go=home gehe
        Zuletzt geändert von ToOFatToFly; 11.04.2008, 07:29.

        Kommentar


        • #5
          1. Du versuchst immernoch zu includieren ohne Prüfung, ob die Datei existiert
          2. file_exists ist eine Funktion -> RTFM
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            $_GET['go'] hat ungeprüft nichts im include verloren!! Das ist ne RIESIGE Sicherheitslücke!

            Bitte rausnehmen! Danke.
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              PHP-Code:
              <?php
              function allowedInclude($inc){
                
              $allowed = array('home','impressum','karte');
                if(
              count(array_keys($allowed,$inc)) > && file_exists($inc.'php'){
                  return 
              true;
                }else{
                  return 
              false;
                }
              }
              if (!isset(
              $_GET['go']))
              {
                 include (
              "home.php");
              }
              else
              {
                  if(
              allowedInclude($_GET['go'])){
                    include(
              $_GET['go'].'php');
                  }else{
                    die(
              'Ungültiger Include');
                  }
              }
              ?>
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Original geschrieben von Shurakai
                $_GET['go'] hat ungeprüft nichts im include verloren!! Das ist ne RIESIGE Sicherheitslücke!

                Bitte rausnehmen! Danke.
                also
                PHP-Code:
                <?php
                switch($_GET['go']) {

                /*.....*/
                ?

                Kommentar


                • #9
                  !nimm das was jahlives dir da gepostet hat
                  Bitte Beachten.
                  Foren-Regeln
                  Danke

                  Kommentar


                  • #10
                    OffTopic:
                    Musst du nicht arbeiten? Was sagt dein Chef wenn du stattdessen rumsurfst ...
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Original geschrieben von unset
                      OffTopic:
                      Musst du nicht arbeiten? Was sagt dein Chef wenn du stattdessen rumsurfst ...
                      ich arbeite heute mal aus dem Bett, fühl mich nicht wohl (kurzfristig abgesagt)

                      Ok, hab mal denn Code ausprobiert, kommt die meldung
                      PHP-Code:
                      Parse errorsyntax errorunexpected '{' in /var/kunden/webs/ucTools/index.php on line 4 

                      Kommentar


                      • #12
                        PHP-Code:
                        <?php
                        function allowedInclude($inc){
                          
                        $allowed = array('home','impressum','karte');
                          if(
                        count(array_keys($allowed,$inc)) > && file_exists($inc.'php')){
                            return 
                        true;
                          }else{
                            return 
                        false;
                          }
                        }
                        if (!isset(
                        $_GET['go']))
                        {
                           include (
                        "home.php");
                        }
                        else
                        {
                            if(
                        allowedInclude($_GET['go'])){
                              include(
                        $_GET['go'].'php');
                            }else{
                              die(
                        'Ungültiger Include');
                            }
                        }
                        ?>
                        mein Fehler fehlte ne Klammer in der Funktion
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Original geschrieben von jahlives

                          mein Fehler fehlte ne Klammer in der Funktion
                          Soviel sollte er aber schon noch selber herausfinden. Wenn er es nicht sieht, sieht es sicher sein Editor ....
                          Gruss
                          H2O

                          Kommentar


                          • #14
                            Original geschrieben von H2O
                            Soviel sollte er aber schon noch selber herausfinden. Wenn er es nicht sieht, sieht es sicher sein Editor ....
                            nen normaler texteditor

                            Kommentar


                            • #15
                              Original geschrieben von ToOFatToFly
                              nen normaler texteditor
                              Dann schaff dir mal was vernünftiges an

                              Ich ziehe in diesen Fällen übrigens immer eine switch-Struktur vor, die finde ich da sehr passend.

                              Anstelle von count(array_keys($allowed,$inc)) könnte man auch einfach in_array verwenden....
                              Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                              var_dump(), print_r(), debug_backtrace und echo.
                              Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                              Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                              Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                              Kommentar

                              Lädt...
                              X