Ankündigung

Einklappen
Keine Ankündigung bisher.

"Notice" wird trotz verwendung von @ angezeigt.

Einklappen

Neue Werbung 2019

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

  • "Notice" wird trotz verwendung von @ angezeigt.

    Hallo,

    ich verwende die imap_open() Funktion. Wenn etwas an den Zugangsdaten nicht stimmt, dann wird etwa folgende Ausgabe erzeugt:

    Warning: imap_open(): Couldn't open stream [...]
    Notice: Unknown: Retrying CRAM-MD5 authentication after permission denied (errflg=1) in Unknown on line 0
    Notice: Unknown: Can not authenticate to IMAP server: [CLOSED] IMAP connection broken (authenticate) (errflg=2) in Unknown on line 0

    Wenn ich ein @ vor den Funktionsaufruf schreibe, dann verschwindet das "Warning", aber die "Notice" Meldungen bleiben.

    Ich möchte aber gerne, dass gar keine Meldung erscheint, wenn bei der Ausführung von imap_open() etwas nicht funktioniert hat. Allerdings möchte ich nicht generell die Generierung von "Notice" Meldungen unterdrücken, sondern nur für diese eine Funktion.

    Ich würde mich sehr freuen, wenn mir jemand weiterhelfen kann.

    Vielen Dank und mit freundlichen Grüßen,

    Manuchau


  • #2
    Du könntest z.B. vor den Funktionsaufruf per error_reporting() die Anzeige von Notice unterdrücken.
    danach kannst du sie dann wieder mit der gleichen funktion freigeben.

    Kommentar


    • #3
      Hey, das ist eine gute Idee. Die nehm' ich

      Vielen Dank Nendrew

      Kommentar


      • #4
        Tja, ich war mir auch sicher, dass das so gehen muss. Seltsamerweise werden immernoch notice Meldungen ausgegeben. Ich wäre dankbar, wenn wir folgende Funktion betrachten könnten:

        PHP-Code:
        <?php
        function imap_test($benutzer$pass$server$mailbox)
        {
            
        $server_mailbox "{" $server "/notls}$mailbox";
            
        error_reporting(0);
            
        $inbox imap_open($server_mailbox$benutzer$pass);
            
        error_reporting(E_ALL);
            return 
        0;
        }
        ?>
        Wenn ich diese Funktion mit korrekten Parametern aufrufe, dann wird keine einzige Meldung ausgegeben. Das soll auch so sein.
        Übergebe ich allerdings dieser Funktion ein falsches Passwort, dann wird folgendes ausgegben:

        Notice: Unknown: Retrying CRAM-MD5 authentication after permission denied (errflg=1) in Unknown on line 0

        Notice: Unknown: Can not authenticate to IMAP server: [CLOSED] IMAP connection broken (authenticate) (errflg=2) in Unknown on line 0

        Das verstehe ich nicht. Ich hatte gehofft, dass wegen der Anweisung error_reporting(0); keine Meldungen ausgegeben werden.

        Wenn ich in der Funktion oben die Zeile error_reporting(E_ALL); auskommentiere und wieder ein falsches Passwort übergebe, wird keine Meldung ausgegeben.
        Das wiederum ist klar. Aber wie schon gesagt will ich ja im weiteren Verlauf des Programms wieder "Notice" Meldungen sehen und daher brauche
        ich die error_reporting(E_ALL); Anweisung.

        Hat jemand noch eine Idee und/oder kann dieses Verhalten erklären?

        Schönen Dank und mit freundlichen Grüßen,

        Manuchau

        Kommentar


        • #5
          eine weiter möglichkeit wäre, dass du die Ausgabe pufferst und somit ganz einfach die Ausgabe verwirfst...
          PHP-Code:
          <?php
          ob_start
          ()
          imap_open(...)
          ob_end_clean()
          ?>
          Nachzulesen hier: ob_start()

          Kommentar


          • #6
            Reicht es nicht aus, wenn du als 4. Parameter die Option OP_SILENT angibst?
            OP_SILENT - Don't pass up events (internal use)
            http://www.php.net/imap_open

            Kommentar


            • #7
              xabbuh und Nendrew,

              vielen Dank für eure Antworten.

              Interessanterweise erzeugt die Funktion

              PHP-Code:
              function imap_test($benutzer$pass$server$mailbox)
              {
                  
              $server_mailbox "{" $server "/notls}$mailbox";
                  
              error_reporting(0);
                  
              ob_start();
                  
              $inbox imap_open($server_mailbox$benutzer$pass);
                  
              ob_end_clean();
                  
              error_reporting(E_ALL);
                  return 
              0;

              ebenfalls zwei Notice Meldungen bei Verwendung von einem falschen
              Passwort.

              Obwohl die Sache mit OP_SILENT, also die Verwendung der Zeile
              $inbox = imap_open($server_mailbox, $benutzer, $pass, OP_SILENT);
              auch nicht funktioniert hat, wäre ich ohne deine Antwort nicht auf eine Lösung gekommen xabbuh. Bei der Suche danach, was OP_SILENT genau
              macht, bin ich auf die Funktion imap_errors()
              gekommen. Folgende Funktion gibt auf bei einem falschen Passwort
              keine Notice Meldung mehr aus:

              PHP-Code:
              function imap_test($benutzer$pass$server$mailbox)
              {
                  
              $server_mailbox "{" $server "/notls}$mailbox";
                  
              error_reporting(0);
                  
              $inbox imap_open($server_mailbox$benutzer$passOP_SILENT);
                  
              imap_errors();
                  
              error_reporting(E_ALL);
                  return 
              0;

              Die imap_errors() Funktion sammelt also alle Meldungen ein.

              Vielen Dank für eure Hife!

              Schönes Wochenende wünsche ich

              Manuchau

              Kommentar

              Lädt...
              X