login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bestand uploaden en versturen naar mail

Offline maestro - 12/09/2006 00:25 (laatste wijziging 12/09/2006 00:26)
Avatar van maestroHTML gevorderde hallo,
ik zoek een manier om via een invulformulier een bestand te laten uploaden door een bezoeker, te laten checken op een bepaald type (bijvoorbeeld alleen .doc en .pdf zijn toegelaten) en dan dit bestand te laten mailen naar mijn e-mail adres.
Ik heb hetvolgende voor het formulier:
  1. <form method="post" enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF']) ?>">
  2. <input type="file" name="userfile"><br /><br />
  3. <input type="submit" name="send" value="CV versturen &gt;&gt;">
  4. </form>


Maar hoe krijg ik het opgestuurde bestand zo dat het kan gechecked worden op de extensie en dan naar mijn e-mail adres kan gestuurd worden? Met mail() geraak ik er niet.

Kan iemand een hint geven hoe ik zoiets kan aanpakken?

4 antwoorden

Gesponsorde links
Offline BigBug - 12/09/2006 07:27
Avatar van BigBug PHP expert Kijk maar eens naar de upload tutorial onder de PHP sectie. Daarmee kan je alles leren wat jij wilt 
Offline Ultimatum - 12/09/2006 07:38
Avatar van Ultimatum PHP expert nee want mail() is voor het verzenden van een email en niet de controle op extensie etc.. die moet je doen voordat je überhaupt wat verstuurd.

Onder contact formulieren vind je ook wel een met bijlage dach ik.
Offline Gerard - 12/09/2006 10:03
Avatar van Gerard Ouwe rakker Een combinatie van het lezen van de tutorial Uploaden van bestanden met het doorspitten van enkele scripts die dit implementeren, moeten jou wel de oplossing geven.
Offline maestro - 13/09/2006 01:13
Avatar van maestro HTML gevorderde Hartelijk dank voor de info. Met behulp van deze info, de tut en info via een andere site ben ik eruit.

Ten behoeve van de geïnteresseerden, hieronder het ganse script:
  1. <?php
  2. //globals
  3. $send = $_POST['send'];
  4. $userfile = $_POST['userfile'];
  5. $fileatt = $_FILES['userfile']['tmp_name'];
  6. $fileatt_type = $_FILES['userfile']['type'];
  7. $fileatt_name = $_FILES['userfile']['name'];
  8. $message = "In bijlage het geuploade bestand.";
  9. $headers = "From: Uploader";
  10. //check of het formulier gebruikt is
  11. if ($send == "")
  12. {
  13. ?>
  14. <p>Indien u uw bestand wenst te versturen, moet deze van het type .doc of .pdf zijn, en mag het bestand niet groter zijn dan 1MB.<br />
  15. <?php
  16. }
  17. //check of er een bestand is geupload
  18. elseif (!is_uploaded_file($fileatt))
  19. {
  20. ?>
  21. <p><font color="#CC3300">Uw heeft geen bestand geselecteerd!</font> Indien u uw bestand wenst te versturen, moet deze van het type .doc of .pdf zijn, en mag het bestand niet groter zijn dan 1MB.<br />
  22. <?php
  23. }
  24. //check of bestand klainer is dan 1MB
  25. elseif ($_FILES['userfile']['size'] > 1048576)
  26. {
  27. ?>
  28. <p><font color="#CC3300">Uw bestand is te groot!</font> Indien u uw bestand wenst te versturen, moet deze van het type .doc of .pdf zijn, en mag het bestand niet groter zijn dan 1MB.<br />
  29. <?php
  30. }
  31. //check of het bestandstype doc of pdf is
  32. elseif ($_FILES['userfile']['type'] != "application/msword" && $_FILES['userfile']['type'] != "application/pdf")
  33. {
  34. ?>
  35. <p><font color="#CC3300">Uw bestand is niet van het juiste type!</font> Indien u uw bestand wenst te versturen, moet deze van het type .doc of .pdf zijn, en mag het bestand niet groter zijn dan 1MB.<br />
  36. <?php
  37. }
  38. else
  39. {
  40. //geupload bestand lezen
  41. $file = fopen($fileatt,'rb');
  42. $data = fread($file,filesize($fileatt));
  43. fclose($file);
  44. //header maken voor versturen van een bijlage
  45. $semi_rand = md5(time());
  46. $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  47. $headers .= "\nMIME-Version: 1.0\n" .
  48. "Content-Type: multipart/mixed;\n" .
  49. " boundary=\"{$mime_boundary}\"";
  50. //body van het bericht samenstellen
  51. $message = "This is a multi-part message in MIME format.\n\n" .
  52. "--{$mime_boundary}\n" .
  53. "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
  54. "Content-Transfer-Encoding: 7bit\n\n" .
  55. $message . "\n\n";
  56. //om binaire bijlagen op te sturen
  57. $data = chunk_split(base64_encode($data));
  58. //bijlage aan de e-mail toevoegen
  59. $message .= "--{$mime_boundary}\n" .
  60. "Content-Type: {$fileatt_type};\n" .
  61. " name=\"{$fileatt_name}\"\n" .
  62. "Content-Disposition: attachment;\n" .
  63. " filename=\"{$fileatt_name}\"\n" .
  64. "Content-Transfer-Encoding: base64\n\n" .
  65. $data . "\n\n" .
  66. "--{$mime_boundary}--\n";
  67.  
  68. $ok = @mail("je.email@jedomein.be", "Je titel van de mail", $message, $headers);
  69. if ($ok)
  70. {
  71. ?>
  72. <p>Uw bestand is verstuurd.</p>
  73. <?php
  74. }
  75. else
  76. {
  77. ?>
  78. <p>Er is een probleem opgetreden. Gelieve later nog eens te proberen.</p>
  79. <?php
  80. }
  81.  
  82. }
  83. ?>
  84. <form method="post" enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF']) ?>">
  85. <input type="file" name="userfile"><br /><br />
  86. <input type="submit" name="send" value="Versturen &gt;&gt;">
  87. </form>


De code controleert of er een bestand is geselecteerd, of de grootte kleiner is dan 1MB,en of het bestand een .doc of .pdf extensie heeft.

Het volledige en meer uitgebreide script en meer uitleg vind je op http://www.site...mail-php/5
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.188s