contact form action php
ik ben bezig met de redesign van de website: http://gamanga.com/
De contactform werkt niet zoals zou moeten:
wanneer ik alle velden invul, en op "send" klik, springt het naar de ingevoegde php pagina waar ik de captcha terug moet invullen en opnieuw op "send" moet klikken. Daar het meteen vanaf de de "index" pagina de mail zou moeten versturen en "thank you..." bericht in de contact sectie zou moeten weergeven.
Zouden jullie eens kunnen testen en bekijken wat er fout loopt? Ben er zelf niet uitgeraakt, omdat ik nog niet echt vertrouwd ben met PHP.
Alvast bedankt voor jullie tijd en advies.
Mvg,
Max
PS: indien jullie een goede tutorial weten voor een contact form met captcha, laat gerust weten.
invoeging PHP contactform in Index >>>
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<div class="contactFormContainer">
<form name="responsiveContactForm.php" method='post'>
<p><strong>Name:</strong> <span class='required'>*</span></p>
<input type='text' name='name' value=''>
<p><strong>Email address:</strong> <span class='required'>*</span></p>
<input type='email' name='email' value=''>
<p><strong>Message:</strong> <span class='required'>*</span></p>
<textarea name='message'></textarea>
<p><strong>How much is 4+4?</strong> <span class='required'>*</span></p>
<input type='text' name='captcha' value=''><br/>
<button>Send</button>
</form>
</div><!--contactFormContainer-->
PHP contactform >>>
<?php
session_start();
$php_self = $_SERVER['PHP_SELF'];
// on submit
if( isset($_POST[name]) && isset($_POST[email]) && isset($_POST[message]) && isset($_POST[captcha]) ){
$name = $_POST[name];
$email = $_POST[email];
$message = $_POST[message];
$captcha = $_POST[captcha];
$error = 0;
// name
if( $name == "" ){ $error ++; $error_name = "class='error'"; }
// email
if( $email == "" ){ $error ++; $error_email = "class='error'"; }
// message
if( $message == "" ){ $error ++; $error_message = "class='error'"; }
// captcha
if( $captcha == "" || $captcha != $_SESSION[captcha]){ $error ++; $error_captcha = "class='error'"; }
// no error, send email
if( $error == 0){
// your email address
$address = "[email protected]";
// email subject
$subject = "New message";
// email content
$content = "<strong>Name:</strong><br/>$name<br/><strong>Email address:</strong><br/><strong>Message:</strong><br/>$email<br/>$message";
// html email
$email_content = "<!doctype html><head><meta charset='utf-8'><title>".$subject."</title>";
$email_content .= "</head><body>";
$email_content .= $content;
$email_content .= "</body></html>";
// headers for html email
$headers = 'MIME-Version: 1.0' . "/r/n";
$headers .= 'Content-type: text/html; charset=utf-8' . "/r/n";
$headers .= "From: 1stWebMagazine.com <[email protected]>" . "/r/n";
// send email
mail($address, $subject, $email_content, $headers);
// reset variables
$name = ""; $email = ""; $message = "";
$mail_sent = 1;
}
}
// captcha
$num = rand(1, 20);
$num2 = rand(1, 9);
$verif = $num . "+" . $num2;
$_SESSION[captcha] = $num + $num2;
if( $mail_sent == 1 ){
echo "<h1>Thank you for your message! We'll be in touch soon.</h1>";
} else {
echo "
<form action='".$php_self."' method='post'>
<p><strong>Name:</strong> <span class='required'>*</span></p>
<input type='text' ".$error_name." name='name' value='".$name."'>
<p><strong>Email address:</strong> <span class='required'>*</span></p>
<input type='email' ".$error_email." name='email' value='".$email."'>
<p><strong>Message:</strong> <span class='required'>*</span></p>
<textarea ".$error_message." name='message'>".$message."</textarea>
<p><strong>How much is ".$verif."?</strong> <span class='required'>*</span></p>
<input type='text' ".$error_captcha." name='captcha' value=''><br/>
<button>Send</button>
</form>";
}
?>
<form name="responsiveContactForm.php" method='post'>
<p><strong>Name:</strong> <span class='required'>*</span></p>
<input type='text' name='name' value=''>
<p><strong>Email address:</strong> <span class='required'>*</span></p>
<input type='email' name='email' value=''>
<p><strong>Message:</strong> <span class='required'>*</span></p>
<textarea name='message'></textarea>
<p><strong>How much is 4+4?</strong> <span class='required'>*</span></p>
<input type='text' name='captcha' value=''><br/>
<button>Send</button>
</form>
</div><!--contactFormContainer-->
PHP contactform >>>
<?php
session_start();
$php_self = $_SERVER['PHP_SELF'];
// on submit
if( isset($_POST[name]) && isset($_POST[email]) && isset($_POST[message]) && isset($_POST[captcha]) ){
$name = $_POST[name];
$email = $_POST[email];
$message = $_POST[message];
$captcha = $_POST[captcha];
$error = 0;
// name
if( $name == "" ){ $error ++; $error_name = "class='error'"; }
if( $email == "" ){ $error ++; $error_email = "class='error'"; }
// message
if( $message == "" ){ $error ++; $error_message = "class='error'"; }
// captcha
if( $captcha == "" || $captcha != $_SESSION[captcha]){ $error ++; $error_captcha = "class='error'"; }
// no error, send email
if( $error == 0){
// your email address
$address = "[email protected]";
// email subject
$subject = "New message";
// email content
$content = "<strong>Name:</strong><br/>$name<br/><strong>Email address:</strong><br/><strong>Message:</strong><br/>$email<br/>$message";
// html email
$email_content = "<!doctype html><head><meta charset='utf-8'><title>".$subject."</title>";
$email_content .= "</head><body>";
$email_content .= $content;
$email_content .= "</body></html>";
// headers for html email
$headers = 'MIME-Version: 1.0' . "/r/n";
$headers .= 'Content-type: text/html; charset=utf-8' . "/r/n";
$headers .= "From: 1stWebMagazine.com <[email protected]>" . "/r/n";
// send email
mail($address, $subject, $email_content, $headers);
// reset variables
$name = ""; $email = ""; $message = "";
$mail_sent = 1;
}
}
// captcha
$num = rand(1, 20);
$num2 = rand(1, 9);
$verif = $num . "+" . $num2;
$_SESSION[captcha] = $num + $num2;
if( $mail_sent == 1 ){
echo "<h1>Thank you for your message! We'll be in touch soon.</h1>";
} else {
echo "
<form action='".$php_self."' method='post'>
<p><strong>Name:</strong> <span class='required'>*</span></p>
<input type='text' ".$error_name." name='name' value='".$name."'>
<p><strong>Email address:</strong> <span class='required'>*</span></p>
<input type='email' ".$error_email." name='email' value='".$email."'>
<p><strong>Message:</strong> <span class='required'>*</span></p>
<textarea ".$error_message." name='message'>".$message."</textarea>
<p><strong>How much is ".$verif."?</strong> <span class='required'>*</span></p>
<input type='text' ".$error_captcha." name='captcha' value=''><br/>
<button>Send</button>
</form>";
}
?>
Gewijzigd op 16/05/2015 00:29:44 door MANGANIX MANGANIX
Misschien is wat relevante code wel handig (tussen code-tags).
http://www.phphulp.nl/php/forum/topic/quiz/97903/last/
Die Thankyou html zou een nieuwe pagina moeten zijn.
pagina 1: contactform met daarboven validatie
pagina 2: thankyou.
Ik heb naar het mooie design gekeken dat je hebt gemaakt. Kun je het niet beter het formulier met jQuery.ajax() verzenden en als er een json string met "Ok" terug komt dan het formulier vervangen voor thankyou html?
Gewijzigd op 16/05/2015 00:06:43 door Frank Nietbelangrijk
Quote:
Ik heb naar het mooie design gekeken dat je hebt gemaakt.
Hartelijk dank!
Quote:
Kun je het niet beter het formulier met jQuery.ajax() verzenden en als er een json string met "Ok" terug komt dan het formulier vervangen voor thankyou html?
dit is echt chinees voor mij. HTML & CSS gaat nog OK voor mij, maar PHP¨, Scripsts... daar ben ik helaas nog geen held in. :(
Even snel uit mijn hoofd kom ik op dit uit:
Zet dit in de head-sectie van je site, zodat de jQuery geladen wordt:
Code (php)
1
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
Voeg deze javascript toe aan je site:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(function() {
$("#jouwform").submit(function(e) {
e.preventDefault();
$.ajax({
url: 'send.php',
type: 'post',
dataType: 'html',
data: $("#jouwform").serialize(),
success: function(data) {
if(data=='OK') {
$("#status").html("Gelukt!");
} else {
$("#status").html("Mislukt!");
}
}
});
});
});
$("#jouwform").submit(function(e) {
e.preventDefault();
$.ajax({
url: 'send.php',
type: 'post',
dataType: 'html',
data: $("#jouwform").serialize(),
success: function(data) {
if(data=='OK') {
$("#status").html("Gelukt!");
} else {
$("#status").html("Mislukt!");
}
}
});
});
});
#jouwform is het ID van je form-tag
#status is een HTML-element (span?) voor de uitkomst van het jQuery-script of het script verstuurd is.
En met $_POST kan je de data ophalen in 'send.php'
Gewijzigd op 16/05/2015 08:40:31 door - Ariën -