Christian: die()

Um aus meinem PHP-Code auszusteigen benutze ich die(). Das bricht aber auch meinen HTML-Code ab! Es funtioniert zwar alles.. aber der Quelltext steht ohne die passenden end-tags da.

Gibt es eine bessere Lösung, oder muss ich meine end-tags als string in die()-Funtion schreiben?

  1. Hello,

    Um aus meinem PHP-Code auszusteigen benutze ich die(). Das bricht aber auch meinen HTML-Code ab! Es funtioniert zwar alles.. aber der Quelltext steht ohne die passenden end-tags da.

    die() ist nicht geeignet, in komplexen Systemen genutzt zuwerden, bei denen der User nicht mit dem Fehler behelligt werden soll. Die89 dient mMn nur der Entwicklung einer Lösung bzw. im absoluten "Notfall".

    Um eine vernünftige Lösung zu bauen, müsstest Du schon einen Plan machen, was wann passieren kann und muss, und dann entsprechende Funktionen erstellen.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Verstehe.

      Aber gibt es keine einfache Alternative?

      Ich möchte bei meinen Script, wenn ein bestimmter Fall zutrifft, nichts weiter machen sondern nur einen String ausgeben und aussteigen.

      1. echo $begrüßung;

        Aber gibt es keine einfache Alternative?
        Ich möchte bei meinen Script, wenn ein bestimmter Fall zutrifft, nichts weiter machen sondern nur einen String ausgeben und aussteigen.

        Nein, das möchtest du nicht, da ja dann, wie du bemerkt hast, der Rest des Scripts nicht abgearbeitet wird. Fehlerbehandlung ist manchmal umfangreicher als die eigentliche Aufgabe.

        Normalerweise weiß eine Teilaufgabe nicht, was global gesehen die richtige Reaktion auf einen Fehler ist. Sie kann aber das Auftreten eines Fehlers an die aufrufende Stelle weiterleiten und dieser dann die geeignete Reaktion überlassen.

        So könnte das beispielhaft aussehen:

        <html>
        <head>
        <title>Fehlerbehandlung</title>
        </head>
        <body>
        <?php

        function foo() {
          // machwas...
          if fehleraufgetreten
            return false;
          else
            return $ergebnis;
        }

        $ergebnis_von_foo = foo();
        if ($ergebnis_von_foo)
          echo "<p>$ergebnis_von_foo</p>";
        else
          echo '<p>Fehler aufgetreten</p>';

        ?>
        </body>
        </html>

        echo "$verabschiedung $name";

      2. Hi,

        Aber gibt es keine einfache Alternative?

        Ich möchte bei meinen Script, wenn ein bestimmter Fall zutrifft, nichts weiter machen sondern nur einen String ausgeben und aussteigen.

        Du koenntest dir selbst eine Funktion schreiben, die mit echo eine Fehlermeldung ausgibt und die Tags abschliesst und anschliessend mit exit das laufende Script beendet. Wenn noetig kannst du dir auch noch eine Fehlerbeschreibung in ein Logfile schreiben lassen.
        Diese Funktion rufst du dann statt die auf.

        mfG,
        steckl

      3. Hallo,

        Ich möchte bei meinen Script, wenn ein bestimmter Fall zutrifft, nichts weiter machen sondern nur einen String ausgeben und aussteigen.

        Wenn Du PHP und HTML nicht zusehr vermischt hast, sondern alle grundlegenden PHP-Anweisungen vor der HTML-Ausgabe stehen, kannst Du ja eine komplette Fehlerseite ausgeben:

          
        <?php  
        define('ERROR','<!DOCTYPE ...><html><body><p>Fehlermeldung...</p></body></html>');  
          
        // php...  
          
        // wenn fehler:  
        die(ERROR);  
          
        // HTML:  
        ?><!DOCTYPE ...>  
        <html>  
        <body>  
        <?php echo $ausgabe; ?>  
        </body>  
        </html>  
        
        

        Alex

  2. Hallo,

    Gibt es eine bessere Lösung, oder muss ich meine end-tags als string in die()-Funtion schreiben?

    Ich stand selber mal vor so einem Problem und habe dann ganz einfach einen Text als String-Variable gespeichert ($ende = "Es trat ein Fehler auf!</div></body></html>"; die($ende)) und das Ergebnis funktioniert.
    Grüße,
    Willi

    1. Ich grüsse den Cosmos,

      Ich stand selber mal vor so einem Problem und habe dann ganz einfach einen Text als String-Variable gespeichert ($ende = "Es trat ein Fehler auf!</div></body></html>"; die($ende)) und das Ergebnis funktioniert.

      Das diese Lösung Lichtjahre von einer anständigen Fehlerbehandlung ist, sollte dabei aber erwähnt werden.

      Möge das "Self" mit euch sein

      --
      Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
      ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
      1. Hallo,

        Ich stand selber mal vor so einem Problem und habe dann ganz einfach einen Text als String-Variable gespeichert ($ende = "Es trat ein Fehler auf!</div></body></html>"; die($ende)) und das Ergebnis funktioniert.

        Das diese Lösung Lichtjahre von einer anständigen Fehlerbehandlung ist, sollte dabei aber erwähnt werden.

        Ja, ist mir auch klar, vielleicht ändere ich das noch. Abger ich habe es nur dazu benutzt bei einem Logout das Script abzubrechen und einen Link auf die Homepage zu setzen.
        Grüße,
        Willi