Soort 'Bestelformulier' met verschillende onderwerpen
Voor onderstaande website moet ik per assortiment een soort bestelformulier hebben, waarin de naam van de bloem het onderwerp is van het bericht.
http://binnenkijkenbij.nl/happycolors/roses.html
Als je dus op een van die bloemen klikt, zie je in de lightbox een tekst met "contact us". Als je hierop klikt moet ik of direct naar de contactpagina gaan waarin het onderwerp automatisch wordt ingevuld met de naam van de bloem. Of dat je na het klikken een popup krijgt met een formulier waarin ook het onderwerp automatisch is ingevuld.
Ik heb nu een heel eenvoudig contactformulier waarin je eigen gegevens kunnen invullen.
En ik heb geen idee of zoiets mogelijk is / of hoe ik dit moet aanpakken. Hoop dat jullie mij wat verder kunnen helpen?
Thanks!
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<div class="col-sm-8">
<h1 class="post-title">Feel free to contact us</h1>
<p></p>
<div class="divide20"></div>
<div class="form-container">
<div class="response alert alert-success"></div>
<form class="forms" action="contact/form-handler.php" method="post">
<fieldset>
<ol>
<li class="form-row text-input-row name-field">
<input type="text" name="name" class="text-input defaultText required" title="Name (Required)"/>
</li>
<li class="form-row text-input-row email-field">
<input type="text" name="email" class="text-input defaultText required email" title="Email (Required)"/>
</li>
<li class="form-row text-input-row subject-field">
<input type="text" name="subject" class="text-input defaultText" title="Subject"/>
</li>
<li class="form-row text-area-row">
<textarea name="message" class="text-area required"></textarea>
</li>
<li class="form-row hidden-row">
<input type="hidden" name="hidden" value="" />
</li>
<li class="nocomment">
<label for="nocomment">Leave This Field Empty</label>
<input id="nocomment" value="" name="nocomment" />
</li>
<li class="button-row">
<input type="submit" value="Submit" name="submit" class="btn btn-submit bm0" />
</li>
</ol>
<input type="hidden" name="v_error" id="v-error" value="Required" />
<input type="hidden" name="v_email" id="v-email" value="Enter a valid email" />
</fieldset>
</form>
</div>
<!-- /.form-container -->
</div>
<?php
include('SMTPClass.php');
$use_smtp = '0';
$emailto = '[email protected]';
// retrieve from parameters
$emailfrom = isset($_POST["email"]) ? $_POST["email"] : "";
$nocomment = isset($_POST["nocomment"]) ? $_POST["nocomment"] : "";
$subject = 'Contactformulier Happy Colors';
$message = '';
$response = '';
$response_fail = 'There was an error verifying your details.';
// Honeypot captcha
if($nocomment == '') {
$params = $_POST;
foreach ( $params as $key=>$value ){
if(!($key == 'ip' || $key == 'emailsubject' || $key == 'url' || $key == 'emailto' || $key == 'nocomment' || $key == 'v_error' || $key == 'v_email')){
$key = ucwords(str_replace("-", " ", $key));
if ( gettype( $value ) == "array" ){
$message .= "$key: \n";
foreach ( $value as $two_dim_value )
$message .= "...$two_dim_value<br>";
}else {
$message .= $value != '' ? "$key: $value\n" : '';
}
}
}
$response = sendEmail($subject, $message, $emailto, $emailfrom);
} else {
$response = $response_fail;
}
echo $response;
// Run server-side validation
function sendEmail($subject, $content, $emailto, $emailfrom) {
$from = $emailfrom;
$response_sent = 'Thank you. Your messsage has been received.';
$response_error = 'Error. Please try again.';
$subject = filter($subject);
$url = "Origin Page: ".$_SERVER['HTTP_REFERER'];
$ip = "IP Address: ".$_SERVER["REMOTE_ADDR"];
$message = $content."\n$ip\r\n$url";
// Validate return email & inform admin
$emailto = filter($emailto);
// Setup final message
$body = wordwrap($message);
if($use_smtp == '1'){
$SmtpServer = 'SMTP SERVER';
$SmtpPort = 'SMTP PORT';
$SmtpUser = 'SMTP USER';
$SmtpPass = 'SMTP PASSWORD';
$to = $emailto;
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
$SMTPChat = $SMTPMail->SendMail();
$response = $SMTPChat ? $response_sent : $response_error;
} else {
// Create header
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
// Send email
$mail_sent = @mail($emailto, $subject, $body, $headers);
$response = $mail_sent ? $response_sent : $response_error;
}
return $response;
}
// Remove any un-safe values to prevent email injection
function filter($value) {
$pattern = array("/\n/", "/\r/", "/content-type:/i", "/to:/i", "/from:/i", "/cc:/i");
$value = preg_replace($pattern, "", $value);
return $value;
}
exit;
?>
<h1 class="post-title">Feel free to contact us</h1>
<p></p>
<div class="divide20"></div>
<div class="form-container">
<div class="response alert alert-success"></div>
<form class="forms" action="contact/form-handler.php" method="post">
<fieldset>
<ol>
<li class="form-row text-input-row name-field">
<input type="text" name="name" class="text-input defaultText required" title="Name (Required)"/>
</li>
<li class="form-row text-input-row email-field">
<input type="text" name="email" class="text-input defaultText required email" title="Email (Required)"/>
</li>
<li class="form-row text-input-row subject-field">
<input type="text" name="subject" class="text-input defaultText" title="Subject"/>
</li>
<li class="form-row text-area-row">
<textarea name="message" class="text-area required"></textarea>
</li>
<li class="form-row hidden-row">
<input type="hidden" name="hidden" value="" />
</li>
<li class="nocomment">
<label for="nocomment">Leave This Field Empty</label>
<input id="nocomment" value="" name="nocomment" />
</li>
<li class="button-row">
<input type="submit" value="Submit" name="submit" class="btn btn-submit bm0" />
</li>
</ol>
<input type="hidden" name="v_error" id="v-error" value="Required" />
<input type="hidden" name="v_email" id="v-email" value="Enter a valid email" />
</fieldset>
</form>
</div>
<!-- /.form-container -->
</div>
<?php
include('SMTPClass.php');
$use_smtp = '0';
$emailto = '[email protected]';
// retrieve from parameters
$emailfrom = isset($_POST["email"]) ? $_POST["email"] : "";
$nocomment = isset($_POST["nocomment"]) ? $_POST["nocomment"] : "";
$subject = 'Contactformulier Happy Colors';
$message = '';
$response = '';
$response_fail = 'There was an error verifying your details.';
// Honeypot captcha
if($nocomment == '') {
$params = $_POST;
foreach ( $params as $key=>$value ){
if(!($key == 'ip' || $key == 'emailsubject' || $key == 'url' || $key == 'emailto' || $key == 'nocomment' || $key == 'v_error' || $key == 'v_email')){
$key = ucwords(str_replace("-", " ", $key));
if ( gettype( $value ) == "array" ){
$message .= "$key: \n";
foreach ( $value as $two_dim_value )
$message .= "...$two_dim_value<br>";
}else {
$message .= $value != '' ? "$key: $value\n" : '';
}
}
}
$response = sendEmail($subject, $message, $emailto, $emailfrom);
} else {
$response = $response_fail;
}
echo $response;
// Run server-side validation
function sendEmail($subject, $content, $emailto, $emailfrom) {
$from = $emailfrom;
$response_sent = 'Thank you. Your messsage has been received.';
$response_error = 'Error. Please try again.';
$subject = filter($subject);
$url = "Origin Page: ".$_SERVER['HTTP_REFERER'];
$ip = "IP Address: ".$_SERVER["REMOTE_ADDR"];
$message = $content."\n$ip\r\n$url";
// Validate return email & inform admin
$emailto = filter($emailto);
// Setup final message
$body = wordwrap($message);
if($use_smtp == '1'){
$SmtpServer = 'SMTP SERVER';
$SmtpPort = 'SMTP PORT';
$SmtpUser = 'SMTP USER';
$SmtpPass = 'SMTP PASSWORD';
$to = $emailto;
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
$SMTPChat = $SMTPMail->SendMail();
$response = $SMTPChat ? $response_sent : $response_error;
} else {
// Create header
$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
// Send email
$mail_sent = @mail($emailto, $subject, $body, $headers);
$response = $mail_sent ? $response_sent : $response_error;
}
return $response;
}
// Remove any un-safe values to prevent email injection
function filter($value) {
$pattern = array("/\n/", "/\r/", "/content-type:/i", "/to:/i", "/from:/i", "/cc:/i");
$value = preg_replace($pattern, "", $value);
return $value;
}
exit;
?>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 15/12/2015 13:38:03 door - Ariën -
'contact.php?code=R1001'
Dan kan je met $_GET['code'] in je PHP-script de waarde alvast invullen.
Let er wel op dat PHP standaard niet wordt uitgevoerd in een *.html-document. Daarom heb ik hier als voorbeeld .php van gemaakt.
Gewijzigd op 15/12/2015 13:41:55 door - Ariën -
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?
& bedankt voor de tip! over html het document.
Gewijzigd op 15/12/2015 13:58:03 door Stephanie -
Stephanie - op 15/12/2015 13:56:17:
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?
& bedankt voor de tip! over html het document.
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?
& bedankt voor de tip! over html het document.
Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php
In contact.php kun je het volgende doen:
Code (php)
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.
Gewijzigd op 15/12/2015 14:08:13 door Peter K
Peter K op 15/12/2015 14:06:23:
Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php
In contact.php kun je het volgende doen:
Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.
Stephanie - op 15/12/2015 13:56:17:
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?
& bedankt voor de tip! over html het document.
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?
& bedankt voor de tip! over html het document.
Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php
In contact.php kun je het volgende doen:
Code (php)
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.
Hoi Peter thanks voor de hulp!
Ik heb nu inderdaad bij de bloem de url aangegeven met de code:
Code (php)
1
<h2>R1000 <a href="contact.php?bloem=R1000"><strong>Contact us ></strong></a></h2>
en in mijn contact.php heb ik het volgende gedaan:
Code (php)
1
2
3
2
3
<li class="form-row text-input-row subject-field">
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
</li>
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
</li>
Url werkt prima, maar het onderwerp wordt nog niet weergegeven in het formulier.
Waar kan ik dit dan aanpassen? Ik heb geprobeerd de GET-parameter in het phpscript te plaatsen die de mail verzendt maar dat ging niet. (Ik had hem zo maar ik denk dat ik iets fout doe haha.
Je moet er dit van maken:
Code (php)
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" value="<?php printf("{$_GET['bloem']}"); ?>">
Als je naar contact.php?bloem=test gaat zul je dit zien in je bron:
De waarde komt dus wel mooi in je script, maar hij moest nog in de value gezet worden. Met bovenstaande zou het moeten werken.
Gewijzigd op 15/12/2015 14:33:15 door Peter K
Zonder de buitenste quotjes: $subject = $_GET['bloem'];
Je moet die GET-waarde wel netjes in een value=" " zetten ;-)
Dank jullie wel! valt best mee hoe moeilijk dit was haha.
Gewijzigd op 15/12/2015 14:48:01 door Stephanie -
Als onderwerp kun je ook plaatsen:
Bloem bestelling: (HIER DE GET WAARDE)
Uiteraard moet die tekst 'Bleom bestelling:' er enkel komen zodra er een bloem is gekozen.
Als iemand standaard naar het contact formulier gaat wil je dat niet.
Je kunt een controle doen of dus de GET gevuld is.
Als dat zo is maak je een nieuwe variabele aan.
Deze nieuwe variabele kun je dan ook toevoegen in de value van subject.