Ik ben een simpel mailformulier aan het maken maar om één of andere reden gaat de submit verder
ondanks dat er een ongeldige waarde wordt doorgegeven.
Ik heb nog niet zo vaak met formulieren gewerkt dus misschien zie ik iets evidents over het hoofd.
Dit is wat ik momenteel heb:
Ik heb al een paar variaties geprobeert in de form en js.
In het form heb ik geprobeert om ;returnValue te doen en in de JS dan return returnValue ...
En ik weet dat het nog niet veilig is indien javascript uitgeschakeld is, ik moet nog wat opzoekwerk doen in PHP (nog nooit mee gewerkt) om te zien hoe ik dan :
-controleer of javascript uitgeschakeld is
-zoja de testen in php uitvoer en redirect naar een pagina met de foutboodschap. (laatste zal wel met een echo of zo zijn als ik mijn gegoogle goed herinner)
ondanks dat er een ongeldige waarde wordt doorgegeven.
Ik heb nog niet zo vaak met formulieren gewerkt dus misschien zie ik iets evidents over het hoofd.
Dit is wat ik momenteel heb:
code:
1
2
3
4
5
6
7
8
| <form method="post" action="scripts/mail.php"> Email: <input name="email" type="text"/><br/> Subject: <input name="subject" type="text"/><br/><br/> Message:<br/> <textarea name="message" rows="15" cols="40"></textarea><br/><br/> <input type="submit" onclick="validate(email.value,subject.value,message.value);document.returnValue" value="submit"/> <input type="reset" value="clear"/> </form> |
code:
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
| function validate(email,subject,message) {
var errors='';
var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
atPosition = email.indexOf("@")
dotPosition = email.lastIndexOf(".")
if(email.length == 0){
errors+='-please fill in an e-mail adress\n';
}
else if(email.match(illegalChars)) {
errors += 'The e-mail address contains (an) illegal character(s).\n';
}
else if(atPosition == -1 || dotPosition == -1 || atPosition == 0 || email.length-dotPosition == 1 || dotPosition - atPosition == 1 || dotPosition < atPosition){
errors+= '-invalid e-mail adress\n';
}
if(subject.length == 0){
errors+='-please fill in a subject\n';
}
if(message.length == 0){
errors+='-please fill in a message\n';
}
if(errors!='')
alert('Errors:\n'+errors);
document.returnValue = (errors == '')
} |
code:
1
2
3
4
5
6
7
8
| <?php
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'];
$message = $_REQUEST['message'] ;
mail("verhoeven.simon@gmail.com", $subject,
$message, "From: $email");
?> |
Ik heb al een paar variaties geprobeert in de form en js.
In het form heb ik geprobeert om ;returnValue te doen en in de JS dan return returnValue ...
En ik weet dat het nog niet veilig is indien javascript uitgeschakeld is, ik moet nog wat opzoekwerk doen in PHP (nog nooit mee gewerkt) om te zien hoe ik dan :
-controleer of javascript uitgeschakeld is
-zoja de testen in php uitvoer en redirect naar een pagina met de foutboodschap. (laatste zal wel met een echo of zo zijn als ik mijn gegoogle goed herinner)