Ankündigung

Einklappen
Keine Ankündigung bisher.

Seitenzahl im Gästebuch - Es werden alle Beiträge pro Seite ausgegeben

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von Beitrag aus der Wissenssammlung
    Als Erkenntnis ergibt sich, dass PHP die „umschließende“ Sprache ist, nicht HTML.
    ...
    Der HTML-Inhalt wird zu einem reinen Ausgabetext von PHP, der erst im Browser seine Bedeutung erhält.
    Stell dir vor je nach Eingabe und Verarbeitung brauchst du dann auf einmal zB XML oder ein PDF und kein HTML. Wenn du dann schon mit der HTML Ausgabe begonnen hast ist es zu spät. Der Doctype selbst ist bereits Ausgabe.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #17
      Zitat von hellbringer Beitrag anzeigen

      Du verwendest nicht die Fehlerbehandlungsmethoden von PHP, sondern bastelst eigene.
      Nein. Ich verwende die Fehlerbehandlung von PHP, z.B. beim Checken der DB-Verbindung. Aber den Code hast du noch gar nicht gesehen, weil ich ihn noch nicht gezeigt habe. Aber da, wie auch bei dem "Fehler", daß
      PHP-Code:
      $result mysqli_query($dbcon$StrSQL); 
      FALSE liefert, muß trotzdem dieser Fehler (oder "Fehler" - der entsteht nämlich nur dann, wenn $result verwendet wird, ohne mit
      PHP-Code:
      if ($result === false) { 
      ) abgeprüft zu haben, vgl. FEHLERVERMEIDUNG, s.u.) in "meine Fehler-Codes" übersetzt werden, damit das übrige Programm darauf korrekt reagieren kann. Abgesehen davon sollten Fehler vermieden werden, und nicht einfach nur "abgefangen". Auch "try - catch" verleitet zu einer in diesem Sinne falschen Herangehensweise, was sich ja bereits in der "Wortwahl" der Befehlsschlüsselwörter andeutet. Warum "versuchen", wenn ich vorher bereits feststellen kann, daß der Versuch scheitern wird? Warum abfangen ("catch"), wenn ich vermeiden kann?
      Es ist hier nicht ersichtlich, was "#Fehler99" bedeutet. Sowas ist kryptisch.
      Das ist für dich kryptisch, weil du nicht den ganzen Code und den ganzen Datenbankinhalt siehst. Um zu verstehen, was "#Fehler99" bedeutet, gibt es zwei Möglichkeiten: entweder steht das im Kommentar (und ein fertiges Programm ist gut kommentiert, weil es ja nicht nur "für mich" ist, oder es gibt wiederum eine DB-Tabelle, wo sie alle drin stehen (meine eigenen).

      Davon abgesehen sind nummerierte Variablen auch kryptisch.
      Stimmt auch nicht, vgl. oben sinngemäß.
      In einem Programmcode sollten keine Zahlen vorkommen, die eine "geheime" Bedeutung haben. Sobald man Zahlen irgendwo beschreiben muss um sie zu verstehen, läuft etwas schief.
      Wieder falsch. Entweder stehen sie im Kommentar, oder in einer DB-Tabelle.

      Das führt hier mit dir wie immer zu nichts. Die Antworten von VPh sind da wesentlich weiterführender und hilfreicher.

      Kommentar


      • #18
        Zitat von hellbringer Beitrag anzeigen

        Nein, ist es nicht. Du legst dich damit fix auf eine HTML-Ausgabe fest und alles, was danach passiert, kann dies nicht mehr ändern. Auch kannst du in einem Fehlerfall keinen anderen HTTP-Statuscode mehr senden, da zuvor schon der HTTP-Status 200 (= alles is OK, keine Fehler) gesendet wurde.

        Zum Beispiel wenn ein Datensatz in einer Datenbank nicht gefunden wuide, sollte der HTTP-Status 404 gesendet werden. Dies ist bei deinem Code aber nicht möglich.
        Wieso sollte "HTTP-Status 404" gesendet werden, wenn ich wesentlich adäquater darauf reagieren kann?

        Kommentar


        • #19
          Zitat von Arne Drews Beitrag anzeigen
          Nein, nach dem Doctype wurde bereits eine Ausgabe generiert, das A vom EVA-Prinzip. Die Verarbeitung sollte komplett vorher passieren.
          Das ist neben den Antworten von VPh die erste, konkrete, klare Antwort auf meine Fragen. Ich kann mir zwar immer noch nicht vorstellen, was da "Schlimmes" passieren soll, aber mit der Antwort ist eigentlich klar, daß alle die besagten HTML-Codes, die ich produziere, nach "oben" gehören und "unten" nur noch dieses übrigbleibt und in den Container "content" wandert:
          PHP-Code:
          <div class="content">
                <div class="c_artikel">
          <?php
                  
          echo $StrArtPl_2;
          ?>
                </div> <!-- ende .c_artikel -->
                <div class="c_tabelle">
          <?php
                  
          echo $StrArtPl_3;
          ?>
                </div> <!-- ende .c_Tabelle -->
                <div class="stat_text">
                  <!-- bla -->
                </div> <!-- ende .stat_text -->
              </div> <!-- ende .content -->

          Kommentar


          • #20
            Wieso sollte "HTTP-Status 404" gesendet werden, wenn ich wesentlich adäquater darauf reagieren kann?
            Denk z.B. mal an Suchmaschinen, wenn du denen einen 200 OK Status Code bei einem Fehler zurückgibst, werden Sie deine Fehlermeldung als Seite indexieren. Oder an deine Server Logs, jemand sagt dir es gab ein Fehler, finde mal den passenden Request wenn alle den Status Code 200 OK haben.

            Kommentar


            • #21
              Zitat von Zeichen32 Beitrag anzeigen

              Denk z.B. mal an Suchmaschinen, wenn du denen einen 200 OK Status Code bei einem Fehler zurückgibst, werden Sie deine Fehlermeldung als Seite indexieren. Oder an deine Server Logs, jemand sagt dir es gab einen [Korr. Alf] Fehler, finde mal den passenden Request wenn alle den Status Code 200 OK haben.
              Ein bisschen mehr Drama, wenn ich bitten darf! Das Indexieren bzw. Crawling funktioniert schon ein wenig differenzierter. Und wenn mich einer auf einen Fehler anspricht, dann frage ich: Was war die Fehlermeldung? Und rufe meine Website selbst auf. Und wenn meine Fehlermeldung in freundlichem (und fehlerfreiem) Deutsch (oder bei meinen demnächst mehrsprachig abrufbaren Seiten englisch, italienisch,...) den Benutzer aufgeklärt hat, statt ihm einen "Fehler 404" an den Kopf zu knallen, weis ich ehrlich gesagt nicht, was ich falsch gemacht haben soll...

              Kommentar


              • #22
                [..]den Benutzer aufgeklärt hat, statt ihm einen "Fehler 404" an den Kopf zu knallen, weis ich ehrlich gesagt nicht, was ich falsch gemacht haben soll..
                Man kann auch den korrekten Fehlercode zusammen mit einer HTML Seite ausgeben die den Fehler dem Benutzer verständlich Anzeigt, nur weil ein anderer Status Code wie 200 OK zurückgegeben wird, heißt das nicht das man keine HTML Ausgabe mehr tätigen kann.

                Kommentar


                • #23
                  Zitat von Alf2016 Beitrag anzeigen
                  Nein. Ich verwende die Fehlerbehandlung von PHP, z.B. beim Checken der DB-Verbindung. Aber den Code hast du noch gar nicht gesehen, weil ich ihn noch nicht gezeigt habe. Aber da, wie auch bei dem "Fehler", daß
                  PHP-Code:
                  $result mysqli_query($dbcon$StrSQL); 
                  FALSE liefert, muß trotzdem dieser Fehler (oder "Fehler" - der entsteht nämlich nur dann, wenn $result verwendet wird, ohne mit
                  PHP-Code:
                  if ($result === false) { 
                  ) abgeprüft zu haben, vgl. FEHLERVERMEIDUNG, s.u.) in "meine Fehler-Codes" übersetzt werden, damit das übrige Programm darauf korrekt reagieren kann. Abgesehen davon sollten Fehler vermieden werden, und nicht einfach nur "abgefangen". Auch "try - catch" verleitet zu einer in diesem Sinne falschen Herangehensweise, was sich ja bereits in der "Wortwahl" der Befehlsschlüsselwörter andeutet. Warum "versuchen", wenn ich vorher bereits feststellen kann, daß der Versuch scheitern wird? Warum abfangen ("catch"), wenn ich vermeiden kann?
                  Weil es nun mal der vorgesehene Weg ist und sich so bewährt hat. Warum willst du jetzt was eigenes basteln, statt die Fehlerfunktionen von PHP zu verwenden? Noch dazu hat deine Herangehensweise keinerlei Vorteile, sondern nur Nachteile.

                  Zitat von Alf2016 Beitrag anzeigen
                  Das ist für dich kryptisch, weil du nicht den ganzen Code und den ganzen Datenbankinhalt siehst.
                  RIchtig. Code sollte so geschrieben werden, dass ihn jeder sofort versteht. Das ist bei deinem Code nicht der Fall, somit ist er schlecht.

                  Zitat von Alf2016 Beitrag anzeigen
                  Um zu verstehen, was "#Fehler99" bedeutet, gibt es zwei Möglichkeiten: entweder steht das im Kommentar (und ein fertiges Programm ist gut kommentiert, weil es ja nicht nur "für mich" ist, oder es gibt wiederum eine DB-Tabelle, wo sie alle drin stehen (meine eigenen). Wieder falsch. Entweder stehen sie im Kommentar, oder in einer DB-Tabelle.
                  Man sollte sich bemühen selbstdokumentierten Code zu schreiben, also Code, der von sich aus beschreibt, was er tut bzw. erwartet. Sobald man so Kleinigkeiten kommentieren muss, ist das ein Zeichen von schlechtem Code. Wenn man bei sowas irgendwo anders nachsehen muss, ist es ein Zeichen von schlechtem Code.

                  Zitat von Alf2016 Beitrag anzeigen
                  Das führt hier mit dir wie immer zu nichts. Die Antworten von VPh sind da wesentlich weiterführender und hilfreicher.
                  Ich kann nichts dafür, dass du es nicht verstehen willst.

                  Zitat von Alf2016 Beitrag anzeigen
                  Wieso sollte "HTTP-Status 404" gesendet werden, wenn ich wesentlich adäquater darauf reagieren kann?
                  404 ist die adäquate Reaktion. Du machst es falsch.

                  Zitat von Alf2016 Beitrag anzeigen
                  Ein bisschen mehr Drama, wenn ich bitten darf! Das Indexieren bzw. Crawling funktioniert schon ein wenig differenzierter. Und wenn mich einer auf einen Fehler anspricht, dann frage ich: Was war die Fehlermeldung? Und rufe meine Website selbst auf. Und wenn meine Fehlermeldung in freundlichem (und fehlerfreiem) Deutsch (oder bei meinen demnächst mehrsprachig abrufbaren Seiten englisch, italienisch,...) den Benutzer aufgeklärt hat, statt ihm einen "Fehler 404" an den Kopf zu knallen, weis ich ehrlich gesagt nicht, was ich falsch gemacht haben soll...
                  Der User bekommt von einem 404 überhaupt nichts mit. Mir kommt so vor, dir fehlt da ganz wichtiges Grundlagenwissen über HTTP.

                  Kommentar


                  • #24
                    Zitat von hellbringer Beitrag anzeigen

                    Weil es nun mal der vorgesehene Weg ist und sich so bewährt hat. Warum willst du jetzt was eigenes basteln, statt die Fehlerfunktionen von PHP zu verwenden? Noch dazu hat deine Herangehensweise keinerlei Vorteile, sondern nur Nachteile.



                    RIchtig. Code sollte so geschrieben werden, dass ihn jeder sofort versteht. Das ist bei deinem Code nicht der Fall, somit ist er schlecht.



                    Man sollte sich bemühen selbstdokumentierten Code zu schreiben, also Code, der von sich aus beschreibt, was er tut bzw. erwartet. Sobald man so Kleinigkeiten kommentieren muss, ist das ein Zeichen von schlechtem Code. Wenn man bei sowas irgendwo anders nachsehen muss, ist es ein Zeichen von schlechtem Code.



                    Ich kann nichts dafür, dass du es nicht verstehen willst.



                    404 ist die adäquate Reaktion. Du machst es falsch.



                    Der User bekommt von einem 404 überhaupt nichts mit. Mir kommt so vor, dir fehlt da ganz wichtiges Grundlagenwissen über HTTP.
                    q.e.d.

                    Kommentar


                    • #25
                      Ihr löscht meinen Post? Mein Fluch soll euch treffen!!

                      Kommentar


                      • #26
                        Nun, produktives war damit ja wohl nicht zu erreichen.

                        Ich mache hier mal dicht, der Thread ist wohl soweit erleidgt. Falls noch Bedarf an einer Folgediskussion besteht, kann gerne ein neuer eröffnet werden. Hier ist mal fürs Erste genug.

                        MOD: Geschlossen
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar

                        Lädt...
                        X