Real Rookie: return Problem

Hi,

ich habe versucht aus Scriptschnipseln und eigenem Code eine E-mail Eingabe für Newsletter zu basteln. Die Ausgabe von -1 für falsch geschriebene Adressen funktioniert auch, leider gibt die Funktion nie 1 aus. Der Rechner lädt die ganze Zeit und hängt sich dann auf.

Weiß jemand warum ?

function check_email($email)
{
 if($email=="email@server.de"||valid_email($email)!=TRUE)
 {
  return -1;
 }
 else
 {
  return 1;
 }
}

function valid_email ($email)
{
   if  (eregi("[1]([-_.]?[0-9a-z])*@0-9a-z*\.[a-wyz]a-z?$", $email, $check))
 {
      if (getmxrr(substr(strstr($email, '@'), 1), $hosts_found))
  {
         return TRUE;
       }
   }
   return FALSE;
}

-----------------------------------
Danke und Grüße

Real Rookie


  1. 0-9a-z ↩︎

  1. Hi,

    return TRUE;
       return FALSE;

    ich bin bei PHP nicht wirklich sicher, wie es sich mit true und false verhält; aber Perl würde hier ganz tüchtig meckern. Schau mal nach, ob das Wort TRUE (ohne Anführungszeichen) tatsächlich ein wahrer und FALSE ein falscher Wert ist.

    Cheatah

    1. Hi,

      return TRUE;
         return FALSE;

      ich bin bei PHP nicht wirklich sicher, wie es sich mit true und false verhält; aber Perl würde hier ganz tüchtig meckern. Schau mal nach, ob das Wort TRUE (ohne Anführungszeichen) tatsächlich ein wahrer und FALSE ein falscher Wert ist.

      Cheatah

      Ja, TRUE oder FALSE ist auch ohne "" ein wahrer oder falscher Wert.
      Trotzdem Danke. Das !=TRUE wird ja auch anerkannt. Bei mail adressen ohne @ oder . gibt es immer das gewünschte Ergebnis aus. Nur das "else" klappt nicht. Wie kann das bloß sein. VERZWEIFLUNG :-[

      Gruss

      Real Rookie

  2. function check_email($email)
    {
    if($email=="email@server.de"||valid_email($email)!=TRUE)
    {
      return -1;
    }
    else
    {
      return 1;
    }
    }

    function valid_email ($email)
    {
       if  (eregi("[1]([-_.]?[0-9a-z])*@0-9a-z*\.[a-wyz]a-z?$", $email, $check))
    {
          if (getmxrr(substr(strstr($email, '@'), 1), $hosts_found))
      {
             return TRUE;
           }

    else {return FALSE; }

    }

    else {

    return FALSE;

    }

    }

    Du hast dich in der zweiten Funktion verhaspelt (vermutlich). Der letzte ausgeführte Befehl war immer "return FALSE;", was natürlich nicht im Sinne des Erfinders ist. Du mußt eine if-else-Abfrage machen, da du den zweiten return-Befehl sonst nicht überspringst. Und damit die innere, zweite if-Abfrage im Fehlerfall auch FALSE zurückgibt, muß auch dort ein else stehen. Sieht zwar dumm aus, ist aber der einfachste Weg.

    - Sven Rautenberg


    1. 0-9a-z ↩︎