Contactformulier velden controleren scripts samenvoegen
Ik heb 2 scripts uit verschillende contactformulieren samengevoegd. In 1 controleert hij de velden en de andere is het formulier zelf, maar ik weet niet hoe ik ze op een goede manier kan samenvoegen. Kan iemand me helpen?
Het formulierscript:
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
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
<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){
// we'll begin by assigning the To address and message subject
$to="[email protected]";
$subject="Contactformulier JA!sites";
//grab all our vars from the form
extract($_POST);
//build the body of the message from the form
$body = "Deze e-mail is verstuurd vanaf het contactformulier op www.jasites.nl
Organisatie: $bedrijf
Naam: $naam
Email: $email
Eventueel bestaande website: $web
Interesse: $dienst
Offerte?: $offerte
Bericht: $bericht
";
// get the sender's name and email address
// we'll just plug them a variable to be used later
$from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['email']).">";
// generate a random string to be used as the boundary marker
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
// now we'll build the message headers
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
// here, we'll start the message body.
// this is the text that will be displayed
// in the e-mail
$message="$body\n";
// next, we'll build the invisible portion of the message body
// note that we insert two dashes in front of the MIME boundary
// when we use it
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
// now we'll process our uploaded files
foreach($_FILES as $userfile){
// store the file information to variables for easier access
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
// if the upload succeded, the file will exist
if (file_exists($tmp_name)){
// check to make sure that it is an uploaded file and not a system file
if(is_uploaded_file($tmp_name)){
// open the file for a binary read
$file = fopen($tmp_name,'rb');
// read the file content into a variable
$data = fread($file,filesize($tmp_name));
// close the file
fclose($file);
// now we encode it and split it into acceptable length lines
$data = chunk_split(base64_encode($data));
}
// now we'll insert a boundary to indicate we're starting the attachment
// we have to specify the content type, file name, and disposition as
// an attachment, then add the file content.
// NOTE: we don't set another boundary to indicate that the end of the
// file has been reached here. we only want one boundary between each file
// we'll add the final one after the loop finishes.<
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
// here's our closing mime boundary that indicates the last of the message
$message.="--{$mime_boundary}--\n";
// now we just send the message
if (@mail($to, $subject, $message, $headers))
echo "Bericht Verzonden";
else
echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1">
<div class="formnaam">Bedrijfsnaam:</div> <div class="formvulin"><input type="text" name="bedrijf" size="50" /></div>
<div class="formnaam">Naam:</div> <div class="formvulin"><input type="text" name="naam" size="50" /></div>
<div class="formnaam">E-mail:</div> <div class="formvulin"><input type="text" name="email" size="50"/></div>
<div class="formnaam">Eventueel bestaande website:</div> <div class="formvulin"><input name="web" type="text" size="50" /></div>
<div class="formnaam">Waarmee kunnen wij u van dienst zijn?</div> <div class="formvulin">
<select name="dienst">
<option value="">Maak uw keuze</option>
<option value="Complete Website">Complete Website</option>
<option value="Slicen/Basen">Slicen/Basen</option>
<option value="Aanpassen">Bestaande Website Aanpassen</option>
<option value="Vraag">Ik heb een vraag</option>
<option value="Anders">Anders</option>
</select></div>
<div class="formnaam">Wilt u een offerte aanvragen?</div>
<input type="radio" name="offerte" value="ja" onclick="toggle();"/> Ja
<input type="radio" name="offerte" value="nee" onclick="toggle();" checked="checked"/> Nee
<input type="text" name="invoerveld" id="invoerveld" style="display:none"/><br/>
<div class="clear"></div>
<div class="padboven">Offerte/Vraag:<br /> <textarea name="bericht" class="formvulin" cols="40" rows="8"></textarea></div>
Als u een offerte heeft aangevraagd sturen wij u zo snel mogelijk een vragenlijst die u kunt invullen. Aan de hand van deze vragenlijst maken wij de offerte op.<br />
<div class="padboven"><input type="submit" name="Submit" value="Verzend" /></div>
</form>
if ($_SERVER['REQUEST_METHOD']=="POST"){
// we'll begin by assigning the To address and message subject
$to="[email protected]";
$subject="Contactformulier JA!sites";
//grab all our vars from the form
extract($_POST);
//build the body of the message from the form
$body = "Deze e-mail is verstuurd vanaf het contactformulier op www.jasites.nl
Organisatie: $bedrijf
Naam: $naam
Email: $email
Eventueel bestaande website: $web
Interesse: $dienst
Offerte?: $offerte
Bericht: $bericht
";
// get the sender's name and email address
// we'll just plug them a variable to be used later
$from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['email']).">";
// generate a random string to be used as the boundary marker
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
// now we'll build the message headers
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
// here, we'll start the message body.
// this is the text that will be displayed
// in the e-mail
$message="$body\n";
// next, we'll build the invisible portion of the message body
// note that we insert two dashes in front of the MIME boundary
// when we use it
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
// now we'll process our uploaded files
foreach($_FILES as $userfile){
// store the file information to variables for easier access
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
// if the upload succeded, the file will exist
if (file_exists($tmp_name)){
// check to make sure that it is an uploaded file and not a system file
if(is_uploaded_file($tmp_name)){
// open the file for a binary read
$file = fopen($tmp_name,'rb');
// read the file content into a variable
$data = fread($file,filesize($tmp_name));
// close the file
fclose($file);
// now we encode it and split it into acceptable length lines
$data = chunk_split(base64_encode($data));
}
// now we'll insert a boundary to indicate we're starting the attachment
// we have to specify the content type, file name, and disposition as
// an attachment, then add the file content.
// NOTE: we don't set another boundary to indicate that the end of the
// file has been reached here. we only want one boundary between each file
// we'll add the final one after the loop finishes.<
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
// here's our closing mime boundary that indicates the last of the message
$message.="--{$mime_boundary}--\n";
// now we just send the message
if (@mail($to, $subject, $message, $headers))
echo "Bericht Verzonden";
else
echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1">
<div class="formnaam">Bedrijfsnaam:</div> <div class="formvulin"><input type="text" name="bedrijf" size="50" /></div>
<div class="formnaam">Naam:</div> <div class="formvulin"><input type="text" name="naam" size="50" /></div>
<div class="formnaam">E-mail:</div> <div class="formvulin"><input type="text" name="email" size="50"/></div>
<div class="formnaam">Eventueel bestaande website:</div> <div class="formvulin"><input name="web" type="text" size="50" /></div>
<div class="formnaam">Waarmee kunnen wij u van dienst zijn?</div> <div class="formvulin">
<select name="dienst">
<option value="">Maak uw keuze</option>
<option value="Complete Website">Complete Website</option>
<option value="Slicen/Basen">Slicen/Basen</option>
<option value="Aanpassen">Bestaande Website Aanpassen</option>
<option value="Vraag">Ik heb een vraag</option>
<option value="Anders">Anders</option>
</select></div>
<div class="formnaam">Wilt u een offerte aanvragen?</div>
<input type="radio" name="offerte" value="ja" onclick="toggle();"/> Ja
<input type="radio" name="offerte" value="nee" onclick="toggle();" checked="checked"/> Nee
<input type="text" name="invoerveld" id="invoerveld" style="display:none"/><br/>
<div class="clear"></div>
<div class="padboven">Offerte/Vraag:<br /> <textarea name="bericht" class="formvulin" cols="40" rows="8"></textarea></div>
Als u een offerte heeft aangevraagd sturen wij u zo snel mogelijk een vragenlijst die u kunt invullen. Aan de hand van deze vragenlijst maken wij de offerte op.<br />
<div class="padboven"><input type="submit" name="Submit" value="Verzend" /></div>
</form>
Ik denk dat in dit stukje iets moet veranderen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
if (@mail($to, $subject, $message, $headers))
echo "Bericht Verzonden";
else
echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
} else {
?>
echo "Bericht Verzonden";
else
echo "U heeft niet alle verplichte velden ingevuld. <a href=javascript:history.back(1)>Ga terug</a> en vul alle verplichte velden in";
} else {
?>
Ik wil dit script erin hebben (of iets dat erop lijkt):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
if(!empty($_POST['Submit']))
{
if(strlen($_POST['naam']) == 0)
{ $error_msg ="- Voer astublieft uw naam in.<br>"; }
if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['email']))
{ $error_msg .="- Voer alstublieft een geldig email adres in.<br>"; }
if(!empty($error_msg))
{
//Een van de velden werd niet goed ingevuld
echo "<b>Contact webmaster kon niet worden uitgevoerd door volgende redenen:</b><br><br>";
echo $error_msg;
echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Ga terug</a> en vul alle velden in.<br><br>";
}
{
if(strlen($_POST['naam']) == 0)
{ $error_msg ="- Voer astublieft uw naam in.<br>"; }
if(!ereg("^[_a-zA-Z0-9-]+(\.[*@([a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST['email']))
{ $error_msg .="- Voer alstublieft een geldig email adres in.<br>"; }
if(!empty($error_msg))
{
//Een van de velden werd niet goed ingevuld
echo "<b>Contact webmaster kon niet worden uitgevoerd door volgende redenen:</b><br><br>";
echo $error_msg;
echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Ga terug</a> en vul alle velden in.<br><br>";
}
-> empty() dien je niet te gebruiken
-> ereg functies zijn DEPRECATED
-> controleren op de submit button is in 99% foute afloop
-> met @ onderdruk je fouten
-> $_SERVER['PHP_SELF']; is ook niet echt handig om te gebruiken
basename(__FILE__) of action="" zal al stuk beter zijn
-> dit
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
?>
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
?>
zal je op den duur ook opbreken, want dat voldoet niet aan de RFC regels voor het versturen van mail, pak een mailclass zijn PHP Mialer of Swiftmailer, dan hoef je je hoofd daar ook niet over te buigen.
-> en dit extract($_POST); is toch wel het ergste wat je kan doen
Advies: probeer zelf eens iets eenvoudigs in elkaar te knutselen, dan zomaar willigekeurige scripts van het net af te plukken
Klein opzetje..
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
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
<?php
// Array voor foutmeldingen
$aErrors = array( );
// Kijken of de pagina zichzelf heeft aangeroepen
if( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset
(
// Zet hier alle andere velden neer.
)
)
{
// Voer hier alle controles uit.. BV:
if( empty( $_POST[''] ) && strlen( $_POST[''] ) < 3 )
{
// Foutmeldingen toevoegen
$aErrors[] = '....';
}
}
?>
// Array voor foutmeldingen
$aErrors = array( );
// Kijken of de pagina zichzelf heeft aangeroepen
if( $_SERVER['REQUEST_METHOD'] == 'POST' &&
isset
(
// Zet hier alle andere velden neer.
)
)
{
// Voer hier alle controles uit.. BV:
if( empty( $_POST[''] ) && strlen( $_POST[''] ) < 3 )
{
// Foutmeldingen toevoegen
$aErrors[] = '....';
}
}
?>
Verder ben ik het met Noppes eens.
Gewijzigd op 10/07/2010 21:53:40 door Niels K
Ok, heel erg bedankt jullie 2. Ik zal dat eerst maar eens gaan doen! Als ik dan nog vragen heb kom ik weer terug!