Ik heb op m'n website een php script staan voor een mailformulier.
In dat mailformulier zit een code die controleerd of het email adres correct is.
Het werkt niet helemaal goed, maar ik ko0m er maar niet achter waar de fout zit.
Wie heeft de oplossing ?
Hieronder het hele script.

<?
ob_start(); // Voor Cookie setten

// Headers zetten zodat de de inhoud niet word gecashed
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

// Config Gedeelte
$site = "http://www.deklusbus.nl/eindemail.html";; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$wm_naam = "Michel"; // Webmaster naam
$wm_email = "[email protected]"; // Webmaster E-mail
$Anti_Spam = "0"; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$fout_text = TRUE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$fout_vakje = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
$html = TRUE; // Een HTML email

// Hierna hoef je niks meer te veranderen!
$naam = $_POST['naam'];
$email = $_POST['email'];
$onderwerp = $_POST['onderwerp'];
$bericht = $_POST['bericht'];
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);

// IP van de verstuurder
if(getenv($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = getenv($_SERVER['HTTP_X_FORWARDED_FOR']);
} elseif(getenv($_SERVER['HTTP_CLIENT_IP'])) {
$ip = getenv($_SERVER['HTTP_CLIENT_IP']);
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}

$host = gethostbyaddr($ip); // Host van verstuurder

if($html) {
// Headers
$headers = "From: \"Contact Formulier\" <".$wm_naam.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Return-Path: Mail-Error <".$wm_naam.">\r\n";

// Bericht
$message = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
$message .= "<HTML><HEAD>";
$message .= "<META http-equiv=3DContent-Type content=3D\"text/html; = charset=3Dwindows-1252\">";
$message .= "</HEAD><BODY>";
$message .= "<BR> ";
$message .= "<TABLE>";
$message .= "<tr><td>Naam:</td><td>".$naam."</td></tr>";
$message .= "<tr><td>Email:</td><td><a href=\"mailto:".$email."\">".$email."</a></td></tr>";
$message .= "<tr><td>Titel:</td><td>".$titel."</td></tr>";
$message .= "<BR> ";
$message .= "<tr><td>Bericht:</td><td>".$bericht."</td></tr>";
$message .= "<tr><td colspan=\"2\">&nbsp;</td></tr>";
$message .= "<BR> ";
$message .= "<tr><td>Datum:</td><td>".date("d-m-Y H:i:s")."</td></tr>";
$message .= "<tr><td>IP:</td><td><a href=\"http://sunny.nic.com/cgi-bin/whois?domain=".$ip."\">".$ip."</a></td></tr>";
$message .= "<tr><td>Host:</td><td>".$host."</td></tr>";
$message .= "</TABLE></BODY></HTML>";

}

else {
// Headers
$headers = "From: \"Contact Formulier\" <".$wm_naam.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1";

// Bericht
$message = "Naam: ".$naam." \n";
$message .= "E-mail: ".$email." \n";
$message .= "Bericht:\n".$bericht_wrap." \n ";
$message .= " \n ";
$message .= "Datum: ".date("d-m-Y H:i:s")." \n";
$message .= "------------------------------------------------------- \n ";
$message .= "IP: ".$ip." \n ";
$message .= "Host: ".$host." \n ";

}
// Mail Checker
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
if(!isset($_COOKIE['mailformulier']))
{
// Alles Controleren Wanneer er op Verzenden wordt gedrukt
if(isset($_POST['verzenden']))
{
$fout = "";
if((empty($naam)) OR (strlen($naam) < 3) OR (eregi(">", $naam)))
{
$fout .= "U bent vergeten uw naam in te vullen! <BR>";
unset($naam);
$fout_vakje_naam = "input_fout";
$fout_text_naam = "text_fout";
}
if((empty($email)) OR (strlen($email) < 7) OR (eregi(">", $email)))
{
$fout .= "U bent vergeten uw e-mail adres in te vullen! <BR>";
unset($email);
$fout_vakje_email = "input_fout";
$fout_text_email = "text_fout";
}
elseif(checkmail($email) == 1)
{
$fout .= "Vul een correct e-mail adres in! <BR>";
unset($email);
$fout_vakje_email = "input_fout";
$fout_text_email = "text_fout";
}
if((empty($onderwerp)) OR (strlen($onderwerp) < 3) OR (eregi(">", $onderwerp)) )
{
$fout .= "U bent vergeten een onderwerp in te vullen! <BR>";
unset($onderwerp);
$fout_vakje_onderwerp = "input_fout";
$fout_text_onderwerp = "text_fout";
}
if(empty($bericht))
{
$fout .= "U bent vergeten een bericht in te vullen! <BR";
unset($bericht);
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "text_fout";
}
elseif(strlen($bericht) < 6)
{
$fout .= "Uw bericht is tekort! <BR>";
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "text_fout";
}
if(!$fout_text)
{
unset($fout_text_naam);
unset($fout_text_email);
unset($fout_text_onderwerp);
unset($fout_text_bericht);
}
if(!$fout_vakje)
{
unset($fout_vakje_naam);
unset($fout_vakje_email);
unset($fout_vakje_onderwerp);
unset($fout_vakje_bericht);
}
if(!empty($fout))
{
echo "<center><font color=\"#FF0000\"> $fout </font><br>"; // Weergeven van de fout(en)
}
else
{
mail($wm_email,$onderwerp,$message,$headers);

// Bericht als mail succesvol is verzonden
echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>";
echo "<BR>Uw contact bericht is succesvol verzonden!<BR>";
echo "Er word zo snel mogelijk gereageerd.<BR><BR>";
echo "Met vriendelijke groeten,<BR>";
echo "<B>".$wm_naam."</B>";

// cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));

// formulier wordt niet weer getoond
$Formulier = TRUE;

header("refresh:6;url=".$site."");
}
}
}
else {
$Formulier = FALSE;
echo "<html><head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body>";
echo "<center><h2> Spam Beveiliging </h2><br />";
echo "Je kunt maar eens in de $Anti_Spam minuten een e-mail versturen!</center></body></html>";
header("refresh:3;url=".$site."");
}

if(!isset($Formulier))
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Contact Formulier</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!--
body {
background-color: #FDFBEF;
margin-left: 20px;
margin-top: 0px;
}
body,td,th {
font-family: Arial, Helvetica, sans-serif;
color: #C3642C;
font-weight: bold;
}
.style4 {color: #EB8545}
.style5 {color: #EB8545; font-weight: bold; }
-->
</style></head>

<body>
<table width="389" border="0" align="left" cellpadding="5" cellspacing="0" class="tabel" style="border-collapse: collapse">
<tr><td><p align="left" class="style5">Mocht u vragen hebben dan kunt u contact opnemen via onderstaand email formulier.</p>
<p align="left" class="style4"><strong>U kunt ook bellen met 06-14048237</strong>
</p>
<form method="post" action="<? echo $PHP_SELF; ?>">
<table align="left">
<tr><td> </td><td> </td></tr>
<tr><td class="<? echo $fout_text_naam; ?> style4">Naam:</td>
<td><input type="text" class="<? echo $fout_vakje_naam; ?>" id="naam" name="naam" maxlength="20" value="<? echo $naam; ?>" /></td></tr>
<tr><td class="<? echo $fout_text_email; ?> style4">Email:</td>
<td><input type="text" class="<? echo $fout_vakje_email; ?>" id="email" name="email" maxlength="30" value="<? echo $email; ?>" /></td></tr>
<tr><td class="<? echo $fout_text_onderwerp; ?> style4">Onderwerp:</td>
<td><input type="text" class="<? echo $fout_vakje_onderwerp; ?>" id="onderwerp" name="onderwerp" maxlength="30" value="<? echo $onderwerp; ?>" /></td></tr>
<tr><td valign="top" class="<? echo $fout_text_bericht; ?> style4">Bericht:</td>
<td><textarea id="bericht" name="bericht" class="<? echo $fout_vakje_bericht; ?>" cols="30" rows="4"><? echo $bericht; ?></textarea></td></tr>
<tr><td></td><td><input type="submit" id="verzenden" name="verzenden" value="Verzenden" /><input type="reset" id="wis" name="wis" value="Wis velden" />
</td></tr>
</table>
</form>
</td></tr>
</table>



</body>
</html>
<?
}
?>
1: zet ffkes code tags er om heen [ignore]
 en 
[/ignore]
2: We gaan neit vrijwillig 500 regels code doornemen. Post wat meer recentere code.

de functie check mail, doe die eens zo:
function checkmail($mail)
{
$email_host = explode('@', $mail);
$email_host = $email_host[1];
if (gethostbyname($email_host)) {
$valid = 1;
} else {
$valid = 0;
}
return $valid;
}
Heb ik geprobeerd, nu werkt geen enkel mailadres meer.
Het gaat dus om dit stukje volgens mij.



function checkmail($mail) 
{ 
    $email_host = explode("@", $mail); 
    $email_host = $email_host['1']; 
    $email_resolved = gethostbyname($email_host); 
    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail)) 
       $valid = 1; 
    return $valid; 
}

Reageren