Contact form veilig?
Ik heb een contact formulier dat niet beveiligd is, althans, dat is mij verteld.
Nou heb ik iets gevonden ctype_print, alleen het werkt bij mij niet.
Kan iemand mij misschien vertellen wat ik fout doe? Want \n\r kan er bij mij gewoon worden ingezet.
contact.php
<link rel="stylesheet" href="opmaak.css" type="text/css">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$mail_naar = '[email protected]';
$mail_onderwerp = 'Test mail';
$mail_headers = 'From: [email protected]';
$form_naam = strip_tags ($_POST['naam']);
$form_email = strip_tags ($_POST['email']);
$form_vraag = strip_tags ($_POST['vraag']);
// Hier staat alles wat per mail verzonden moet worden.
$mail_content = "Naam: $form_naam \nEmail: $form_email \n\nVraag: $form_vraag";
// Checkt of alle velden juist zijn ingevuld.
$error_msg='';
if(!ctype_print($form_naam)){
$error_msg='<li>U heeft geen geldige naam opgegeven.</li>';
}
if(!ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$',$form_email)){
$error_msg.='<li>U heeft geen geldig e-mailadres opgegeven.</li>';
}
if(!ctype_print($form_vraag)){
$error_msg.='<li>U heeft geen vraag gesteld.</li>';
}
if(strlen($error_msg)>0){
echo '<u>Om de volgende reden kan uw vraag helaas niet worden verwerkt:</u><br><br>';
echo $error_msg;
echo '<br><br>Klik op <a href="javascript:history.back(1)">terug</a> en vul alle velden in.';
}
else{
mail($mail_naar,$mail_onderwerp,$mail_content,$mail_headers);
echo 'Uw vraag is succesvol verzonden, wij zullen deze zo spoedig mogelijk beantwoorden.';
}
}
else{
?>
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$mail_naar = '[email protected]';
$mail_onderwerp = 'Test mail';
$mail_headers = 'From: [email protected]';
$form_naam = strip_tags ($_POST['naam']);
$form_email = strip_tags ($_POST['email']);
$form_vraag = strip_tags ($_POST['vraag']);
// Hier staat alles wat per mail verzonden moet worden.
$mail_content = "Naam: $form_naam \nEmail: $form_email \n\nVraag: $form_vraag";
// Checkt of alle velden juist zijn ingevuld.
$error_msg='';
if(!ctype_print($form_naam)){
$error_msg='<li>U heeft geen geldige naam opgegeven.</li>';
}
if(!ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$',$form_email)){
$error_msg.='<li>U heeft geen geldig e-mailadres opgegeven.</li>';
}
if(!ctype_print($form_vraag)){
$error_msg.='<li>U heeft geen vraag gesteld.</li>';
}
if(strlen($error_msg)>0){
echo '<u>Om de volgende reden kan uw vraag helaas niet worden verwerkt:</u><br><br>';
echo $error_msg;
echo '<br><br>Klik op <a href="javascript:history.back(1)">terug</a> en vul alle velden in.';
}
else{
mail($mail_naar,$mail_onderwerp,$mail_content,$mail_headers);
echo 'Uw vraag is succesvol verzonden, wij zullen deze zo spoedig mogelijk beantwoorden.';
}
}
else{
?>
<form action="" method="post">
<fieldset>
<legend>Met dit formulier kunt u ons een aanvraag sturen.</legend><br>
<label class="left">Uw naam</label> <input id="naam" type="text" name="naam"><br>
<label class="left">Uw e-mailadres</label> <input id="email" type="text" name="email"><br>
<label class="left">Uw vraag</label> <textarea name="vraag"></textarea><br>
<input type="submit" name="submit" class="submit" value="Vraag verzenden "><br><br>
</fieldset>
</form>
Dit werkt overigens wel:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$print = "asdf\n\n";
if(!ctype_print($print)){
echo $print.' is geen naam';
}
else{
echo $print.' is een naam';
}
?>
$print = "asdf\n\n";
if(!ctype_print($print)){
echo $print.' is geen naam';
}
else{
echo $print.' is een naam';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Wouter OOP
Wat je vooral nodig hebt, is mysql_real_escape_string()
Wat de \n betreft, je kan bij het uitlezen nl2br() gebruiken, dat zet \n om in <br/>
En dan, kan ik dat met strip_tags gebruiken?
Maar nou vraag ik me nog steeds af waarom ctype_print niet werkt bij mij :), dat is toch ook een functie die ik hiervoor kan gebruiken?
Ah ja, je mailt alles rechtstreeks, zonder database; Iets te vlug gereageerd.
Oke ;), kan iemand mij alsnog te hulp schieten... Ik kom er maar niet uit waarom ctype_print niet werkt