Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Formularz z załącznikami, jak ograniczyć formaty plików? phpmailer, Formularz ma wysyłać tylko wybrane pliki a na inne wyświetli komunikat
huhuhh
post 6.12.2012, 14:46:49
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


Witam wszystkich!
Jestem nowy na forum. Wcześniej radziłem sobie bez zadawania pytań, wystarczyło przeszukanie google, ale tym razem wymiękam...
Szukałem na wielu stronach, ale chyba nikt nie miał takiego problemu.

Chodzi o to, że tworzę formularz w php korzystający z phpmailera i wszystko działa świetnie, mimo tego, że mam pierwszy raz styczność z phpmailerem a w php jestem taki między zielonym a żółtym tongue.gif

Nie mogłem sobie poradzić ze sprawdzaniem czy wymagane pola zostały wypełnione, ale uporałem się z tym korzystając z js. Jeżeli ktoś ma sposób jak to zrobić w php to proszę też o pomoc smile.gif ale to nie jest najważniejsze.

Najważniejsze: Pliki, które załącza użytkownik chciałbym ograniczyć do kilku formatów (dozwolone formaty: pdf, doc(x), xls(x), ppt(x), jpg), na tę chwilę formularz wyśle wszystko.
Chciałbym, aby tak jak pojawia się komunikat 'Wiadomość wysłano', lub 'Proszę podać poprawny adres email' pojawiał się też komunikat typu: 'Załączony plik jest niedopuszczalny' i wiadomość nie zostanie wysłana.

Proszę was bardzo o pomoc, bo już nie mam siły na to... Próbowałem wykorzystać coś takiego:
  1. if(preg_match('@(.*)\.(png|jpg|jpeg|gif)@i', $_FILES["plik"]["tmp_name"]))

ale nic z tego nie wyszło...

Oto cały kod:
  1. <script type="text/javascript" src="config/js/jquery-1.7.1.min.js"></script>
  2.  
  3. <?php
  4. require_once 'config/class.phpmailer.php';
  5.  
  6. if(!empty($_POST['email'])) {
  7. $sprawdzEmail = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  8. if (preg_match($sprawdzEmail, $_POST['email'])) {
  9. $email = $_POST['email'];
  10. }
  11. }
  12.  
  13. if(!empty($_POST['wyslij']) && empty($email)) {
  14. echo "<h2>Proszę podać poprawny adres email</h2>";
  15. } elseif(!empty($_POST['wyslij'])) {
  16.  
  17. $mail = new PHPMailer();
  18. $mail->CharSet = "UTF-8";
  19. $mail->Body = "Imię i nazwisko: {$_POST['imie_nazwisko']}\r
  20. Nazwa firmy: {$_POST['nazwa_firmy']}\r
  21. Telefon kontaktowy: {$_POST['tel']}\r
  22. e-mail: {$email}\r
  23. Konfiguracja językowa. Z języka: {$_POST['z_jezyka']} na język: {$_POST['na_jezyk']}\r
  24. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  25. Oczekiwany termin realizacji: {$_POST['termin']}\r
  26. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  27. Zachowanie układu dokumentu: {$_POST['uklad']}\r
  28. Dodatkowe informacje: {$_POST['info']}";
  29. $mail->SetFrom($_POST['email'], $_POST['imie_nazwisko'].' '.$_POST['nazwa_firmy']);
  30. $mail->AddAddress('moj@mail.com', 'Nazwa nazwa');
  31. $mail->Subject = 'Zapytanie o wycenę';
  32.  
  33. if(!empty($_FILES)) {
  34. $fileCount = count($_FILES["plik"]["tmp_name"]);
  35. $i = 0;
  36. for($i; $i<$fileCount; $i++) {
  37. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  38. }
  39.  
  40. }
  41.  
  42. if(!$mail->Send()) {
  43. echo '<h2>Wiadomość nie została wysłana.</h2>';
  44. echo 'Błąd wysyłania: ' . $mail->ErrorInfo;
  45. } else {
  46. echo '<h2>Wiadomość została wysłana</h2>';
  47. }
  48. }
  49. ?>
  50.  
  51.  
  52. <script type="text/javascript">
  53. $(document).ready(
  54. function()
  55. {
  56. $("#dodaj").click(function()
  57. {
  58. var new_label = $("<label>");
  59. var new_input = $("<input>");
  60. new_input.attr("type", "file");
  61. new_input.attr("name", "plik[]");
  62. new_input.attr("class", "input_5");
  63. var new_link = $("<a>");
  64. new_link.attr("href", "#");
  65. new_link.attr("class", "but3");
  66. new_link.html("usuń");
  67. new_link.click(function()
  68. {
  69. $(this).parent("label").remove();
  70. });
  71.  
  72. new_label.append(new_input);
  73. new_label.append(new_link);
  74. $("form[name=wycena]").append(new_label);
  75. new_label.appendTo(prawa);
  76. new_label.style.display = "block";
  77. return false;
  78. });
  79.  
  80. });
  81. </script>
  82.  
  83. <script type="text/javascript">
  84. // <![CDATA[
  85. function sprawdz(formularz)
  86. {
  87. for (i = 0; i < formularz.length; i++)
  88. {
  89. var pole = formularz.elements[i];
  90. if (!pole.disabled && !pole.readonly && (pole.name == "tel" || pole.name == "imie_nazwisko" || pole.name == "z_jezyka" || pole.name == "na_jezyk" || pole.name == "rodzaj" || pole.name == "uklad" || pole.name == "e-mail") && pole.value == "")
  91. {
  92. alert("Proszę wypełnić wszystkie obowiązkowe pola!");
  93. return false;
  94. }
  95. }
  96. return true;
  97. }
  98. // ]]>
  99. </script>
  100.  
  101.  
  102. <form method="post" action="#" name="wycena" enctype="multipart/form-data" onsubmit="if (sprawdz(this)) return true; return false">
  103. Imię i nazwisko:
  104. <input name="imie_nazwisko" type="text" class="input_1" value="<?php if($_POST['wyslij']){echo $_POST['imie_nazwisko'];} ?>" />
  105. Nazwa firmy:
  106. <input name="nazwa_firmy" type="text" class="input_1" value="<?php if($_POST['wyslij']){echo $_POST['nazwa_firmy'];} ?>" />
  107. Adres e-mail:
  108. <input name="email" type="text" class="input_1" value="<?php if($_POST['wyslij']){echo $_POST['email'];} ?>" />
  109. Telefon kontaktowy:
  110. <input name="tel" type="text" class="input_1" value="<?php if($_POST['wyslij']){echo $_POST['tel'];} ?>" />
  111. Konfiguracja językowa:
  112. z języka:<input name="z_jezyka" type="text" class="input_2" value="<?php if($_POST['wyslij']){echo $_POST['z_jezyka'];} ?>" /> na język: <input name="na_jezyk" type="text" class="input_2" value="<?php if($_POST['wyslij']){echo $_POST['na_jezyk'];} ?>" />
  113. Rodzaj tłumaczenia:
  114. <select name="rodzaj" class="input_3">
  115. <option></option>
  116. <option value="Tak">Zwykłe</option>
  117. <option value="Nie">Przysięgłe</option>
  118. </select>
  119. Oczekiwany termin realizacji:
  120. <input name="termin" type="text" class="input_1" value="<?php if($_POST['wyslij']){echo $_POST['termin'];} ?>" />
  121. Zachowanie układu dokumentu:
  122. <select name="uklad" class="input_3">
  123. <option></option>
  124. <option value="Tak">Tak</option>
  125. <option value="Nie">Nie</option>
  126. </select>
  127.  
  128. Dodatkowe informacje:
  129. <textarea name="info" rows="10" class="input_4"><?php if($_POST['wyslij']){echo $_POST['info'];} ?></textarea>
  130.  
  131.  
  132. Prześlij plik:
  133. <div id="prawa"><input name="plik[]" type="file" value="" class="input_5"/></div>
  134. (dozwolone formaty: pdf, doc(x), xls(x), ppt(x), jpg)
  135.  
  136. <a href="#" id="dodaj" class="but2">Dodaj kolejny plik</a>
  137. <input type="reset" value="Wyczyść formularz" class="but2" />
  138. <input name="wyslij" type="submit" value="Wyślij >>" class="but" />
  139. </form>




To jest sprawny kod, jeżeli ktoś taki potrzebuje i nie przeszkadza mu, że wszystko można przez niego przepuścić a on nigdy błędu nie wyświetli to może z niego skorzystać (musi dorzucić tylko phpmailera i jquery) smile.gif

