Erri: Problem mit Rückgabewert einer Funktion - return true

Guten Morgen an alle hier im Forum,

ich benutzte folgende PHP-Funktion, welche eine automatische E-Mail an mich versendet, wenn ein (Datenbank)-Fehler auf meiner Webseite auftritt.

  
function db_error_mail($error_message, $locid){  
 $mail_subject = 'Fehler auf '. DOMAINNAME . ' - '. $locid;  
 $mail_message = 'Zusaetzlicher Text... :'."\n\n" . $error_message;  
  
  if(!session_is_registered('web_error') || $_SESSION['web_error'] != "mailok"){  
    if(mail(MAIL_WEBMASTER, $mail_subject, $mail_message, "From: ".CMS_AUTOMAIL)){  
      session_register('web_error');  
      $_SESSION['web_error'] = "mailok";  
      return true;  
    }  
  }  
}  

Das Problem dabei ist, dass diese Funktion kein "true" mehr zurück gibt, seit dem ich...
  - session_register('img4u_error');
  - $_SESSION['img4u_error'] = "mailok";
...in die Funktion aufgenommen habe. Die E-Mail wird dabei aber versendet und der Sessionwert wird ebenfalls gesetzt - Natürlich beim ersten Seitenaufruf, solange die Session noch nicht registriert ist.

Kann mir jemand sagen, woran es liegt, dass diese Funktion kein "true" mehr zurück gibt?

Noch etwas:
Die Session-Funktion verwende ich, um zu vermeiden, dass die E-Mail durch Reload der Seite erneut gesendet wird.

Viele Grüße, Vielen Dank und ein schönes Wochenende
Erri

  1. n'abend,

    Guten Morgen an alle hier im Forum,

    ich benutzte folgende PHP-Funktion, welche eine automatische E-Mail an mich versendet, wenn ein (Datenbank)-Fehler auf meiner Webseite auftritt.

    function db_error_mail($error_message, $locid){
    $mail_subject = 'Fehler auf '. DOMAINNAME . ' - '. $locid;
    $mail_message = 'Zusaetzlicher Text... :'."\n\n" . $error_message;

    if(!session_is_registered('web_error') || $_SESSION['web_error'] != "mailok"){
        if(mail(MAIL_WEBMASTER, $mail_subject, $mail_message, "From: ".CMS_AUTOMAIL)){
          session_register('web_error');
          $_SESSION['web_error'] = "mailok";
          return true;
        }
      }
    }

    
    >   
    > Das Problem dabei ist, dass diese Funktion kein "true" mehr zurück gibt, seit dem ich...  
    >   - `session_register('img4u_error');`{:.language-php}  
    >   - `$_SESSION['img4u_error'] = "mailok";`{:.language-php}  
    > ...in die Funktion aufgenommen habe. Die E-Mail wird dabei aber versendet und der Sessionwert wird ebenfalls gesetzt - Natürlich beim ersten Seitenaufruf, solange die Session noch nicht registriert ist.  
    >   
    > Kann mir jemand sagen, woran es liegt, dass diese Funktion kein "true" mehr zurück gibt?  
    >   
    > Noch etwas:  
    > Die Session-Funktion verwende ich, um zu vermeiden, dass die E-Mail durch Reload der Seite erneut gesendet wird.  
      
    ohne dein Problem lösen zu können, folgendes:  
      
    wenn eine funktion eine rückgabe macht, dann sollte sie auf jeden fall eine rückgabe machen. also egal was innerhalb der funktion passiert, wenn in irgendeinem if ein return true passiert, sollten die anderen möglichkeiten auch was returnen (in dem fall wohl false...) also:  
      
    ~~~php
      
    
    > function db_error_mail($error_message, $locid){  
    
      $mail_subject = 'Fehler auf '. DOMAINNAME . ' - '. $locid;  
      $mail_message = 'Zusaetzlicher Text... :'."\n\n" . $error_message;  
      
       if(!session_is_registered('web_error') || $_SESSION['web_error'] != "mailok"){  
         if(mail(MAIL_WEBMASTER, $mail_subject, $mail_message, "From: ".CMS_AUTOMAIL)){  
           session_register('web_error');  
           $_SESSION['web_error'] = "mailok";  
           return true;  
         }  
       }  
       return false; // wichtig, sonst wird ja gar nix zurückgegeben und du vertraust drauf, dass php da deine fehler automagisch korrigiert.  
    }  
    
    

    um die der session bislang unbekannte variable $_SESSION['web_error'] mit irgendeinem wert füllen zu dürfen brauchst du kein session_register(..gedöns..).. $_SESSION['web_error'] = "mailok"; registriert die variable/wert automatisch. statt session_is_registered() kannst du auch isset() benutzen. spart beides jeweils unnötigen code.

    ansonsten kann ich da leider keinen fehler erkennen, der dazu führen würde, dass die variable registriert wird, aber kein true zurückgegeben wird...

    weiterhin schönen abend...

    --
    wer braucht schon großbuchstaben?
    sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|