Hello mensen,
ik heb een contact formulier :
http://marty-f1.uuuq.com/contactt/contactt.php
dit script hoort er bij:
<? 

////////////////////////////////////////////////////////////// 
//    Contact / Mail formulier (Anti Spam & Mail Checker)   // 
////////////////////////////////////////////////////////////// 

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.marty-f1.uuuq.com/nders.html";    // Site waarnaar je terug gaat als je een bericht hebt achtergelaten 
$wm_naam = "Martyn";                    // Webmaster naam 
$wm_email = "*******@hotmail.com";        // Webmaster E-mail 
$Anti_Spam = "10";                        // 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 .= "<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'])) 
{ 
    if(isset($_POST['wis'])) 
    { 
        foreach ($_POST as $key => $value) 
        { 
            unset($value); 
        } 
        header(""); 
    } 
    // Alles Controleren Wanneer er op Verzenden wordt gedrukt 
    if(isset($_POST['verzenden'])) 
    { 
        $fout = ""; 
        if((empty($naam)) OR (strlen($naam) < 3) OR (eregi(">", $naam))) 
        { 
            $fout .= " "; 
            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) == 0) 
        { 
            $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(!empty($fout)) 
        { 
        echo "<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:3;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!</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="file:///C|/Documents and Settings/De Kinderen/Mijn documenten/martijn/kontakt/style.css" rel="stylesheet" type="text/css" /> 
<title>Contact Formulier</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 

<body> 
<table  border="0" cellpadding="5" cellspacing="0"  width="100%" style="border-collapse: collapse"> 
<tr><td><br /> 
<form method="post" action=""> 
<table> 
<tr><td>IP / Host: </td><td><? echo $ip;?> / <? echo $host; ?></td></tr> 
<tr><td class="<? echo $fout_text_naam; ?>">Naam:</td><td><input type="text" class="<? echo $fout_vakje_naam; ?>" id="naam" name="naam" maxlength="20" value="<? echo $naam; ?>" />
<?
 
        $fout1 = ""; 
        if((empty($naam)) OR (strlen($naam) < 3) OR (eregi(">", $naam))) 
        { 
            $fout1 .= "U bent vergeten uw naam in te vullen!"; 
            unset($naam); 
            $fout_vakje_naam = "input_fout"; 
            $fout_text_naam = "text_fout"; 
        } 
echo "<font color=\"#FF0000\"> $fout1 </font><br>";

?>

</td></tr> 
<tr><td class="<? echo $fout_text_email; ?>">Email:</td><td><input type="text" class="<? echo $fout_vakje_email; ?>" id="email" name="email" maxlength="30" value="<? echo $email; ?>" />
<?
        if((empty($email)) OR (strlen($email) < 7) OR (eregi(">", $email))) 
        { 
            $fout2 .= "U bent vergeten uw e-mail adres in te vullen!"; 
            unset($email); 
            $fout_vakje_email = "input_fout"; 
            $fout_text_email = "text_fout"; 
        } 
        elseif(checkmail($email) == 0) 
        { 
            $fout3 .= "Vul een correct e-mail adres in!"; 
            unset($email); 
            $fout_vakje_email = "input_fout"; 
            $fout_text_email = "text_fout"; 
        } 
?>

</td></tr> 
<tr><td class="<? echo $fout_text_onderwerp; ?>">Onderwerp:</td><td><input type="text" class="<? echo $fout_vakje_onderwerp; ?>" id="onderwerp" name="onderwerp" maxlength="30" value="<? echo $onderwerp; ?>" />
<?
        if((empty($onderwerp)) OR (strlen($onderwerp) < 3) OR (eregi(">", $onderwerp)) ) 
        { 
            $fout4 .= "U bent vergeten een onderwerp in te vullen!"; 
            unset($onderwerp); 
            $fout_vakje_onderwerp = "input_fout"; 
            $fout_text_onderwerp = "text_fout"; 
        } 
?>
</td></tr> 
<tr><td valign="top" class="<? echo $fout_text_bericht; ?>">Bericht:</td><td><textarea id="bericht" name="bericht" class="<? echo $fout_vakje_bericht; ?>" cols="100" rows="5"><? echo $bericht; ?></textarea></td></tr> 
<tr><td></td><td><input type="submit" id="verzenden" name="verzenden" value="Verzenden" /> 
<?
        if(empty($bericht)) 
        { 
            $fout5 .= "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) 
        { 
            $fout6 .= "Uw bericht is tekort! <BR>"; 
            $fout_vakje_bericht = "input_fout"; 
            $fout_text_bericht = "text_fout"; 
        } 
?>
</td></tr> 
</table> 
</form> 
</td></tr> 
</table> 

</body> 
</html> 
<? 
} 
?> 

ik heb nu een hele nacht gewacht op 2mailtjes via dit email script maar nog steeds niks ontvangen.. hoe komt dat?
zien jullie misschien iets wat ik vergeten ben en hoe moet dat dan?
Het script werkt bij mij. Het enige waar ik last van heb zijn errors dat er een paar variabelen niet gemaakt zijn. (bijv. $_POST['naam']).


Naam:	Alexander
Email:	***@gmail.com

Bericht:	tessttttt
 

Datum:	28-05-2009 09:26:43
IP:	127.0.0.1
Host:	pc_dexora_one
Als je 10 keer de zelfde check doet op 10 verschillende velden, is het misschien verstandig om 1 functie te maken en dan alles daar door heen halen. Scheeld je een hoop (dubbele) code.

Verder ga je bij je mail altijd van uit dat hij aankomt, en dus "Gelukt" resultaat echo'd. Dat lijkt me raar.

Doe dus:

<?php
if (@mail($mail,$subject,$message,$headers)) {
  //Het ging goed
}
else {
  //Het ging niet goed
}
?>
dus waar moet ik wat veradnerne en hoe?
Martyn, zoek alsjeblieft eerst een handleiding PHP op. Dan kan je het daarna zelf.
ik ben bezig met php handleidings maar dit is zo groot en zo veel dara snap ik geen klote van...
Martyn,

Als je met het gedrag van: ik snap er geen klote van. Verder gaat, dan kan je beter stoppen.

Leren programmeren is niet makkelijk, het kost heel veel tijd. Als jij nou eens tutorials gaat volgen, en scripts over schrijven (geen ctrl+c - ctrl+v). Ik ben nu bezig met het leren van Adobe Flex (mxml) wat knap lastig is. Maar ik geef het niet op.

Ook een goed portie engels is goed voor je, dat heb je hard nodig in de web wereld.

Even terug naar je script, ik ga even geheel door het script heen, en ik vertel jou wat jij precies fout doet.

Ten eerste niet elke web-host bedrijf ondersteunen niet altijd short open tags.

Wat zijn short open tags, dat is:


<?

?>

De gewone tags zijn:

<?php

?>


Mijn tip is ook, gebruik de normale php tags.


$naam = $_POST['naam']; 
$email = $_POST['email']; 
$onderwerp = $_POST['onderwerp']; 
$bericht = $_POST['bericht']; 


Daar ga je toch pittig de fout in. De variablen naam, email, onderwerp, bericht in de POST global bestaan helemaal niet als ik voor het eerst op de pagina kom. En wat is de oplossing?

Simpel:


$naam			= (isset($_POST['naam'])) ? $_POST['naam'] : "";
$email			= (isset($_POST['email'])) ? $_POST['email'] : "";
$onderwerp		= (isset($_POST['onderwerp'])) ? $_POST['onderwerp'] : "";
$bericht		= (isset($_POST['bericht'])) ? $_POST['bericht'] : "";


Lijn 111:


header(""); 


Dat gaat niet. Je kan geen lege headers verzenden, en dat heeft ook geen enkel nut.

De rest ziet er wel aardig uit, maar dit is nog geen werk van een professionele web-developer.

Probeer ook eens netjes te werken, en herhaal NOOIT stukken code. Kost enkel maar tijd.

Veel succes met verbeteren. En zeg nooit meer:
Martyn
ik ben bezig met php handleidings maar dit is zo groot en zo veel dara snap ik geen klote van..


Alexander de Jong
Maar waarschijnlijk ligt het aan me host.
want ik heb meedere email script gedaan en geen van alle doen het. en bij anderen mensen wel, ik heb wel gratis host.

en ff over dat progameren:
ik ben bezig met php, ik ben het ana het over typen enzo. maar bij handleidings vindt je nooit van die hele uitgebreide dinge. daar zie je allen de kleine basis dingen. als ik daar zulke grote dingen kijk dan ssnap ik het niet.
maar misschien weet jij een goede(NEDERLANDSE) site waar een php handleiding staat die wel verder gaat met grotere dignen etc.?

ik laat voorlopig ff dat email script ff liggen en naar anderen dingen kijken en begrijpen. ik wil allemaal veel te snel gaan enzo.
maar bedankt voor je reactie en succes met je Adobe Flex (mxml)
Kijk eens in je spam box.

En ja het kan ook aan je hosting provider liggen. Tip: je kan ook swiftmail gebruiken. http://swiftmailer.org/ in swift mail kan je je eigen smtp provider aan geven ;)

Ik weet geen goede nederlandse website met artikelen, je kan hier op phphulp ook veel vinden.
ik heb al in me spambox gekeken, maar daar komt echt niks terecht....
maar hoe werkt tdat dan met swiftmailer?
en wat is je eigen smtp?
ik gebruik gwn hotmail. ik weet niet of je dat nodig hebt?
Je kunt voor SMTP meestal 'localhost' gebruiken.

Reageren