mailform veilig maken

Status
Niet open voor verdere reacties.

Fredemel

Gebruiker
Lid geworden
2 jun 2008
Berichten
123
Na dagenlang voorbeelden gedownload te hebben ben ik voor een deel klaar. Ik heb een mailform.html gekoppeld aan een mailform.php. Het werkt, maar is niet veilig. Het grootste voordeel is dal alle "value"-waardes in de html automatisch meegenomen worden in het php bestand. Dus eindeloos uitbreidbaar. Alleen..... als er NIETS wordt ingevuld, kun je toch de mail verzenden. Als het e-mailadres fout is ook. Ik heb een verzendknopje bijgevoegd.
Ik hoop dat iemand dit "slim"..... veilig kan maken en als het niet teveel gevraagd is ook een chapta-beveiliging of een nog betere.....??


PHP:
<?PHP 
$to = "http://www.tuwa.nl/_data/index.html"; 
$subject = "Bericht van www.JOUW_WEBSITE.nl";
$headers = "Van: Mailformulier ????????????";
$forward = 0;
$location = "http://www.tuwa.nl/_data/index.html";

$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 


$msg = "Hieronder de gegevens van het verzonden formulier. Het is verzonden op $date at $time.\n\n\n\n"; 

if ($_SERVER['REQUEST_METHOD'] == "POST") {
	foreach ($_POST as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}
else {
	foreach ($_GET as $key => $value) { 
		$msg .= ucfirst ($key) ." : \n". $value . "\n"; 
	}
}

mail($to, $subject, $msg, $headers); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    header ("Location:http://www.tuwa.nl/_data/index.html"); 
} 

?>

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script src="AC_RunActiveContent.js" type="text/javascript"></script>  <!-- JOUW locatie van dit bestand. Nodig voor javascript. ALTIJD uploaden bij je site -->

<title>eMail-Pagina</title>
</head>

<body>

<div > 

<form action="mail.php" id="mailformulier" name="mailformulier" method="post" > 

	<input type="hidden" name="subject" value="Mail afkomstig van www.JOUWwebsitenaam.nl"
Uw e-mailadres:		<input style="position:absolute; left:240px; width:250px" type="text" 	name="email" 	id="email"  /><br /><br />
Uw naam :			<input style="position:absolute; left:240px; width:250px" type="text" 	name="naam"	id="naam"/><br /><br />

Ik ben ge&iuml;nteresseerd in: &nbsp; &nbsp;
   <select style="position:absolute; left:240px;"  name="keuze" size="1">
		<option class="interesse" value="Maak uw keuze">---------------Maak uw keuze ---------------</option>
                <option value="Calculaties">						     Calculaties				</option>
   	        <option value="Projectbegeleiding">					     Projectbegeleiding			</option>
      	        <option value="Gesprek">							     Gesprek				</option>
         	<option value="Overig">							     Overig					</option>
   </select><!--  einde van de het gebied: select -->
<br /><br />

Opmerking : <br />
	<textarea style="position:absolute; left:10px;"  name="commentaar" rows="8" cols="58"></textarea><br /><br />
        	<input 	type="image"  src="verz.jpg" alt="Submit"
           			style="position: absolute; left:  20px; top: 310px; width: 150px; height: 25px; color:red;    background-color: yellow" 	type="submit" 	value="Verzenden"	name="Verzendknop"  />
        	<input 	style="position: absolute; left: 180px; top: 310px; width: 150px; height: 25px; color:yellow; background-color: red" 		type="reset" 	value="Wissen"	
            			name="Wisknop" onclick="javascript: return confirm('Weet u het zeker?')" />

</form>
</div>

</body>
</html>

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


<title>eMail-VERZONDEN</title>
</head>

<body><!-- Hier begint de pagina opbouw pas....!-->

<div style="position:absolute; top:350px; left:300px; font-size:55px; font-weight:bolder; background-color:#F63; color:#FF0;   " >
email is verzonden.
<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a style="font-size:24px" href="http://www.tuwa.nl/_data/index.html">   TERUG  

</div>

</body>
</html>
 

Bijlagen

  • verz.jpg
    verz.jpg
    10,8 KB · Weergaven: 18
Laatst bewerkt:
Je voordeel is ook een nadeel, de enige manier om te checken of je het juiste veld hebt is eerst een IF te gebruiken en daarna de controle. Dat houdt veel onnodige check in aangezien er maar 1 veld zal matchen met het IF-statement.

Bijvoorbeeld of de naam is ingevuld dan moet je dit doen:
PHP:
$errors = array();
foreach ($_POST as $key => $value)
{
    if($key == 'naam' && empty($value))
    {
        $errors[] = 'Een naam is verplicht';
    }
    $msg .= ucfirst ($key) ." : ". $value . "\n\n";
}

if(count($errors) > 0)
{
    // Foutmeldingen afhandelen
    print_r($errors);
}
else
{
    mail();
}

Daarnaast vraag ik me af waarom je uberhaupt $_GET-variabelen wilt verwerken.
Een formulier verzend je via POST, punt. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan