Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]walidacja załącznika, wysyła mimo warunku
jaroslavmo
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.03.2022

Ostrzeżenie: (0%)
-----


Użyłem php mailer do wysyłania emaila, chciałbym zrobić walidację wielkości pliku po stronie serwera.

stowrzyłem taki warunek

  1.  
  2. $maxsize = 2*1024*1024
  3.  
  4. if(isset($_Files['file']['name'])) {
  5.  
  6. if($_FILES['file']['size'] > $maxsize) {
  7. echo 'zbyt duży plik';
  8.  
  9. } else {
  10. $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
  11. }
  12.  
  13. }
  14.  
  15.  
  16.  


mimo tego mail się wysyła bez załącznika, ale wysyła. Chciałbym to zmienić.
Poniżej cały mój kod php





  1.  
  2.  
  3.  
  4. <?php
  5. ini_set('display_errors', '1');
  6. ini_set('display_startup_errors', '1');
  7.  
  8. $honeypot = $_POST['honey'];
  9. $nameU = $_POST['name'];
  10. $email = $_POST['email'];
  11. $content = $_POST['message'];
  12. $phoneU = $_POST['phone'];
  13. $fileUpload = $_POST['file'];
  14.  
  15. use PHPMailer\PHPMailer\PHPMailer;
  16. use PHPMailer\PHPMailer\SMTP;
  17. use PHPMailer\PHPMailer\Exception;
  18.  
  19. require 'autoload.php';
  20.  
  21. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  22. // robot detection
  23. $honeypot = trim($_POST["honey"]);
  24.  
  25. if(!empty($honeypot)) {
  26. echo "NO SPAM!";
  27. }
  28.  
  29. $mail = new PHPMailer; //From email address and name
  30. $mail->From = $email ;
  31.  
  32. $mail->FromName = $nameU; //To address and name
  33. $mail->addAddress("jaroslaw.mor@gmail.com", "Vomo");//Recipient name is optional
  34.  
  35. $mail->isHTML(true);
  36. $mail->Subject = "Zapytanie ze strony www";
  37. $mail->Body = "Telefon:$phoneU<br><br>Treść wiadomośći:<br>$content";
  38. $mail->AltBody = "Telefon:$phoneU\n$content";
  39.  
  40. $maxsize = 2*1024*1024;
  41.  
  42.  
  43.  
  44. if(isset($_Files['file']['name'])) {
  45.  
  46. if($_FILES['file']['size'] > $maxsize) {
  47. echo 'zbyt duży plik';
  48.  
  49. } else {
  50. $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);
  51. }
  52.  
  53. }
  54.  
  55.  
  56.  
  57. if(!$mail->send())
  58. {
  59. echo "Mailer Error: " . $mail->ErrorInfo;
  60. }
  61. else
  62. {
  63. header("Location: sent.html");
  64. exit();
  65. }
  66.  
  67. }
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaroslavmo
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.03.2022

Ostrzeżenie: (0%)
-----


By nie tworzyć nowego wątku, zapomniałem że miał być więcej niż jeden załącznik. Uwzględniając poprzednie wskazówki pętlę do załączników.

Stworzyłem pętle załączniki widzi i nie zgłasza problemu, jak kodu od walidacji nie ma, wysyła wiadomość ze załącznikami.

  1.  
  2. for ($i=0; $i < count($attachments) ; $i++) {
  3. $fileTmpName = $_FILES['uploaded-file']["tmp_name"][$i];
  4. $filename = $_FILES['uploaded-file']["name"][$i];
  5. move_uploaded_file($fileTmpName, "uploads/" . $filename);
  6. $mail-> AddAttachment("uploads/". $filename);
  7. }
  8.  
  9.  




Natomiast ten fragment

  1.  
  2. if(filesize($filename) > $maxsize) {
  3. $message ="plik jest zbyt duży";
  4. }
  5.  


wywołuje ostrzeżenie

