Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Allgemeine Frage

Einklappen

Neue Werbung 2019

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

  • #31
    @robydog: In welcher Sprace proggst Du denn? echo: , keine $ in den Variablennamen...

    Kleiner Exkurs:

    Es gibt mehrere Möglichkeiten, eine Bedingung zu verarbeiten.

    Klassisch:
    PHP-Code:
    if ($bedingung) {
      
    // positiv Zweig
      
    }
    else {
      
    // negativ Zweig
      

    Wächter statt Verschachtelung:
    PHP-Code:
    if ($bedingung) {
      
    // positiv Zweig
      // Abbruchstatement
      
    }
     
    // negativ Zweig 
    Dieses Beispiel funktioniert nur mit einem Abbruchstatement, z.B.: break bzw. continue aus einer Schleife, return aus einer Funktion, Methode oder einer include Datei, Scriptabbruch mit exit oder die.

    Informationen findest Du auch hier: FAQ der Newsgroups de.comp.lang.php.* - 27.1.*Halte Code links. Verwende Wächter statt Schachtel-if

    2. Exkurs:

    msyql_real_escape_string ist nicht irgendein magisches Ding, dass vor SQL Injection schützt, sondern dient einzig dazu, in einem String Hochkommata und ähnlichen Zeichen ein Escapezeichen voranzustellen. Ähnlich wie addslashes, allerdings Darenbank-abhängig.
    Wenn Du darüber nachdenkst, merkst Du, dass eine solche Funktionalität hier nicht die Sicherheit erhöhen kann.


    Zurück zum Thema:

    Kleines Bsp.
    Deine Anwendung hat 2 Seiten page1.php und page2.php, Dazu eine error.php und den Controller in index.php. Statt die einzelnen Seiten aufzurufen, rufst Du immer index.php auf, welche wiederum die jeweilige Seite per include einbindet. Bei ungültigen Aufrufen wird error.php eingebunden.
    Wichtig: Die einzelnen Seiten geben die Inhalte nicht direkt aus, sondern liefern sie an die index.php zurück. Dort können Sie bspw. einheitlich verarbeitet und formatiert werden. Schließlich folgt die Ausgabe.

    index.php

    PHP-Code:
    // Schlüssel für den GET Parameter
    $key 'page';

    $pages = array (
             
    'start'     => 'page1.php' 
             
    'impressum' => 'page2.php' 
             
    'default'   => 'page1.php' 
             
    'error'     => 'error.php');

    if (empty (
    $_GET[$key])) {
      
    // kein oder leerer Parameter angegeben
      // nutze Standardwert
      
    $open 'default';
      }
    else {
      
    // prüft Existenz im Seiten Setting, bei Fehlen wird der error Eintrag genutzt
      
    $open = (false === array_key_exists ($open $pages))
                    ? 
    'error'
                    
    strtolower ($_GET[$key]);
      }

    // Aufruf der Sub Datei, diese muß den Inhalt per return zurückgeben
    // hier könnte auch eine Funktion aufgerufen oder der output Buffer verwendet werden
    $content = include ($pages[$open]);

    // verarbeite $content

    // Ausgabe (vereinfacht)
    echo '<html><body>';
    echo 
    $content;
    echo 
    '</body></html>'
    Ich nutze bewußt ein assoz. Array, um die Seiten von den Aufrufen unabhängig zu machen. So könnte man bspw. den Eintrag 'home' => 'page1.php' ergänzen und hätte damit ein Alias für die Startseite. Das gleiche Prinzip nutzt der default Eintrag, der für nicht angegebene Parameter auf die Startseite verweist.
    Die Array-Schlüssel bestehen nur aus Kleinbuchstaben, so kann ich den Get Parameter mit strtolower behandeln und bin beim Seitenaufruf unabhängig von der Schreibweise.

    Momentan erwartet der Controller eine Angabe der Art index.php?page=Start
    Das Sahnehäubchen ist noch die Verwendung von mod_rewrite, mit dem Du Angaben wie Start.html oder Impressum.html auf den Controller umleiten kannst. Die entsprechenden html Dateien müssen dafür gar nicht existieren, sie werden vor Abarbeiten der php Dateien in die Angabe index.php?page=Start bzw. index.php?page=Impressum umgewandelt.
    Aber das ist einen anderen Thread wert...

    [edit]

    Nachdem ich schon öfter hierauf verwiesen habe, fällt mir gerade ein Logikfehler auf.

    Korrektur:

    PHP-Code:
    if (empty ($_GET[$key])) {
      
    // kein oder leerer Parameter angegeben
      // nutze Standardwert
      
    $open 'default';
    }
    else {
      
    $open strtolower ($_GET[$key]);

      
    // prüft Existenz im Seiten Setting, bei Fehlen wird der error Eintrag genutzt
      
    if (false === array_key_exists ($open $pages))
        
    $open 'error';
      }

    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #32
      Zitat von Manko10 Beitrag anzeigen
      Nehmen wir das Beispiel von nikosch:
      PHP-Code:
      include ('pfad/' $_GET['view'] . '.php'); 
      Das sollte man jetzt sicherer gestalten.
      Zuerst erstellt man ein Array mit allen gültigen Dateinamen (in diesem Falle ohne Endung, da die ja nicht in $_GET['view'] enthalten ist) und prüfen die Eingabe dann gegen dieses.
      PHP-Code:
      $valid_paths = array (
          
      'index',
          
      'imprint',
          
      'login',
          
      'news'
      );

      if (
      in_array($_GET['view'], $valid_paths) === false) {
          exit(
      'Falscher Parameter!');
      }

      include 
      'pfad/' $_GET['view'] . '.php'

      Wäre es möglich anstelle von exit Falscher Parameter auf eine Seite umzuleiten. Sprich wenn was falsches eingegeben wird dass man automatisch wieder auf die index seite kommt?

      Wenn ja wie geht das?

      Kommentar


      • #33
        Warum sollte es nicht möglich sein?
        Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

        Kommentar


        • #34
          Weiss auch nicht?

          Dann weisst du ja bestimmt wie und kannst mir weiter helfen?

          geht das mit Location:HEader?

          Kommentar


          • #35
            Umgekehrt:

            header('Location:http://example.com');
            Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

            Kommentar


            • #36
              kann es denn nicht sein dass ich irgendwann mal probleme bekomme mit headers already sent?

              Kommentar


              • #37
                Nur wenn du vorher schon eine Ausgabe gemacht hast.
                Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                Kommentar


                • #38
                  Diese Probleme damit bekommst du nur wenn du vor der header Sache Asugaben erzeugst! PHP Code kannst du beliebig vielen vorher machen nur eben es darf nichts mit echo oder print ausgegeben werden!

                  Edit
                  da war der Mako10 schneler wie ich
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  [URL]http://www.lit-web.de[/URL]

                  Kommentar


                  • #39
                    Ich wüßte nicht, warum man hier überhaupt mit header Weiterleitung arbeiten sollte. Eine Fehler/Standard-Seite kann (wie oben beschrieben) doch ein ganz reguläres Include sein. Warum sollte das extra behandelt werden? Passt sich doch so viel besser ins Seiten Layout ein.
                    Allenfalls für die Suchmaschinen kann man ja trotzdem nen Header setzen
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #40
                      naja dann kann ich auch include index.php machen

                      Kommentar


                      • #41
                        Wie jetzt? Auf der Fehlerseite oder wo?
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar

                        Lädt...
                        X