Explode um E-Mailadresse zu testen[UPDATE]

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

ok, danke
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

Ehm, ich hänge hier jetzt, meine Augen tuen schon weh, und kann den Fehler irgendwie nichteinmal ausgrenzen:

Code: Alles auswählen

ERROR_REPORTING(E_ALL);
// E-Mailadess

$Mail = "witzigerkiller@aol.com";

// Mail will explode
$mail_check_at = explode("@",$Mail);
$mail_check_dot = explode(".",$mail_check_at[1]);

// query mailadress
if (mail_check_length($mail_check_at,$mail_check_dot) == true)
{
  echo "richtig";
}
else
{
  echo "falsch";
}

// function to check the length of the mail
function mail_check_length($mail_check_at,$mail_check_dot)
{
  if ($mail_check_at[0] >=2 && $mail_check_dot[0] >=3 && $mail_check_dot[1] >=2)
  {
    return true;
  }
  else
  {
    return false;
  }
}
wäre net wenn sich das einer anschauen könnte.

Ps. Es wird immer falsch ausgegeben, also bei der funktion immer false zurückgegeben.

Danke

EDIT: strlen(); nicht eingebaut gehabt beim if
Zuletzt geändert von witzigerkiller am 10.02.2006 23:42, insgesamt 1-mal geändert.
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

UPDATE

So, nun habe ich es ein wenig ausgebaut, das schöne scriptchen....

Wie findet ihr es? was würdet ihr verbessern, bzw. ergänzen?

97 Zeilen Code für eine E-Mail *lol* bissl viel

Code: Alles auswählen

<?PHP
//
//  Time of beginning loading this page
//
$starttime = microtime();

ERROR_REPORTING(E_ALL);

//
// mailadress
//
$Mail = "asasa@sasas-swssas.coop";   // Wenn dann hier &auml;ndern

function mail_valide(&$Mail)
{
  //
  // function to check the length of the mail
  //
  function mail_check_length($mail_check_at,$mail_check_dot)
  {
    if (strlen($mail_check_at[0]) >=2 && strlen($mail_check_dot[0]) >=3 &&  
        strlen($mail_check_dot[1]) >=2)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  
  //
  // function to check the ending of the mail
  //
  function mail_check_ending($mail_check_dot)
  {  
    $check_ending = array(
    "de",
    "aero",
    "arpa",
    "biz",
    "com",
    "coop",
    "edu",
    "gov",
    "info",
    "int",
    "jobs",
    "mil",
    "mobi",
    "museum",
    "name",
    "net",
    "org",
    "pro",
    "travel");
  
    $in_array = FALSE; 
  
    foreach ($check_ending as $mail_check)
    {
      if ($mail_check == $mail_check_dot[1])
      {
        $in_array = TRUE;
        break;
      }
    }
    return $in_array;
  }
  
  //
  // Mail will explode
  //
  @$mail_check_at = explode("@",$Mail);
  @$mail_check_dot = explode(".",$mail_check_at[1]);

  //
  // query mailadress
  //
  if (@mail_check_length($mail_check_at,$mail_check_dot) == true &&  
      @mail_check_ending($mail_check_dot) == true)
  {
    echo "Deine E-Mailadresse ist eine korrekte E-Mail";
  }
  else
  {
    echo "Deine E-Mailadresse ist eine inkorrekte E-Mail";
  }
}
mail_valide($Mail);

//
//  output time generation
//
$time = microtime() - $starttime;
echo "<br /><br />Die E-Mail&uuml;berpr&uuml;fung dauerte <b>".$time."</b> Sekunden";
?>
Weis evtl. jemand wie der befehl heißt, damit ich die Sekunden, was sie jetzt noch net sind, aufrunden kann?

Danke
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag von MagMo »

Hi,

ich würde folgendes ändern:
Ersetze den Befehl microtime() durch den Befehl time(). Dann brauchst du auch nichts aufrunden. [Der Befehl zum Aufrunden: ceil()]

Dir ist schon klar, das Leute mit einer Email-Adresse aus Österreich, der Schweiz und 1000 anderen Ländern nach deinem Skript eine ungültige Email-Adresse haben. :lol: Mit einer Email-Adresse von einer aero- oder museum-Domain hat man hingegen keine Probleme. :o
Ich kenne keinen mit einer museum-Domain-Email-Adresse, dafür genug mit einer aus Österreich etc. Interessant, dass es bei dir andersherum zu sein scheint. Hätte nicht gedacht, dass es das gibt. :D

Es soll auch Email-Adressen von Subdomains geben. Die sind (fast) egal von welcher Domain bei deiner Überprüfung ungültig. fritz.mueller(at)fritz.mueller.com.au hat keine Chance deine Überprüfung zu überstehen, obwohl es eine gültige Adresse ist.

Die Bedingung strlen($mail_check_dot[0]) >=3 muss für de-Domains erfüllt sein. com-Domains können auch eine Länge von nur 2 Zeichen haben.

Das reicht jetzt, weiter prüfe ich das jetzt nicht.

In dem Skript musst du noch einiges überarbeiten. Aber aller Anfang ist schwer. :wink:

Grüße
MagMo
Benutzeravatar
witzigerkiller
Gesperrt
Beiträge: 878
Registriert: 05.02.2005 13:27
Wohnort: Sonthofen

Beitrag von witzigerkiller »

ok, hmmm. das hört sich an, als habe ich noch sehr viel zu tun
Bitte keine Anfragen mehr per PN
When you get me on my nerven I put you in the Gully and do the Deckel drüf and you never will come back to the Tageslicht.
Antworten

Zurück zu „Coding & Technik“