return Problem
Real Rookie
- php
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
0-9a-z ↩︎
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
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
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
0-9a-z ↩︎