Contact formulier
Pagina: « vorige 1 2 3 4 volgende »
Doe het eens zo:
$mail->Body= $message;
$mail->Body.= $phone;
2 hoe krijg je alles onder elkaar in zo'n mail? Je kan lastig even een <br> toevoegen
Die punt is om variabelen aan elkaar te koppelen. Gewoon na de eerste steeds met een enkele punt.
Probeer maar eens.....
Ik typ het volgende
Code (php)
1
2
2
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
$error = '<font color=\"green\"> U hebt geen emailadres opgegeven opgegeven </font>';
$error = '<font color=\"green\"> U hebt geen emailadres opgegeven opgegeven </font>';
En ik krijg de melding in het groen. Hoe kan dat?
Font is overigens verouderd. Kijk liever naar CSS.
o Sorry had er red van gemaakt maar dan krijg ik hem ook groen was het in de kopie vergeten
Er moet geen \ voor je double-quote staan voor escaping. Je gebruikt namelijk al een single-quoted echo.
De volgende vraag dan maar: over heel het internet kom ik kilometers lange pagina's met code tegen om aan je formulier de optie toe te voegen om een bijlage mee te sturen.
Weet er iemand net zo;n handige tutorial als die ik hier heb gekregen voor het formulier maken alleen dan voor het toevoegen van een bijlage?
http://webcheatsheet.com/php/send_email_text_html_attachment.php
Ikzelf zou dan liever naar PHPmailer grijpen die dat met een paar regels mogelijk maakt.
Er is genoeg informatie te vinden op internet over het mailen van bijlages, zoals: Ikzelf zou dan liever naar PHPmailer grijpen die dat met een paar regels mogelijk maakt.
Gewijzigd op 23/11/2015 09:54:15 door - Ariën -
Ik gebruik de PHP mailer dus dat is geregeld :) ik ga eens kijken of ik de regels kan ontcijferen die gelden voor de PHP mailer ik ga maar eens kijken of ik er ook nog wat van begrijp want dat is natuurlijk wel het doel
$mail->AddAttachment("documents/pdf_order_576575.pdf");
Ik heb nu de code zoals ik denk dat hij moet.
HTML
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
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
require 'PHPMailerAutoload.php';
function sendemail($name, $email, $subject, $upload, $phone, $message)
{
$mail = new PHPMailer;
$mail->From ='van adres';
$mail->addAddress ('adres naar'); // Name is optional
$mail->addReplyTo($email, $name);
$mail->addCC($email);
$name->name = $name;
$mail->Subject = $subject;
$mail->AddAttachment = $upload;
$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 == '')
$error = 'U hebt geen naam opgegeven';
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
$error = '<font color="red"> U hebt geen emailadres opgegeven </font>';
if ($subject == '')
$error = '<font color="red"> U hebt geen onderwerp opgegeven </font>';
if ($phone == '')
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> ';
if ($message == '')
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font> ';
return $error;
}
$name = '';
$email = '';
$subject = '';
$upload = '';
$phone = '';
$message = '';
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
//FORMULIER IS VERZONDEN
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$uload = $_POST['upload'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$error = validate($name, $email, $subject, $phone, $message);
if($error != '')
echo $error;
else
if(sendemail($name, $email, $subject, $upload, $phone, $message) == true)
header ('location: thankyou.html');
}
?>
require 'PHPMailerAutoload.php';
function sendemail($name, $email, $subject, $upload, $phone, $message)
{
$mail = new PHPMailer;
$mail->From ='van adres';
$mail->addAddress ('adres naar'); // Name is optional
$mail->addReplyTo($email, $name);
$mail->addCC($email);
$name->name = $name;
$mail->Subject = $subject;
$mail->AddAttachment = $upload;
$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 == '')
$error = 'U hebt geen naam opgegeven';
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
$error = '<font color="red"> U hebt geen emailadres opgegeven </font>';
if ($subject == '')
$error = '<font color="red"> U hebt geen onderwerp opgegeven </font>';
if ($phone == '')
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> ';
if ($message == '')
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font> ';
return $error;
}
$name = '';
$email = '';
$subject = '';
$upload = '';
$phone = '';
$message = '';
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
//FORMULIER IS VERZONDEN
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$uload = $_POST['upload'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$error = validate($name, $email, $subject, $phone, $message);
if($error != '')
echo $error;
else
if(sendemail($name, $email, $subject, $upload, $phone, $message) == true)
header ('location: thankyou.html');
}
?>
Alleen wordt nu de bijlage nog niet meegezonden. De mail wordt verder zonder fouten verzonden. Ik heb volgens mij de finish in zicht.
Bevat je formuliertag het attribuut/de eigenschap enctype="multipart/form-data"? Anders wordt er uberhaupt niets ge-upload.
ja
Daarnaast worden je uploads tijdelijk (voor de duur van het script) in een directory gezet. Als je dit bestand als attachment wilt meesturen zul je deze uit deze tijdelijke folder moeten vissen via $_FILES['upload']['tmp_name']. Als het script klaar is met uitvoering wordt dit bestand verwijderd van deze tijdelijke locatie, voor die tijd zul je hier dus iets mee moeten doen. Ofwel meesturen als attachment, ofwel verplaatsen naar een meer permanente bestemming.
Dit soort bestanden zul je wel voorzichtig moeten behandelen, want deze kunnen virussen/trojans bevatten. Het is een goede gewoonte om nooit "user input" te vertrouwen.
Gewijzigd op 24/11/2015 15:49:06 door Thomas van den Heuvel
Regel 19 mag weg, die slaat nergens op. Er is geen class die je met $name instantieert.
Kan je een stukje van de sluier oplichten met een deel van het script?
Gewijzigd op 24/11/2015 17:01:20 door Rubensky PHP starter
Standaard parkeert PHP de uploads in een aparte /tmp directory waar je meestal geen toegang tot hebt. Daarna kan je deze in je eigen directory schrijven met move_uploaded_files. Let dan heel goed op de extenties en mimetypes, en controleer in het geval van afbeeldingen of deze met getimagesize of deze geen FALSE retourneert.
Een kwaad exe-bestand met een trojan is anders snel genoeg geuploadt als iemand misbruik van je formulier maakt. Helaas gebeurt het nog te vaak dat dergelijke beheerderstools onbeveiligd en onbeschermd zijn en misbruikt worden.
Okee, net als PHPmailer heb je ook speciale classes die uplaoden vergemakkelijker, zoals de uploadclass op http://www.verot.net. Deze kan ook meteen op diverse wijze afbeeldingen resizen, croppen, watermerken etc...
Leuk voor beginners, maar ik raad wel aan om je alsnog eens te verdiepen in de werking van uploads via PHP (zie de Table of Contents).
Gewijzigd op 24/11/2015 18:17:53 door - Ariën -
We gaan ons er eens in verdiepen want aan onveilige formulieren hebben we niets dank voor zover
Ik heb de volgende code:
Code (php)
1
2
3
4
5
2
3
4
5
if ($phone == '') \n // telefoonnummer
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> <br>' ;
if ($message == '') \n //bericht
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font>'
$error = '<font color="red"> U hebt geen telefoonnummer ingevoerd </font> <br>' ;
if ($message == '') \n //bericht
$error ='<font color="red"> U hebt geen bericht ingevoerd opgegeven </font>'
(ik weet dat de font de oude manier is maar dat pas ik nog aan! )
De mail kan nu worden verzonden alleen worden het telefoonnummer en het bericht aan elkaar geplakt in de mail die ik ontvang dit wil ik natuurlijk onder elkaar. wat doe ik verkeerd?