Problem mit IF

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

  • #16
    Original geschrieben von jochenj
    hast du schonmal eine datenbankabfrage gesehen, wenn der server abgeschmiert ist??
    fehlermeldung: blabla, in include/meine_passwörtet.txt
    und ehrlich, falls ich wirklich sowas sehen sollte - rein aus neugier würde ich dir den server zukünftig mit den daten abschiesen
    ja und wenn es nicht *.inc oder *.txt ist dann wird halt
    fehlermeldung: blabla, in include/meine_passwörtet.php gezeigt.

    und was würde das dann bringen wenn es *.php ist?

    Oder meinst du include sollte man grundsätzlich meiden? wenn ja, das nutze ich im Bezug zur DB eh nicht.

    Kommentar


    • #17
      Original geschrieben von jochenj
      switch ist frundsätzlich dann sinnvoll, wenn du mit mehrere if anweisungen den inhalt einer varibalen prüfen wilslt
      z.b.
      if $i = 1 {}
      if $i = 2 {}
      etc.

      dann machst du

      switch $i
      {
      case 1: ...; break;
      case 2: ...; break;
      default: // hier steht der code, der ausgeführt wird, wenn keine case bedingung greift.
      Also kann ich wie in meinm Fall dann, wenn:
      PHP-Code:
      case "": include("index"); break; 
      // wenn nur die domain aufgerufen wird, wird die standard Datei icludiert "index" also wenn garnichts greift!
      Beispiel Aufrufwewewe.seite.de 
      und wenn jemand iregendwas eingibt, dann in der letzten Zeile:

      PHP-Code:
      case include("unknow"); break; // das fehlermeldungs include
      Aufrufwewewe.seite.de/blabla.php 
      Wäre das so richtig?

      Kommentar


      • #18
        Hab ich mal getestet, es funktioniert nur irgendwie meine ich das dass nicht richtig ist wie ich das jetzt gemacht habe:

        PHP-Code:
        <?php
        if(empty($_GET['open']))

        $open "";
        }
        else
        {
        $open $_GET['open'];
        }
        switch(
        $open)
        {  
        case 
        "impressum": include("bla/impress"); break;
        case 
        "disclaimer": include("blu/disclaim"); break;
        case 
        "kontakt": include("ble/mailto"); break;
        // Wenn einfach nur die Domain aufgerufen wird, soll die "index"
        // includiert werden.
        case "": include("index"); break;
        // Wenn etwas aufgerufen wird was nicht existiert.
        case include("unknow"); break;
        }
        ?>
        Was ich jetzt nicht verstehe ist die case "": include("index"); break;
        ich kann mir nicht vorstellen dass das richtig ist obwohl es ja funktioniert.
        Weil, oben steht doch $open = ""; normalerweise muss hier
        schon die index includiert werden oder?

        Kommentar


        • #19
          anstatt

          case include("unknow"); break;

          default: include("unknow");

          das wird dann immer aufgerufen, wenn $open
          nicht ""
          nicht "impressum"
          nicht "kontakt" und
          nicht "disclaimer" ist

          nachlesbar hier: http://www.php-resource.de/manual.ph...uctures.switch

          um nochmal auf die dateiendungzurückzukommen:

          passwort.txt
          inhalt:
          $passwort = 1234;

          ausgabe auf bildschirm bei direktaufruf:
          $passwort=1234;

          passwort.php
          gleicher inhalt

          ausgabe bei direktaufruf
          ""

          weil kein echo / print oder sonstiger ausgabebefehl
          nachvollziehbar?

          Kommentar


          • #20
            Original geschrieben von jochenj
            anstatt

            case include("unknow"); break;

            default: include("unknow");

            das wird dann immer aufgerufen, wenn $open
            nicht ""
            nicht "impressum"
            nicht "kontakt" und
            nicht "disclaimer" ist

            nachlesbar hier: http://www.php-resource.de/manual.ph...uctures.switch

            um nochmal auf die dateiendungzurückzukommen:

            passwort.txt
            inhalt:
            $passwort = 1234;

            ausgabe auf bildschirm bei direktaufruf:
            $passwort=1234;

            passwort.php
            gleicher inhalt

            ausgabe bei direktaufruf
            ""

            weil kein echo / print oder sonstiger ausgabebefehl
            nachvollziehbar?
            Ahaaa jo das mit der Endung ist jetzt klar

            Was ich aber noch nicht verstehe ist das Switch, sorry habe sowas noch nie eigensetzt, darum die Fragen.
            Das hat der @mark75 gepostet, ich verstehe jetzt nicht warum das empty da drin ist, ich verstehe den ganzen Block nicht .....

            PHP-Code:
            if(empty($_GET['open']))

            $open "";
            }
            else
            {
            $open $_GET['open'];

            ... weil es so auch geht ohne empty, was soll das empty bewirken?

            PHP-Code:
            <?php
            if($_GET['open'])
            {
            $open $_GET['open'];
            }
            switch(
            $open)
            {
            case 
            "": include("index"); break;  
            case 
            "impressum": include("bla/impress"); break;
            case 
            "disclaimer": include("blu/disclaim"); break;
            case 
            "kontakt": include("ble/mailto"); break;
            default: include(
            "unknow"); break;
            }
            ?>
            Zuletzt geändert von Detonator; 12.03.2004, 20:48.

            Kommentar


            • #21
              PHP-Code:
              //dann setzt doch mal das oben in deinen Scripten ein, oder
              //schalte auf dein Server manuel error_reporimg auf all

              ini_set 'error_reporting'"2047");

              // dann rufe deine Seite mal ohne ?open auf, dann wirst du sehen
              //was passiert.

              //tippe mal auf: Warning: undefinet Variable.... 
              mfg
              marc75

              <Platz für anderes>

              Kommentar


              • #22
                Original geschrieben von marc75
                PHP-Code:
                //dann setzt doch mal das oben in deinen Scripten ein, oder
                //schalte auf dein Server manuel error_reporimg auf all

                ini_set 'error_reporting'"2047");

                // dann rufe deine Seite mal ohne ?open auf, dann wirst du sehen
                //was passiert.

                //tippe mal auf: Warning: undefinet Variable.... 
                Hab ich, es wird anstandslos

                case "": include("bla.inc.php"); break;

                ausgeführt, ohne irgendwelche Fehlermeldung.

                Das Script sieht jetzt so aus:

                PHP-Code:
                switch($_GET['open'])
                {
                case 
                "": include("home.inc.php"); break;  
                case 
                "impressum": include("bla/impressum.inc.php"); break;
                case 
                "disclaimer": include("blu/disclaimer.inc.php"); break;
                case 
                "kontakt": include("bli/mailto.inc.php"); break;
                default: include(
                "unknow.inc.php"); 
                }
                ?> 
                Kann ich also nicht nachvollziehen was Dein Besipiel welches so aussah bringen sollte:

                PHP-Code:
                <?php
                if(empty($_GET['open']))

                $open "";
                }
                else
                {
                $open $_GET['open'];
                }
                switch(
                $open)
                {
                case 
                "": include("home.inc.php"); break;  
                case 
                "impressum": include("bla/impressum.inc.php"); break;
                case 
                "disclaimer": include("intern/disclaimer.inc.php"); break;
                default: include(
                "unknow.inc.php"); 
                }
                ?>

                Kommentar


                • #23
                  in der regel deklariert man variablen, sprich irgendwo schreibt man
                  $variable = inhalt;

                  mit der empty() funktion prüft man ob eine variable einen inhalt hat. sofern nicht im script selbst die variable deklariert wird, prüft man ob die übergaeb erfolgreich war.

                  in deinem fall
                  if (empty($_GET['varibalenname']))
                  {$_GET['variablenname'] = inahlt;}

                  dies dient der fehlerreduktion, sollt mal wirklich das script aufgerufen werden, ohne das deine getvariable einen inhalt hat dann kommt es in der regel zu einer fehlermeldung. In der regel teste ich mit deaktivierten globale variablen -> daher kennt er $_GET['variablenname'] nicht und beendet das script bei den controllstrukturen mit einer fehlermeldung; sinngemäss schreibt er: unbekannte variable - wenn ich das script direkt auffrufe und nicht aus dem formular heraus.

                  wenn es ohne geht ist es natürlich nicht schlecht, falls dein provider die php einstellungen ändert ist es auf jeden fall sinnvoll, sich das anzugewöhnen.

                  und das mit deienr switchanweisung sieht ja auch gut aus

                  Kommentar


                  • #24
                    Hi

                    ich weiß nicht ob ihr mich verstanden habt.
                    Der Code da steckt in der "index.php" welche beim aufrufe meine Domain gestartet wird.
                    Es wird keine Variable mitgeschickt, also führt der Switch das unter
                    case "": .........; break; aus was den Rest der Startseite includiert.

                    Meine Seite wird nicht mit www.domain.de?open=blabla gestartet sondern einfach nur www.domain.de, erst bei den Links greift der switch richtig.
                    Register_Globals sind bei meinem Lokalen Apache auf OFF, immer schon gewesen.
                    Ich habe jetzt einiges an der php.ini verstellt um den Fehler zu erzwingen von dem ihr spricht, keine Chance, welche Einstellung muss ich ändern damit ich das mal testen kann?

                    Kommentar


                    • #25
                      Original geschrieben von Detonator


                      Kann ich also nicht nachvollziehen was Dein Besipiel welches so aussah bringen sollte:

                      Das merkste, wenn du irgendwann mal dein Server/Webanbieter wechseln solltest.

                      Dann brauchste hier aber nicht rumheulen, wenn dein Script dann jede menge Warnhinweise ausgibt.
                      mfg
                      marc75

                      <Platz für anderes>

                      Kommentar

                      Lädt...
                      X