Pozdrawiam i liczę na was! smile.gif
Piotrek.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
skowron-line
post 6.12.2012, 14:51:18
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3.  
  4. if(in_array($ext, array('jpg', 'doc', 'xls'))
  5. {
  6. //dozwolone
  7. }
  8. else
  9. {
  10. //niedozolone
  11. }


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
huhuhh
post 6.12.2012, 16:16:58
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


Cytat(skowron-line @ 6.12.2012, 14:51:18 ) *
  1. file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3.  
  4. if(in_array($ext, array('jpg', 'doc', 'xls'))
  5. {
  6. //dozwolone
  7. }
  8. else
  9. {
  10. //niedozolone
  11. }



brakowało jednego nawiasu
  1. $file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3. if(in_array($ext, array('jpg', 'doc', 'xls'))) {
  4. echo '<h2>Wiadomość została wysłana</h2>';
  5. } else {
  6. echo '<h2>error</h2>';
  7. }


teraz działa, tylko, że zawsze wywala error, nawet jak wysyłam plik .jpg
Czego to może być wina?

aaa... i jeszcze jak go umieścić w całości? bo mimo tego, że wywala error to narazie maila nie zatrzymuje i wysyła go do mnie :/
Go to the top of the page
+Quote Post
skowron-line
post 6.12.2012, 16:26:32
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Zwróć uwagę na wielkość liter


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
huhuhh
post 6.12.2012, 16:54:02
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


Cytat(skowron-line @ 6.12.2012, 16:26:32 ) *
Zwróć uwagę na wielkość liter


Próbowałem wszystkiego i nadal nic, do każdego formatu pokazuje 'error' a i tak wysyła. Może go w złym miejscu umieściłem?

  1. <?php
  2. require_once 'config/class.phpmailer.php';
  3.  
  4. if(!empty($_POST['email'])) {
  5. $sprawdzEmail = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  6. if (preg_match($sprawdzEmail, $_POST['email'])) {
  7. $email = $_POST['email'];
  8. }
  9. }
  10.  
  11. if(!empty($_POST['wyslij']) && empty($email)) {
  12. echo "<h2>Proszę podać poprawny adres email</h2>";
  13. } elseif(!empty($_POST['wyslij'])) {
  14.  
  15. $mail = new PHPMailer();
  16. $mail->CharSet = "UTF-8";
  17. $mail->Body = "Imię i nazwisko: {$_POST['imie_nazwisko']}\r
  18. Nazwa firmy: {$_POST['nazwa_firmy']}\r
  19. Telefon kontaktowy: {$_POST['tel']}\r
  20. e-mail: {$email}\r
  21. Konfiguracja językowa. Z języka: {$_POST['z_jezyka']} na język: {$_POST['na_jezyk']}\r
  22. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  23. Oczekiwany termin realizacji: {$_POST['termin']}\r
  24. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  25. Zachowanie układu dokumentu: {$_POST['uklad']}\r
  26. Dodatkowe informacje: {$_POST['info']}";
  27. $mail->SetFrom($_POST['email'], $_POST['imie_nazwisko'].' '.$_POST['nazwa_firmy']);
  28. $mail->AddAddress('moj@mail.com', 'Bla bla');
  29. $mail->Subject = 'Zapytanie o wycenę';
  30.  
  31. if(!empty($_FILES)) {
  32. $fileCount = count($_FILES["plik"]["tmp_name"]);
  33. $i = 0;
  34. for($i; $i<$fileCount; $i++) {
  35. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  36. }
  37. }
  38.  
  39. $file = $_FILES["plik"]["name"][$i];
  40. $ext = pathinfo($file, PATHINFO_EXTENSION);
  41. if(in_array($ext, array('jpg','jpeg','doc','xls'))) {
  42. echo '<h2>Wiadomość została wysłanaaa</h2>';
  43. } else {
  44. echo '<h2>error</h2>';
  45. }
  46.  
  47. if(!$mail->Send()) {
  48. echo '<h2>Wiadomość nie została wysłana.</h2>';
  49. echo 'Błąd wysyłania: ' . $mail->ErrorInfo;
  50. } else {
  51. echo '<h2>Wiadomość została wysłana</h2>';
  52. }
  53. }
  54. ?>


Ten post edytował huhuhh 6.12.2012, 16:54:42
Go to the top of the page
+Quote Post
skowron-line
post 7.12.2012, 10:39:15
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. $file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3. if(in_array($ext, array('jpg','jpeg','doc','xls'))) {
  4. echo '<h2>Wiadomość została wysłanaaa</h2>'; //<---- tu wyswietlasz komunikat ze wiadomość została wysłana ale jej jeszcze nie wysłałeś
  5. } else {
  6. echo '<h2>error</h2>'; //<----- tu wyświetlasz błąd i to że go wyświetlisz nie oznacza że skrypt przestał działąć
  7. }
  8.  
  9. if(!$mail->Send()) { //<------ tu wysyłasz
  10. echo '<h2>Wiadomość nie została wysłana.</h2>';
  11. echo 'Błąd wysyłania: ' . $mail->ErrorInfo;
  12. } else {
  13. echo '<h2>Wiadomość została wysłana</h2>';
  14. }
  15. }


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 11:10:52
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


Trochę zaczynam rozumieć... ale jestem jednak bardziej zielony niż myślałem i w tym momencie nie wiem jak wynik sprawdzenia poprawności formatu pliku (Twojego skryptu) podpiąć do całości i móc ew. zablokować wysyłanie maila.

Tak sobie myślę, że jeżeli sprawdzanie poprawności maila jest na samej górze:

  1. if(!empty($_POST['email'])) {
  2.  
  3. $sprawdzEmail = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  4.  
  5. if (preg_match($sprawdzEmail, $_POST['email'])) {
  6.  
  7. $email = $_POST['email'];
  8.  
  9. }
  10.  
  11. }



a wynik tego sprawdzenia znajduje się tutaj:

  1. if(!empty($_POST['wyslij']) && empty($email)) {
  2.  
  3. echo "<h2>Proszę podać poprawny adres email</h2>";
  4.  
  5. } elseif(!empty($_POST['wyslij'])) {




To wydaje mi się, że podana przez Ciebie funkcja powinna znajdować się pod tą od maila, np. tak:

  1. if(!empty($_POST['email'])) {
  2.  
  3. $sprawdzEmail = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  4.  
  5. if (preg_match($sprawdzEmail, $_POST['email'])) {
  6.  
  7. $email = $_POST['email'];
  8.  
  9. }
  10.  
  11. }
  12.  
  13. $file = $_FILES["plik"]["name"][$i];
  14. $ext = pathinfo($file, PATHINFO_EXTENSION);
  15. if(in_array($ext, array('jpg','jpeg','doc','xls'))) {
  16. echo '<h2>Wiadomość została wysłanaaa</h2>'; //<---- tu wyswietlasz komunikat ze wiadomość została wysłana ale jej jeszcze nie wysłałeś
  17. } else {
  18. echo '<h2>error</h2>'; //<----- tu wyświetlasz błąd i to że go wyświetlisz nie oznacza że skrypt przestał działąć
  19. }


ale nie powinna zawierać komunikatów tylko wynik w postaci zmiennej, który dorzucimy do:

  1. if(!empty($_POST['wyslij']) && empty($email)) {
  2.  
  3. echo "<h2>Proszę podać poprawny adres email</h2>";
  4.  
  5. } elseif(!empty($_POST['wyslij'])) {



TAK?questionmark.gifquestionmark.gif smile.gif ale jak załączyć ten wynik to już nie mam pojęcia... Proszę o pomoc smile.gif
Go to the top of the page
+Quote Post
skowron-line
post 7.12.2012, 11:18:07
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


"Jedyny" i najprostszy sposób w jaki powinieneś to zrobić to
  1. $error = false;
  2. $msg = '';
  3. if(1 != 2)
  4. {
  5. $error = true;
  6. $msg = "blad w 1 warunku";
  7. }
  8.  
  9. if(warunek == false)
  10. {
  11. $error = true;
  12. $msg .= "blad w 2 warunku";
  13. }
  14.  
  15. if($error == false) // nie ma błędu
  16. {
  17. $phpmailer->send();
  18. }
  19. else
  20. {
  21. echo $msg;
  22. }



--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 11:35:09
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


umieściłem kod w tym miejscu:

  1. if(!empty($_FILES)) {
  2. $fileCount = count($_FILES["plik"]["tmp_name"]);
  3. $i = 0;
  4. for($i; $i<$fileCount; $i++) {
  5. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  6. }
  7. }
  8.  
  9. $file = $_FILES["plik"]["name"][$i];
  10. $ext = pathinfo($file, PATHINFO_EXTENSION);
  11. if(in_array($ext, array("jpg","jpeg","doc","xls"))) {
  12. echo '<h2>Wiadomość została wysłanaaa</h2>';
  13. } else {
  14. echo '<h2>error</h2>';
  15. }
  16.  
  17. $error = false;
  18. $msg = '';
  19. if(1 != 2)
  20. {
  21. $error = true;
  22. $msg = "blad w 1 warunku";
  23. }
  24. if(warunek == false)
  25. {
  26. $error = true;
  27. $msg .= "blad w 2 warunku";
  28. }
  29. if($error == false) // nie ma błędu
  30. {
  31. $mail->send();
  32. }
  33. else
  34. {
  35. echo $msg;
  36. }
  37. }
  38. ?>


i wyświetla mi przy każdym pliku taki błąd:
error
blad w 1 warunku


Nawet jak wysyłam bez załacznika.

I jeszcze co do samej funkcji sprawdzania formatów: ani razu nie pokazała dobrego komunikatu, czy ona faktycznie sprawdza te pliki? (próbowałem różnych formatów i różnych wielkości liter)


Wiem, że marudzę i że nie ogarniam tego, ale dlatego piszę w Przedszkolu tongue.gif a jestem uparty bo chciałbym to skończyć jak zacząłem.

Pozdrawiam i doceniam to, że mi odpisujesz skowron smile.gif
Go to the top of the page
+Quote Post
nospor
post 7.12.2012, 12:23:29
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




if(1 != 2)
Ty naprawdę teraz tak masz? Przecież 1 zawsze jest różne od 2 więc zawsze ten IF ci się wykona


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 12:43:53
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


faktycznie... tongue.gif to było dziwne. zrobiłem coś takiego:

  1. $file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3. $dostepne = array("jpg","jpeg","doc","xls");
  4.  
  5. $error = false;
  6. $msg = '';
  7. if($ext != $dostepne)
  8. {
  9. $error = true;
  10. $msg = "blad w 1 warunku";
  11. }
  12. if(warunek == false)
  13. {
  14. $error = true;
  15. $msg .= "blad w 2 warunku";
  16. }
  17. if($error == false) // nie ma błędu
  18. {
  19. $mail->send();
  20. }
  21. else
  22. {
  23. echo $msg;
  24. }



ale nadal wywala blad w 1 warunku
Albo kod źle odczytuje rozszerzenie danego pliku albo źle podałem dostępne formaty i się gubi...
Widzicie błąd?? smile.gif




Ten post edytował huhuhh 7.12.2012, 12:48:49
Go to the top of the page
+Quote Post
nospor
post 7.12.2012, 12:52:50
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




if($ext != $dostepne)
$ext to tekst
$dostepne to tablica
....
nie mozesz od tak jednego z drugim porownac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 13:06:14
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


więc zrobiłem tak, żeby chociaż sprawdzić i nadal błąd:

  1. $file = $_FILES["plik"]["name"][$i];
  2. $ext = pathinfo($file, PATHINFO_EXTENSION);
  3. $dostepne = array("jpg","jpeg","doc","xls");
  4.  
  5. $error = false;
  6. $msg = '';
  7. if($ext != "jpg")
  8. {
  9. $error = true;
  10. $msg = "blad w 1 warunku";
  11. }
  12. if($warunek == false)
  13. {
  14. $error = true;
  15. $msg .= "blad w 2 warunku";
  16. }
  17. if($error == false) // nie ma błędu
  18. {
  19. $mail->send();
  20. }
  21. else
  22. {
  23. echo $msg;
  24. }



i czy zmienna $warunek jest potrzebna? do czego ona służy??


wrzucam cały kod, może zobaczycie czy coś źle umieściłem, że ciągle nic nie wychodzi:

  1. <?php
  2. require_once 'config/class.phpmailer.php';
  3.  
  4. if(!empty($_POST['email'])) {
  5. $sprawdzEmail = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
  6. if (preg_match($sprawdzEmail, $_POST['email'])) {
  7. $email = $_POST['email'];
  8. }
  9. }
  10.  
  11. if(!empty($_POST['wyslij']) && empty($email)) {
  12. echo "<h2>Proszę podać poprawny adres email</h2>";
  13. } elseif(!empty($_POST['wyslij'])) {
  14.  
  15. $mail = new PHPMailer();
  16. $mail->CharSet = "UTF-8";
  17. $mail->Body = "Imię i nazwisko: {$_POST['imie_nazwisko']}\r
  18. Nazwa firmy: {$_POST['nazwa_firmy']}\r
  19. Telefon kontaktowy: {$_POST['tel']}\r
  20. e-mail: {$email}\r
  21. Konfiguracja językowa. Z języka: {$_POST['z_jezyka']} na język: {$_POST['na_jezyk']}\r
  22. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  23. Oczekiwany termin realizacji: {$_POST['termin']}\r
  24. Rodzaj tłumaczenia: {$_POST['rodzaj']}\r
  25. Zachowanie układu dokumentu: {$_POST['uklad']}\r
  26. Dodatkowe informacje: {$_POST['info']}";
  27. $mail->SetFrom($_POST['email'], $_POST['imie_nazwisko'].' '.$_POST['nazwa_firmy']);
  28. $mail->AddAddress('xxx@xxx.com', 'xxx xxx');
  29. $mail->Subject = 'Zapytanie o wycenę tłumaczenia';
  30.  
  31. if(!empty($_FILES)) {
  32. $fileCount = count($_FILES["plik"]["tmp_name"]);
  33. $i = 0;
  34. for($i; $i<$fileCount; $i++) {
  35. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  36. }
  37. }
  38.  
  39. $file = $_FILES["plik"]["name"][$i];
  40. $ext = pathinfo($file, PATHINFO_EXTENSION);
  41. $dostepne = array("jpg","jpeg","doc","xls");
  42.  
  43. $error = false;
  44. $msg = '';
  45. if($ext != "jpg")
  46. {
  47. $error = true;
  48. $msg = "blad w 1 warunku";
  49. }
  50. if($warunek == false)
  51. {
  52. $error = true;
  53. $msg .= "blad w 2 warunku";
  54. }
  55. if($error == false) // nie ma błędu
  56. {
  57. $mail->send();
  58. }
  59. else
  60. {
  61. echo $msg;
  62. }
  63. }
  64. ?>
Go to the top of the page
+Quote Post
nospor
post 7.12.2012, 13:07:03
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$ext = pathinfo($file, PATHINFO_EXTENSION);
var_dump($ext);

Co ci wyświetla?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 13:22:05
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


coś takiego:
string(0) "" blad w 1 warunkublad w 2 warunku

  1. if(!empty($_FILES)) {
  2. $fileCount = count($_FILES["plik"]["tmp_name"]);
  3. $i = 0;
  4. for($i; $i<$fileCount; $i++) {
  5. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  6. }
  7. }
  8.  
  9. $file = $_FILES["plik"]["name"][$i];
  10. $ext = pathinfo($file, PATHINFO_EXTENSION);
  11. var_dump($ext);
  12. $dostepne = array("jpg","jpeg","doc","xls");
  13.  
  14. $error = false;
  15. $msg = '';
  16. if($ext != "jpg")
  17. {
  18. $error = true;
  19. $msg = "blad w 1 warunku";
  20. }
  21. if($warunek == false)
  22. {
  23. $error = true;
  24. $msg .= "blad w 2 warunku";
  25. }
  26. if($error == false) // nie ma błędu
  27. {
  28. $mail->send();
  29. }
  30. else
  31. {
  32. echo $msg;
  33. }
Go to the top of the page
+Quote Post
nospor
post 7.12.2012, 13:29:36
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to skoro $ext nie zawiera nic, to trudno by było równe "jpg" czy cokolwiek innego.
Musisz szukać błędu czemu $ext nie zawiera nic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
huhuhh
post 7.12.2012, 13:33:21
Post #17





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 6.12.2012

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


dzięki za diagnoze smile.gif

Myślę, że błąd jest gdzieś w tym:
  1. $file = $_FILES["plik"]["name"][$i];


  1. if(!empty($_FILES)) {
  2. $fileCount = count($_FILES["plik"]["tmp_name"]);
  3. $i = 0;
  4. for($i; $i<$fileCount; $i++) {
  5. $mail->AddAttachment($_FILES["plik"]["tmp_name"][$i], $_FILES["plik"]["name"][$i]);
  6. }
  7. }



może funkcja jest w złym miejscu i wysyłany plik jakoś ją omija?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:31