2 vragen over php mail functie!
Ik heb deze php code samengesteld nadat veel zoeken:
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
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
<?php
// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $contentErr = "";
$name_sender = $email_sender= $phone = $content =$succes= "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// post
$name_sender = strip_tags($_POST['name_sender']);
$email_sender = strip_tags($_POST['email_sender']);
$phone = strip_tags($_POST['phone']);
$content = strip_tags($_POST['content']);
// validate name
if (empty($name_sender)) {
$nameErr = "Name is required";
} else {
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/", $name_sender)) {
$nameErr = "Only letters and white space allowed";
}
}
// validate email
if (empty($email_sender)) {
$emailErr = "Email is required";
} else {
// check if email address is well-formed
if (!filter_var($email_sender, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
// validate phone
if (empty($phone)) {
$phoneErr = "Phone is required";
} else {
// check if phone is well-formed
if(!preg_match("/^[0-9\s\-]+$/", $phone)) {
$phoneErr = "Invalid phone number";
}
}
// validate content
if (empty($content)) {
$contentErr = "Content is required";
}
// send
if ( empty($nameErr) && empty($emailErr) && empty($phoneErr) && empty($contentErr) ) {
// Variables
$to = '[email protected]';
$subject = 'Contact form';
$success = 'Thank you! You will receive a response as soon as possible.';
// Message content
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
// Headers
$headers = 'From: ' .$name_sender. ' <' .$email_sender. '>' . PHP_EOL;
$headers .= 'Reply-To: <' .$email_sender. '>' . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL;
$headers .= 'Content-Type: text/plain; charset=UTF-8' . PHP_EOL;
// Send email
mail($to, $subject,$content, $headers);
echo $success;
}
}
// form
?>
// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $contentErr = "";
$name_sender = $email_sender= $phone = $content =$succes= "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// post
$name_sender = strip_tags($_POST['name_sender']);
$email_sender = strip_tags($_POST['email_sender']);
$phone = strip_tags($_POST['phone']);
$content = strip_tags($_POST['content']);
// validate name
if (empty($name_sender)) {
$nameErr = "Name is required";
} else {
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/", $name_sender)) {
$nameErr = "Only letters and white space allowed";
}
}
// validate email
if (empty($email_sender)) {
$emailErr = "Email is required";
} else {
// check if email address is well-formed
if (!filter_var($email_sender, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
// validate phone
if (empty($phone)) {
$phoneErr = "Phone is required";
} else {
// check if phone is well-formed
if(!preg_match("/^[0-9\s\-]+$/", $phone)) {
$phoneErr = "Invalid phone number";
}
}
// validate content
if (empty($content)) {
$contentErr = "Content is required";
}
// send
if ( empty($nameErr) && empty($emailErr) && empty($phoneErr) && empty($contentErr) ) {
// Variables
$to = '[email protected]';
$subject = 'Contact form';
$success = 'Thank you! You will receive a response as soon as possible.';
// Message content
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
// Headers
$headers = 'From: ' .$name_sender. ' <' .$email_sender. '>' . PHP_EOL;
$headers .= 'Reply-To: <' .$email_sender. '>' . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL;
$headers .= 'Content-Type: text/plain; charset=UTF-8' . PHP_EOL;
// Send email
mail($to, $subject,$content, $headers);
echo $success;
}
}
// form
?>
de html code 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
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
<html>
<div class="container">
<form id="contact" method="post">
<h3>Quick Contact</h3>
<h4>Contact us today, and get reply with in 24 hours!</h4>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit">Submit</button></fieldset>
</form></div>
</html>
<div class="container">
<form id="contact" method="post">
<h3>Quick Contact</h3>
<h4>Contact us today, and get reply with in 24 hours!</h4>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</fieldset>
<fieldset>
<button name="submit" type="submit" id="contact-submit">Submit</button></fieldset>
</form></div>
</html>
nu mij probleem is :
1- wanneer ik gegevens vullen in contact-form en klikt op submit button ik krijg dezelfde gegevens in het velden van de contact-form .
voor duidelijkheid u kunt zelf zien in url : https://webdesignleren.com/contact/
deze code lijn wordt op zelfde wijze gegeven in de tekst veld van contact-form nadat submit button geklikt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
$content .= "". "\n\n";
?>
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
$content .= "". "\n\n";
?>
2- de text inhoud of de body van de message wordt niet gegeven in mij email box , alleen de naam van sender, email adres en telefoon nummer .
maar wanneer ik deze codes lijn weghalt :
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
</php
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
?>
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
?>
en allen deze lijn houdt ( $content .= "". "\n\n";) dan wordt wel de ingevulde tekst of body weergegeven in de email box van mij provider.
ik heb heleboel gezocht in google maar ik kunde niet de juiste antwoord vinden.
hoe ik kan deze 2 problemen oplossen?
dank u wel
$content = strip_tags($_POST['content']);
In regel 62 krijgt $content de waarde "Contact form\n";
$content = "Contact form\n";
$content met de POST waarde wordt dus overschreven.
En dat de input velden met die waarden worden getoond, komt omdat je een echo doet van die waarden.
wat ik moet doen precis?
1-moet ik deze lijn $content="Contact form\n" helemaal weg doen of andere naam gebruiken voor content in regel 62?
2-moet ik echo helemaal weg doen of er is andere oplossing?
Verder raad ik ook aan om te mailen via SMTP en niet via mail(). Deze functie is lastig tot niet te debuggen.
Ikzelf gebruik PHPmailer. Het is zeker de moeite om daar naar te kijken
Gewijzigd op 18/07/2022 16:43:46 door - Ariën -
ik ga proberen.
ik ga in google informatie zoeken over SMTP en phpmailer.
Oke, succes!
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
</php
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
$content .= $content. "\n\n";
?>
// Message content
$content = "Contact form\n";
$content .= "Name: " .$name_sender. "\n";
$content .= "Email: " .$email_sender. "\n";
$content .= "Phone: " .$phone. "\n";
$content .= $content. "\n\n";
?>
veranderd naar:
1=ik krijg nu de inhoud van email ook voordat verandering ik krijgte niet inhoud van email.
deze probleem is opgelost.
2- als ik echo name ,email etc wegdoen in html dan zou als iemand een veld vergeten om in te vullenn dan hij of zij moet van begin beginnen om alles nog een keer in te vullen. dus de echo functie helpt om ingevulde velden niet nog een keer invullen.
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
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
<html>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</html>
<fieldset>
<input placeholder="Your name" type="text" name="name_sender" value="<?php echo $name_sender;?>">
<span class="error">* <?php echo $nameErr; ?></span>
</fieldset>
<fieldset>
input placeholder="Your Email Address" type="text" name="email_sender" value="<?php echo $email_sender;?>">
<span class="error">* <?php echo $emailErr; ?></span>
</fieldset>
<fieldset>
<input placeholder="Your phone number" type="text" name="phone" value="<?php echo $phone;?>">
<span class="error">* <?php echo $phoneErr; ?></span>
</fieldset>
<fieldset>
<textarea placeholder="Type your message here.." type="text" name="content"><?php echo $content;?></textarea>
<span class="error">* <?php echo $contentErr; ?></span>
</html>
dus de echo functie kan niet uit doen .
ik moet na klikken van submit button alle velden leeg laten maken met javascript event listener code .
of met php ?
ik weet niet of dat is ook mogelijk met php?
3- ik zie dat alle in gevulde namen adresen etc blijft in de velden als auto aanvulling .
deze moet ook leeg gemaakt worden nadat iemand heeft verlaten contact-form.
ik weet niet of als ik gebruiken event listener na de submit button zou ook deze auto aanvulling leeg gemaakt worden
iedere idea is welkom
dank u wel
Toevoeging op 18/07/2022 19:29:24:
ik herhaal nog een keer .
alles is nu werkt goed tuurlijk na de form werkt perfect dan ik moet voor beveiliging denken.
de probleem is nu na submit button geklikt is en email is verzonden met succes dan moet alle velden schoon gemaakt worden.
ik zie dat deze kan waar maken met event listener js code.
2-ik zie ook in mij contact form de ingevulde velden met namen emailen etc blijven in de velden als auto aanvulling.
die moet ook schoon gemaakt worden .ik weet niet mischien nadat ik heb met js event listener code nadat op button geklikt is alle velden schoon maken mischien wordt deze probleem ook opgelost
ik wil weten nu moet ik met eventlistener nadat geklikt is on submit button de gevulde velden schoon maken of het kan ook met php ?
Na het versturen van je formulier lijkt het mij interessanter om een melding te tonen waarin staat dat het formulier correct verstuurd is. Of een bericht als het mislukt is vanwege een technisch probleem, zoals een fout in de mailfunctie.
dat komt later ik moet eerst deze probleem oplossen.
ik zie dat kan met JS event listener.
ik weet niet of dat is ook mogelijk met php?
Gewijzigd op 18/07/2022 19:49:42 door - Ariën -