Contact formulier
Pagina: « vorige 1 2 3 4 volgende »
Gewoon een <br /> erin zetten als het ee HTML-mail is, of anders een PHP_EOL toevoegen na je string.
Gewijzigd op 28/11/2015 17:31:34 door - Ariën -
Waarom wil je dat vergelijken?
nu omdat ik natuurlijk aangeef dat als hij leeg is dat er dan een fout moet komen als ik daar iets invul werkt die validate functie niet meer. Maar op de 1 of andere manier krijg ik een fout
Als je wilt controleren of een waarde is ingevuld moet je het met een lege string vergelijken icm met trim() om ook spaties voor en na te verwijderen.
Als er niet aan die voorwaarde is voldaan kan je een tekst echo'en/ opslaan in een een variabele met een eigen foutmelding.
bericht0612345678
Dat moet natuurlijk netjes onder elkander in de mail die je binnenkrijgt.
Uiteraard op de plek waar je die text toont, en dus niet in je voorwaarde.
Code (php)
1
2
3
2
3
$bericht = "Naam: ".$naam.PHP_EOL.
"Telefoonnummer: ".$telefoonnummer.PHP_EOL.
"E-mailadres: ".$emailadres;
"Telefoonnummer: ".$telefoonnummer.PHP_EOL.
"E-mailadres: ".$emailadres;
Bij HTML hoort die tag gewoon in de string.
Gewijzigd op 28/11/2015 22:28:13 door - Ariën -
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
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
<?php
require 'PHPMailerAutoload.php';
function sendemail($name, $email, $subject, $phone, $message)
{
$mail = new PHPMailer;
$mail->From ='mailadres';
$mail->addAddress ('mailadres'); // Name is optional
$mail->addReplyTo($email, $name);
$mail->addCC($email);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->Body.= $phone;
if($mail->send()) {
return true;
// ga dan naar thankyou.html
}
else
{
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
return false;
}
}
function validate ($name, $email, $subject, $phone, $message)
{
$error = '';
if($name == '') // Naam
$error = 'U hebt geen naam opgegeven';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // E-mailadres
$error = '<font color="red"> U hebt geen emailadres opgegeven </font>';
if ($subject == '') // onderwerp
$error = '<font color="red"> U hebt geen onderwerp opgegeven </font>';
if ($phone == '' ) // telefoonnummer
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> <br>' ;
if ($message == '') //bericht
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font>' ;
return $error;
}
$name = '';
$email = '';
$subject = '';
$phone = ''; .PHP_EOL.
$message = '';
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
//FORMULIER IS VERZONDEN
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$error = validate($name, $email, $subject, $phone, $message);
if($error != '')
echo $error;
else
if(sendemail($name, $email, $subject, $phone, $message) == true)
header ('location: thankyou.html');
}
?>
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="contact.css" />
<meta charset="utf-8">
</head>
<body>
<div>
<h1>Contact </h1>
<form action="" method ="post" enctype="multipart/form-data">
<label for= "name">Naam:</label><input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<label for= "email">Email:</label><input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<label for= "subject">Onderwerp:</label><input type="text" id="subject" name="subject" value="<?php echo $subject; ?>" />
<label for= "name">telefoonnummer:</label><input type="text" id="phone" name="phone" value="<?php echo $phone; ?>" /> <br>
<label for="message">Bericht:</label> <textarea id="message" name="message"><?php echo $message; ?></textarea> <br>
<input type="submit" value ="verzenden" /> <input type="reset" name= "reset" value="leegmaken">
</form>
</div>
</body>
</html>
require 'PHPMailerAutoload.php';
function sendemail($name, $email, $subject, $phone, $message)
{
$mail = new PHPMailer;
$mail->From ='mailadres';
$mail->addAddress ('mailadres'); // Name is optional
$mail->addReplyTo($email, $name);
$mail->addCC($email);
$mail->Subject = $subject;
$mail->Body = $message;
$mail->Body.= $phone;
if($mail->send()) {
return true;
// ga dan naar thankyou.html
}
else
{
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
return false;
}
}
function validate ($name, $email, $subject, $phone, $message)
{
$error = '';
if($name == '') // Naam
$error = 'U hebt geen naam opgegeven';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // E-mailadres
$error = '<font color="red"> U hebt geen emailadres opgegeven </font>';
if ($subject == '') // onderwerp
$error = '<font color="red"> U hebt geen onderwerp opgegeven </font>';
if ($phone == '' ) // telefoonnummer
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> <br>' ;
if ($message == '') //bericht
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font>' ;
return $error;
}
$name = '';
$email = '';
$subject = '';
$phone = ''; .PHP_EOL.
$message = '';
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
//FORMULIER IS VERZONDEN
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$error = validate($name, $email, $subject, $phone, $message);
if($error != '')
echo $error;
else
if(sendemail($name, $email, $subject, $phone, $message) == true)
header ('location: thankyou.html');
}
?>
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="contact.css" />
<meta charset="utf-8">
</head>
<body>
<div>
<h1>Contact </h1>
<form action="" method ="post" enctype="multipart/form-data">
<label for= "name">Naam:</label><input type="text" id="name" name="name" value="<?php echo $name; ?>" />
<label for= "email">Email:</label><input type="text" id="email" name="email" value="<?php echo $email; ?>" />
<label for= "subject">Onderwerp:</label><input type="text" id="subject" name="subject" value="<?php echo $subject; ?>" />
<label for= "name">telefoonnummer:</label><input type="text" id="phone" name="phone" value="<?php echo $phone; ?>" /> <br>
<label for="message">Bericht:</label> <textarea id="message" name="message"><?php echo $message; ?></textarea> <br>
<input type="submit" value ="verzenden" /> <input type="reset" name= "reset" value="leegmaken">
</form>
</div>
</body>
</html>
Het werkt niet omdat je niet doet wat er gezegd wordt. Waar je moet zijn is regel 21/22.
- Ariën - op 28/11/2015 13:27:34:
Gewoon een <br /> erin zetten als het ee HTML-mail is, of anders een PHP_EOL toevoegen na je string.
- Ariën - op 28/11/2015 22:19:11:
Daarom dus met <br /> (bij HTML) of PHP_EOL (bij plain-text mail) splitsen naar een andere regel.
Uiteraard op de plek waar je die text toont, en dus niet in je voorwaarde.
Bij HTML hoort die tag gewoon in de string.
Uiteraard op de plek waar je die text toont, en dus niet in je voorwaarde.
Code (php)
1
2
3
2
3
$bericht = "Naam: ".$naam.PHP_EOL.
"Telefoonnummer: ".$telefoonnummer.PHP_EOL.
"E-mailadres: ".$emailadres;
"Telefoonnummer: ".$telefoonnummer.PHP_EOL.
"E-mailadres: ".$emailadres;
Bij HTML hoort die tag gewoon in de string.
Ik krijg dat dus niet goed voor elkaar! Op welke regel van mijn code ga ik nu wat toevoegen om mijn mail netjes te splitsen dat is de vraag
Quote:
$mail->Body = $message;
$mail->Body.= $phone;
$mail->Body.= $phone;
Bijvoorbeeld:
Quote:
$mail->Body = "<p><strong>Bericht van mijn te gekke website</strong></p>
Telefoonnummer: $phone <br/><br/>
Bericht: $message
";
Telefoonnummer: $phone <br/><br/>
Bericht: $message
";
Dat kan natuurlijk niet dan gaat hij de velden vanuit mijn formulier niet mee verzenden. We gebruiken de $mail om de body om de velden te kunnen versturen.
Heb je het uitgeprobeerd? Waarom zou het niet kunnen?
Inderdaad werkt het :) alleen had ik even het gevoel dat je aan de structuur aan het sleutelen bent maar dit werkt prima! Thanks
Telefoonnummer: 0612345678
Adres: Keteldorp
huisnummer: 20000
Huisnummer toevoeging:
Bericht: test
Kan je er dan simpel voor zorgen dat hij huisnummer toevoeging alleen verstuurt op het moment dat deze is ingevuld? (dan gaat het om de tekst die er nu staat.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$mail->Body = "<p><strong>Bericht van mijn te gekke website</strong></p>
Telefoonnummer: ".$phone." <br />
Straatnaam: ".$phone." <br />
Huisnummer: ".$phone." <br />
".((isset($_POST['toevoeging'])) ? 'Toevoeging:' .$_POST['toevoeging'].'<br />' : NULL)."
Bericht: $message
";
?>
$mail->Body = "<p><strong>Bericht van mijn te gekke website</strong></p>
Telefoonnummer: ".$phone." <br />
Straatnaam: ".$phone." <br />
Huisnummer: ".$phone." <br />
".((isset($_POST['toevoeging'])) ? 'Toevoeging:' .$_POST['toevoeging'].'<br />' : NULL)."
Bericht: $message
";
?>
Dit is de Ternary-operator. Hiermee kan je in-line binnen string if-else statements gebruiken.
Omdat het er best complex uitziet, loont het zeker om dit eens te lezen, en vooral om er eens mee te experimenteren:
http://www.sitepoint.com/using-the-ternary-operator/
De syntax is als volgt:
Waarbij de $x toekennis in dit voorbeeld niet verplicht is. Alleen als je het resultaat op wilt slana in een andere variabele. In-line in een string zie ik daarvoor weinig noodzaak.
Gewijzigd op 02/12/2015 16:53:15 door - Ariën -