Ankündigung

Einklappen
Keine Ankündigung bisher.

@ Fehlerunterdrückung bei $_GET Variablen und set_error_handler

Einklappen

Neue Werbung 2019

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

  • @ Fehlerunterdrückung bei $_GET Variablen und set_error_handler

    Hi Community !

    Bin grad dabei mich ums Error Handling meiner PHP Engine zu kümmern.

    Hab zwar gelesen das Klammeraffen im Code nicht professionell sind aber trotzdem kennen ich einen guten Grund um sie anzuwenden.
    Und zwar bei nicht immer definierten $_GET Variablen um ein ständiges if(isset zu vermeiden.

    PHP-Code:
    $test = @$_GET['test']; 
    statt

    PHP-Code:
    if(isset($_GET['test']))
        
    $test $_GET['test'];
    else
        
    $test ''
    Das Problem:
    Seit dem ich den set_error_handler anwende werden Fehler mit @ Zeichen vor dem Code im handler angezeigt.
    Was natürlich unpraktisch ist weil ich alle Fehler loggen will wenn sie vorkommen.

    Was kann man da tun ?

    greetz,
    silec

  • #2
    Seit php 7 gibt's auch den ??-Operator:

    Statt
    PHP-Code:
    if(isset($_GET['test']))
        
    $test $_GET['test'];
    else
        
    $test ''
    kann man dann einfach:
    PHP-Code:
    $test $_GET['test'] ?? ''
    machen.

    Grüße.

    Kommentar


    • #3
      Danke für die schnelle Antwort.
      Nette Sache !
      Leider zerbrezelt dieser Operator in meinem veralteten Espresso das Code Highlighting.
      Gibt es keine Methode dem set_error_handler zu sagen er soll das @ nicht ignorieren ?

      Kommentar


      • #4
        Zitat von silec Beitrag anzeigen
        aber trotzdem kennen ich einen guten Grund um sie anzuwenden.
        Das ist alles, aber kein guter Grund.

        Zitat von silec Beitrag anzeigen
        Leider zerbrezelt dieser Operator in meinem veralteten Espresso das Code Highlighting.
        Auch das ist kein Grund für eine unsaubere Programmierung.


        Kommentar


        • #5
          Zitat von silec Beitrag anzeigen
          Hab zwar gelesen das Klammeraffen im Code nicht professionell sind aber trotzdem kennen ich einen guten Grund um sie anzuwenden.
          Und zwar bei nicht immer definierten $_GET Variablen um ein ständiges if(isset zu vermeiden.
          Nein, das ist kein Grund. Programmiere einfach sauber und lass die schmutzigen Hacks.

          Als weitere Alternative sollte man noch php_input_filter() nennen.

          Kommentar


          • #6
            Ich versteh nicht warum die Mehrheit die PHP Entwickler für Idioten halten und manche Funktionen (in jedem Fall) verteufeln.
            Als würden die PHP Entwickler Funktionen einbauen die einem bei Benutzung AUTOMATISCH ins Bein schießen.
            Das Ergebnis von

            PHP-Code:
            $test = @$_GET['test']; 
            und

            PHP-Code:
            if(isset($_GET['test']))
                
            $test $_GET['test'];
            else
                
            $test ''
            ist ident. Bis darauf das der error handler die @ nicht wahrnimmt.
            Und das da irgendein anderer Fehler entstehen könnte ist für mich nicht denkbar.
            Also suche ich noch immer nach einem Befehl dem Error Handler zu sagen die @´s zu beachten.

            Kommentar


            • #7
              Zitat von silec Beitrag anzeigen
              Als würden die PHP Entwickler Funktionen einbauen die einem bei Benutzung AUTOMATISCH ins Bein schießen.
              Ja, das tun sie immer wieder. Siehe z.B. das Magic Quotes Desaster, das inzwischen endlich wieder entfernt wurde.


              Zitat von silec Beitrag anzeigen
              Das Ergebnis von

              PHP-Code:
              $test = @$_GET['test']; 
              und

              PHP-Code:
              if(isset($_GET['test']))
              $test $_GET['test'];
              else
              $test ''
              ist ident.
              Nein, ist es nicht.

              Zitat von silec Beitrag anzeigen
              Und das da irgendein anderer Fehler entstehen könnte ist für mich nicht denkbar.
              Aha, also wenn etwas für dich nicht denkbar ist, dann kann es nicht existieren?

              Zitat von silec Beitrag anzeigen
              Also suche ich noch immer nach einem Befehl dem Error Handler zu sagen die @´s zu beachten.
              Das ist dein eigenes Problem, das du dir künstlich erzeugt hast. Programmiere sauber, dann hast du auch keine Probleme.

              Kommentar


              • #8
                hellbringer

                http://php.net/manual/de/language.op...rorcontrol.php :

                There is no reason to NOT use something just because "it can be misused". You could as well say "unlink is evil, you can delete files with it so don't ever use unlink".

                It's a valid point that the @ operator hides all errors - so my rule of thumb is: use it only if you're aware of all possible errors your expression can throw AND you consider all of them irrelevant.

                A simple example is
                <?php

                $x = @$a["name"];

                ?>
                There are only 2 possible problems here: a missing variable or a missing index. If you're sure you're fine with both cases, you're good to go. And again: suppressing errors is not a crime. Not knowing when it's safe to suppress them is definitely worse.


                Wenn man unfähig ist Variablen richtig zu schreiben sollte man @ wohl nicht vor Variablen stellen.

                Kommentar


                • #9
                  https://stackoverflow.com/questions/...-error-handler

                  für PHP 7:
                  Im Error Handler überprüfen ob error_reporting() != 0 ist

                  PHP-Code:
                  if(error_reporting()!=0

                  Kommentar


                  • #10
                    Mach das, was in deinem geposteten Link steht: Vermeide @.

                    Kommentar


                    • #11
                      Hellbringer bitte unterlasse es auf meine Topics zu posten.

                      Kommentar


                      • #12
                        Zitat von silec Beitrag anzeigen
                        Hellbringer bitte unterlasse es auf meine Topics zu posten.

                        hellbringer, du böser, böser User. Du kannst doch nicht einfach schreiben, dass silec unsauber programmiert und das ändern soll. Also ehrlich, das geht ja mal garnicht.

                        Kommentar


                        • #13
                          Hellbringer hat mir schon auf php-forum.de die Laune verdorben. Deshalb habe ich mich hier angemeldet.
                          Und ausserdem brauche ich von niemandem die Hilfe der "die Hölle bringt"

                          Kommentar


                          • #14
                            Laune hin oder her. Seine Anmerkungen sind korrekt, gerechtfertigt und auch wichtig. Für die Anfänger die hier mitlesen soll nicht der Eindruck entstehen dass die Verwendung des @-Operators eine gute Idee ist - unabhängig davon ob du ihn trotzdem verwendest. Das ist nämlich nicht "dein" Topic sondern eine frei zugängliche Ressource die u.U. Einfluss auf die Entscheidungen anderer nimmt.

                            Kommentar


                            • #15
                              silec

                              ein Vorschlag zur Güte:

                              bau dir eine Function, bspw.:

                              PHP-Code:
                              $test checkGet('test'); 

                              Kommentar

                              Lädt...
                              X