Mailing form.
Ik ben bezig met een mailing form voor een website waarbij ik PHP gebruik.
Ik dacht dat ik klaar was met mijn script, het bleek echter niet te werken :(.
wie kan mij helpen?
Dit is mijn totale script:
HTML, pagina contact.html:
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
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
<html>
<head>
<title></title>
<style type="text/css">
label{
display: block;
}
</style>
</head>
<body background="BodyBg.png">
<form name="personalia" form action="contact.php" method="POST">
<fieldset>
<legend>Contact</legend>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
<label for="e-mail">e-mail:</label>
<input type="text" name="e-mail" id="e-mail">
<label for="telefoonnummer">Telefoonnummer:</label>
<input type="text" name="telefoonnummer" id="telefoonnummer" />
<br>
<label for="vraag">Uw vraag?:</label>
<textarea name="Uw vraag?" rows="15" cols="40"></textarea><br>
<input type="submit" name="submit" value="Versturen"/>
<input type="reset" name="reset" value="Wissen"/>
</fieldset>
</form>
</body>
</html>
<head>
<title></title>
<style type="text/css">
label{
display: block;
}
</style>
</head>
<body background="BodyBg.png">
<form name="personalia" form action="contact.php" method="POST">
<fieldset>
<legend>Contact</legend>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
<label for="e-mail">e-mail:</label>
<input type="text" name="e-mail" id="e-mail">
<label for="telefoonnummer">Telefoonnummer:</label>
<input type="text" name="telefoonnummer" id="telefoonnummer" />
<br>
<label for="vraag">Uw vraag?:</label>
<textarea name="Uw vraag?" rows="15" cols="40"></textarea><br>
<input type="submit" name="submit" value="Versturen"/>
<input type="reset" name="reset" value="Wissen"/>
</fieldset>
</form>
</body>
</html>
PHP pagina, contact.php:
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
$to = $_REQUEST['[email protected]'] ;
$from = $_REQUEST['e-mail'] ;
$name = $_REQUEST['Voornaam'] ;
$headers = "From: $from";
$subject = "mindfulness vraag";
$fields = array();
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
$body = "We have received the following information:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }
$headers2 = "From: [email protected]";
$subject2 = "Bedankt voor uw reactie!";
$autoreply = "Bedankt voor uw reactie, ik zal zo snel mogelijk reageren!";
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: http://www.eenopgegevenpagina.nl" );}
else
{print "Er is iet misgegaan bij het mailen.";}
?>
$to = $_REQUEST['[email protected]'] ;
$from = $_REQUEST['e-mail'] ;
$name = $_REQUEST['Voornaam'] ;
$headers = "From: $from";
$subject = "mindfulness vraag";
$fields = array();
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
$body = "We have received the following information:\n\n"; foreach($fields as $a => $b){ $body .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]); }
$headers2 = "From: [email protected]";
$subject2 = "Bedankt voor uw reactie!";
$autoreply = "Bedankt voor uw reactie, ik zal zo snel mogelijk reageren!";
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: http://www.eenopgegevenpagina.nl" );}
else
{print "Er is iet misgegaan bij het mailen.";}
?>
Gewijzigd op 01/01/1970 01:00:00 door Robert
Bovenaan je script graag, en kijk wat die geven.
Edit: Regel 9 t/m 13: Het is toch echt $array["key"] = $value;
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
@Jezpur:
ik ga even uitleggen wat er precies gebeurd als ik mijn script test.
het verstuurd wel de mail naar degene die het form heeft ingevuld.
het verstuurd geen mail naar degene die de informatie uit het form nodig heeft.
en het geeft de opgegeven foutmelding "Er is iet misgegaan bij het mailen."
ik had geen tijd om dit erbij te zetten in mijn eerste bericht, wellicht heeft het nog nut ;).
bedankt voor de reacties tot nu toe, ik ga eerst even de suggestie van Jezpur bewerkstelligen!
edit: een vraagje Jezpur, moet ik dan dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$fields = array();
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
?>
$fields = array();
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
?>
vervangen voor dit:
of voor dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$array["key"] = $value;
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
?>
$array["key"] = $value;
$fields{"voornaam"} = "voornaam";
$fields{"achternaam"} = "achternaam";
$fields{"e-mail"} = "e-mail";
$fields{"telefoonnummer"} = "telefoonnummer";
$fields{"vraag"} = "vraag";
?>
of ben ik nu helemaal scheef bezig?
~Robert
Gewijzigd op 01/01/1970 01:00:00 door Robert
Wat het script hoort te doen:
1. Het moet een mailtje sturen naar degene die het formulier heeft ingevuld.
2. Het moet een mailtje sturen naar mij, met de informatie die is ingevuld.
3. Als het niet goed is gegaan moet er komen te staan dat het niet is gelukt.
4. Als het formulier succesvol is verzonden moet dat er ook komen te staan.
Later ga ik er nog voor zorgen dat het formulier eerst de velden checkt, eerst maar even dit probleempje oplossen. Ik kom er echter zelf echt niet uit :(
~Robert
dan kun je daar die PHP code schrijven.
Maar bouw het wel een beetje om ;)
@Robert: Ik heb je script nu verbeterd. Analyseer het, en kijk wat jij fout deed en/of verbeterd is.
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(!empty($_POST['e-mail'])
&& !empty($_POST['voornaam'])
&& !empty($_POST['achternaam'])
&& !empty($_POST['telefoonnummer'])
&& !empty($_POST['vraag'])) {
$to = "[email protected]";
$headers = "From: ".$_POST['voornaam']." ".$_POST['achternaam']." <".$_POST['email'].">"."\n";
$subject = "mindfulness vraag";
$body = "We have received the following information:\n\n";
foreach($_POST as $key => $value) {
$body .= sprintf("%20s: %s"."\n", $key, $value);
}
// is een scriptelijke autoreply wel nodig? Kun je die niet gewoon instellen op je mailaccount?
$headers2 = "From: [email protected]";
$subject2 = "Bedankt voor uw reactie!";
$sReply = "Bedankt voor uw reactie, ik zal zo snel mogelijk reageren!";
$autoMail = mail($from, $subject2, $sReply, $headers2);
if(mail($to, $subject, $body, $headers)) {
header("Location: http://www.eenopgegevenpagina.nl");
} else {
echo "Er is iets misgegaan bij het mailen.";
}
} else {
echo 'Niet alle velden zijn ingevuld. Probeer het nogmaals.';
}
} else {
header("Location: http://www.jouwdomein.nl/het-formulier.html"); // even aanpassen!
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST") {
if(!empty($_POST['e-mail'])
&& !empty($_POST['voornaam'])
&& !empty($_POST['achternaam'])
&& !empty($_POST['telefoonnummer'])
&& !empty($_POST['vraag'])) {
$to = "[email protected]";
$headers = "From: ".$_POST['voornaam']." ".$_POST['achternaam']." <".$_POST['email'].">"."\n";
$subject = "mindfulness vraag";
$body = "We have received the following information:\n\n";
foreach($_POST as $key => $value) {
$body .= sprintf("%20s: %s"."\n", $key, $value);
}
// is een scriptelijke autoreply wel nodig? Kun je die niet gewoon instellen op je mailaccount?
$headers2 = "From: [email protected]";
$subject2 = "Bedankt voor uw reactie!";
$sReply = "Bedankt voor uw reactie, ik zal zo snel mogelijk reageren!";
$autoMail = mail($from, $subject2, $sReply, $headers2);
if(mail($to, $subject, $body, $headers)) {
header("Location: http://www.eenopgegevenpagina.nl");
} else {
echo "Er is iets misgegaan bij het mailen.";
}
} else {
echo 'Niet alle velden zijn ingevuld. Probeer het nogmaals.';
}
} else {
header("Location: http://www.jouwdomein.nl/het-formulier.html"); // even aanpassen!
}
?>
Overigens moet je bij je formulier de textarea een andere name geven, nl: "vraag". "Uw vraag?" is niet verstandig om als name te nemen ;-).
Hartstikke bedankt Jezpur! Ik ga zeker een analyse doen. Zodra ik weet wat ik fout heb gedaan zal ik het even posten!
die {} moeten [] zijn. dus:
$fields["voornaam"] = "voornaam";
das alles...
Gewijzigd op 01/01/1970 01:00:00 door Robert