Cytat
Warning: filesize(): stat failed for oświadczenie-o-przekazaniu-praw-majatkowych.pdf in /home/mork/public_html/vomo/mailer.php on line 55 Array ( [uploaded-file] => Array ( [name] => Array ( [0] => Klauzule informacyjne i okna zgody - wzór.pdf [1] => oświadczenie-o-przekazaniu-praw-majatkowych.pdf ) [type] => Array ( [0] => application/pdf [1] => application/pdf ) [tmp_name] => Array ( [0] => /tmp/www/mork/phpSW91R4 [1] => /tmp/www/mork/phpOAykxZ ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 148245 [1] => 56805 ) ) )



całość kodu

  1.  
  2.  
  3. <?php
  4. ini_set('display_errors', '1');
  5. ini_set('display_startup_errors', '1');
  6.  
  7. $honeypot = $_POST['honey'];
  8. $nameU = $_POST['name'];
  9. $email = $_POST['email'];
  10. $content = $_POST['message'];
  11. $phoneU = $_POST['phone'];
  12. //$fileUpload = $_POST['file'];
  13.  
  14. use PHPMailer\PHPMailer\PHPMailer;
  15. use PHPMailer\PHPMailer\SMTP;
  16. use PHPMailer\PHPMailer\Exception;
  17.  
  18. require 'autoload.php';
  19.  
  20. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  21. // robot detection
  22. $honeypot = trim($_POST["honey"]);
  23.  
  24. if(!empty($honeypot)) {
  25. echo "NO SPAM!";
  26. }
  27.  
  28. $mail = new PHPMailer; //From email address and name
  29. $mail->From = $email ;
  30.  
  31. $mail->FromName = $nameU; //To address and name
  32. $mail->addAddress("jaroslaw.mor@gmail.com");//Recipient name is optional
  33.  
  34. $mail->isHTML(true);
  35. $mail->Subject = "Zapytanie ze strony www";
  36. $mail->Body = "Telefon:$phoneU<br><br>Treść wiadomośći:<br>$content";
  37. $mail->AltBody = "Telefon:$phoneU\n$content";
  38. $maxsize = 2*1024*1024;
  39. $attachments = $_FILES['uploaded-file']["name"];
  40. $acceptedFormats = array("doc", " docx" , "pdf" , "txt" , "odt", "zip", "7z", "rar", "jpg", "jpeg");
  41. $uploadedFile = $_FILES['uploaded-file']['tmp_name'];
  42.  
  43.  
  44.  
  45. for ($i=0; $i < count($attachments) ; $i++) {
  46. $fileTmpName = $_FILES['uploaded-file']["tmp_name"][$i];
  47. $filename = $_FILES['uploaded-file']["name"][$i];
  48. move_uploaded_file($fileTmpName, "uploads/" . $filename);
  49. $mail-> AddAttachment("uploads/". $filename);
  50.  
  51.  
  52. }
  53.  
  54.  
  55.  
  56. if (isset($attachments)) {
  57.  
  58. if(filesize($filename) > $maxsize) {
  59. $message ="plik jest zbyt duży";
  60. }
  61.  
  62.  
  63. else if (!in_array(pathinfo($fileTmpName, PATHINFO_EXTENSION), $acceptedFormats)) {
  64. $message ="nieprawidłowy format pliku";
  65.  
  66. } else {
  67. $message = '';
  68.  
  69. }
  70. }
  71.  
  72.  
  73.  
  74. if(!$mail->send())
  75. {
  76. echo "Mailer Error: " . $mail->ErrorInfo;
  77. die();
  78. }
  79. else
  80. {
  81. //header("Location: sent.html");
  82.  
  83. print_r($_FILES);
  84.  
  85. die();
  86. }
  87.  
  88.  
  89.  
  90.  
  91. }
  92.  


Ten post edytował jaroslavmo 21.03.2022, 22:00:30
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 31.12.2025 - 08:46