Wat ik wil bouwen is een formuliertje waar iemand zijn/haar e-mail adres kan invullen en een document kan uploaden naar de server. Wanneer het bestandje is geupload moet er een bevestiging naar het opgegeven e-mail adres gaan. Aangezien ik totaal geen PHP'er ben heb ik hiervoor verschillende scriptjes gevonden, 1+1 gedaan en dat werkt. Nu wil ik ook nog dat er verschillende vormen van e-mail adres validatie gedaan worden, maar dat wil niet lukken. Het is me gelukt om voor e-mail validatie te zorgen als er geen bestand is ingevoerd en er op de 'submit' knop gedrukt wordt, maar zodra er een bestand is ingevoerd gaat ie ervoor. Dit is de code die ik tot nu toe heb (zonder e-mail validatie):
Ik heb dus een paar e-mail validatie scriptjes gevonden zoals onderstaande, maar waar ik die ook toevoeg aan bovenstaande code, het werkt alleen wanneer er geen bestand wordt geupload. Nou zegt mijn scherpe programmeer instinct
me dat het wellicht iets te maken heeft met de input type='submit' oid..maar is er hier toevallig iemand die me op weg kan helpen?
(één van de vele validatie scriptjes):
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
| <? //kijken of er een bestand is geselecteerd if(isset($_FILES['bestand'])) { //als het bestand groter is dan 5024000 bytes word hij niet toegelaten if($_FILES['bestand']['size'] > 5024000) { echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>5mb</b>"; } else { //kijken of het bestand wel juiste formaat is if($_FILES['bestand']['type'] == "text/plain" || $_FILES['bestand']['type'] == "application/pdf" || $_FILES['bestand']['type'] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" || $_FILES['bestand']['type'] == "application/msword") { //kijken of er een nieuwe naam aan het bestand is gegeven if(empty($_POST['naam'])) { $naam = $_FILES['bestand']['name']; } else { //strip de extensie om die achter de nieuwe bestandsnaam te plakken $x = strrchr($_FILES['bestand']['name'], "."); $naam = $_POST['naam'] . $x; } //het bestand uploaden met de nieuwe of oude naam move_uploaded_file($_FILES['bestand']['tmp_name'], "uploadbestandjesfolder/" . $naam); //redirect naar url voor bedankje $URL="http://www.website.com/thanks"; header ("Location: $URL"); //e-mail naar opgegeven e-mail adres $email = $_POST['email']; $to = $email; $subject = 'uw bestand is geupload '; $message = " <p>Bedankt voor het uploaden.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer auctor. Aliquam quis dolor ut nibh sodales pellentesque. Suspendisse vitae turpis. Phasellus dignissim, odio consectetur euismod elementum, risus nunc sollicitudin neque, non semper enim eros et justo. Etiam interdum lectus. Duis hendrerit massa sed odio. Cras libero. Aenean nec libero ac nulla tempor congue. Ut rhoncus consectetur pede. Suspendisse tincidunt, metus et luctus adipiscing, leo quam varius tortor, a tincidunt nisl sapien id magna. Nunc lobortis sollicitudin diam. Phasellus sapien mi, ultricies vitae, volutpat ac, iaculis eget, lectus.</p> <p> Hoogachtend,</p> <p> Website crew<p> "; $headers = 'From: web@website.nl' . "\r" . 'Content-type: text/html; charset=iso-8859-1' . "\r"; mail($to,$subject,$message,$headers); } else { echo "U heeft geen e-mail adres ingevoerd of Het bestand is geen .pdf, .doc of .docx "; } } } else { echo "Selecteer een bestand (alleen .pdf, .doc of .docx)"; } ?> <form action="" method="post" enctype="multipart/form-data"> E-mail Address: <input type='text' name='email' /> <b>Bestand:</b> <input type="file" name="bestand"><br> <input type="submit" name="submit" value="Upload"> </form> |
Ik heb dus een paar e-mail validatie scriptjes gevonden zoals onderstaande, maar waar ik die ook toevoeg aan bovenstaande code, het werkt alleen wanneer er geen bestand wordt geupload. Nou zegt mijn scherpe programmeer instinct

(één van de vele validatie scriptjes):
PHP:
1
2
3
4
5
6
7
8
9
10
11
| function checkEmail($email) { if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-]) ↪*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email)){ list($username,$domain)=split('@',$email); if(!checkdnsrr($domain,'MX')) { return false; } return true; } return false; |