Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z formularzem kontaktowym
Forum PHP.pl > Forum > PHP
lolarz
Witam mam problem z formularzem kontaktowym w php

problem polega na tym że np. mimo iż nie wszystkie pola są wypełnione, lub email jest niepoprawny wiadomość jest wysyłana

Wiem że w kodzie jest namieszane, ale w php jestem zielony thumbsdownsmileyanim.gif


kontakt.php:

  1. //sprawdzenie czy załącznik pochodzi z formularza
  2. if ($_POST["wyslij"]==1)
  3. {
  4. srand((double)microtime()*1000000);
  5. $znacznik = md5(uniqid(rand()));
  6.  
  7. // dane o odbiorcy, nadawcy
  8. $odbiorca="adres odbiorcy mailów";
  9. $tytul= $_POST["temat"];
  10. $nadawca_mail= $_POST["email"];
  11.  
  12. // treść listu
  13. $tresclistu = $_POST["tresc"];
  14.  
  15. // definicja nagłówków
  16. $naglowki = "From: $nadawca_mail do <$odbiorca>\n";
  17. $naglowki .= "Content-Type: multipart/mixed;\n";
  18. $naglowki .= "\tboundary=\"___$znacznik==\"";
  19.  
  20. // nagłówki listu
  21. $tresc="--___$znacznik==\n";
  22. $tresc .="Content-Type: text/plain; charset=\"UTF-8\"\n";
  23. $tresc .="\n$tresclistu\n";
  24.  
  25. // nagłówki i obsługa załącznika
  26. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  27. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  28. $plik_wielkosc = $_FILES["plik1"]["size"];
  29.  
  30. $plik_nazwa_tmp2 = $_FILES["plik2"]["tmp_name"];
  31. $plik_nazwa_oryginalna2 = $_FILES["plik2"]["name"];
  32. $plik_wielkosc2 = $_FILES["plik2"]["size"];
  33.  
  34. $plik_nazwa_tmp3 = $_FILES["plik3"]["tmp_name"];
  35. $plik_nazwa_oryginalna3 = $_FILES["plik3"]["name"];
  36. $plik_wielkosc3 = $_FILES["plik3"]["size"];
  37.  
  38. $plik_nazwa_tmp4 = $_FILES["plik4"]["tmp_name"];
  39. $plik_nazwa_oryginalna4 = $_FILES["plik4"]["name"];
  40. $plik_wielkosc4 = $_FILES["plik4"]["size"];
  41.  
  42. if (is_uploaded_file($plik_nazwa_tmp))
  43. {
  44. $tresc .="--___$znacznik==\n";
  45. $tresc .="Content-Type: image/gif\n";
  46. $tresc .="Content-Disposition: attachment;\n";
  47. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  48. $tresc .="Content-Transfer-Encoding: base64\n\n";
  49. $f = fopen($plik_nazwa_tmp,"rb");
  50. $dane = fread($f,filesize($plik_nazwa_tmp));
  51. fclose($f);
  52. $tresc .= chunk_split(base64_encode($dane));
  53. }
  54.  
  55. if (is_uploaded_file($plik_nazwa_tmp))
  56. {
  57. $tresc .="--___$znacznik==\n";
  58. $tresc .="Content-Type: image/gif\n";
  59. $tresc .="Content-Disposition: attachment;\n";
  60. $tresc .=" filename=\"$plik_nazwa_oryginalna2\"\n";
  61. $tresc .="Content-Transfer-Encoding: base64\n\n";
  62. $f = fopen($plik_nazwa_tmp2,"rb");
  63. $dane = fread($f,filesize($plik_nazwa_tmp2));
  64. fclose($f);
  65. $tresc .= chunk_split(base64_encode($dane));
  66. }
  67.  
  68. if (is_uploaded_file($plik_nazwa_tmp))
  69. {
  70. $tresc .="--___$znacznik==\n";
  71. $tresc .="Content-Type: image/gif\n";
  72. $tresc .="Content-Disposition: attachment;\n";
  73. $tresc .=" filename=\"$plik_nazwa_oryginalna3\"\n";
  74. $tresc .="Content-Transfer-Encoding: base64\n\n";
  75. $f = fopen($plik_nazwa_tmp3,"rb");
  76. $dane = fread($f,filesize($plik_nazwa_tmp3));
  77. fclose($f);
  78. $tresc .= chunk_split(base64_encode($dane));
  79. }
  80.  
  81. if (is_uploaded_file($plik_nazwa_tmp))
  82. {
  83. $tresc .="--___$znacznik==\n";
  84. $tresc .="Content-Type: image/gif\n";
  85. $tresc .="Content-Disposition: attachment;\n";
  86. $tresc .=" filename=\"$plik_nazwa_oryginalna4\"\n";
  87. $tresc .="Content-Transfer-Encoding: base64\n\n";
  88. $f = fopen($plik_nazwa_tmp4,"rb");
  89. $dane = fread($f,filesize($plik_nazwa_tmp4));
  90. fclose($f);
  91. $tresc .= chunk_split(base64_encode($dane));
  92. }
  93.  
  94. // wysłanie listu
  95. if (mail($odbiorca,$tytul,$tresc,$naglowki))
  96. {
  97. echo "";
  98. }
  99. else
  100. {
  101. print "";
  102. }
  103. }
  104. if(!empty($tytul) && !empty($nadawca_mail) && !empty($tresclistu)) {
  105.  
  106. //--- początek funkcji weryfikującej adres e-mail ---
  107. function checkMail($checkmail) {
  108. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  109. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  110. return true;
  111. }else{
  112. return false;
  113. }
  114. } else {
  115. return false;
  116. }
  117. }
  118. //--- koniec funkcji ---
  119.  
  120. if(checkMail($nadawca_mail)) {
  121. echo "<script type='text/javascript'>window.alert('Wiadomość została wysłana');</script>";
  122. } else {
  123. echo "<script type='text/javascript'>window.alert('Podany Email jest nieprawidłowy!');</script>";
  124. }
  125.  
  126. } else {
  127. //komunikat w przypadku nie powodzenia
  128. echo "<script type='text/javascript'>window.alert('Wypełnij wszystkie pola! (załączniki opcjonalne)');</script>";
  129. }


kontakt.html
  1. <FORM METHOD="post" ACTION="kontakt.php" ENCTYPE="multipart/form-data">
  2. <input type="hidden" name="wyslij" value="1" />
  3. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  4. <input name="email" id="tematmail" placeholder="twój email">
  5. <input name="temat" id="tematmail" placeholder="temat wiadomości"><br>
  6. <br><textarea name="tresc" placeholder="treść wiadomości"></textarea><br>
  7. <br><input type="file" name="plik1" id="file"><br>
  8. <input type="file" name="plik2" id="file"><br>
  9. <input type="file" name="plik3" id="file"><br>
  10. <input type="file" name="plik4" id="file"><br>
  11. <input type="submit" value="wyślij!" id="button"><input style="margin-left:3px;" type="reset" value="resetuj" id="button">
  12. </form>


z góry dziękuje za pomoc thumbsupsmileyanim.gif
buliq
  1. if(!empty($tytul) && !empty($nadawca_mail) && !empty($tresclistu)) {
  2.  
  3. //--- początek funkcji weryfikującej adres e-mail ---
  4. function checkMail($checkmail) {
  5. if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
  6. if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
  7. return true;
  8. }else{
  9. return false;
  10. }
  11. } else {
  12. return false;
  13. }
  14. }
  15. //--- koniec funkcji ---
  16.  
  17. if(checkMail($nadawca_mail)) {
  18. echo "<script type='text/javascript'>window.alert('Wiadomość została wysłana');</script>";
  19. } else {
  20. echo "<script type='text/javascript'>window.alert('Podany Email jest nieprawidłowy!');</script>";
  21. }
  22.  
  23. } else {
  24. //komunikat w przypadku nie powodzenia
  25. echo "<script type='text/javascript'>window.alert('Wypełnij wszystkie pola! (załączniki opcjonalne)');</script>";
  26. }


Tutaj masz ładny fragment sprawdzający, szkoda że sprawdza po fakcie wysyłki wiadomości.
Po co tyle razy sprawdzasz is_uploaded_file?
lolarz
Jak już pisałem, w php jestem zielony. Ten kod raczej sklejałem z kilku różnych, a nie pisałem samodzielnie smile.gif

Sprawdzam is_uploaded_file kilka razy bo jest kilka załączników. Z tym też mam wsumie problem...bo jeżeli załącze np 1 plik, to na poczcie pojawia się ten jeden plik i 3 kolejne o nazwie "noname" sadsmiley02.gif

A więc mogłbym prosić o przekształcenie tego kodu aby to działało?? I przy okazji podać jakiś sposób na te załączniki questionmark.gif

(żeby np po załączeniu jednego pliku na poczcie pojawiał się 1 plik bez tych trzech innych plików z nazwą "noname", potem tak samo z dwoma plikami itd.)
buliq
Nie ma nic za darmo smile.gif
Tutaj raczej uczymy robić samemu niż kopiować bezmyślnie.
Masz kilka załączników, ale w warunku sprawdzającym zapomniałeś sprawdzać kilku załączników, a zawsze sprawdzasz jeden i ten sam.
Kod wysyłający i uploadujący powinieneś wrzucić przed komunikatem Wiadomość została wysłana.
lolarz
Dzięki wielkie!

wszystko pozmieniałem jak mówiłeś/aś i narazie działa smile.gif

i rozumiem że tam gdzie są
  1. if (is_uploaded_file($plik_nazwa_tmp))


trzeba pozmieniać na:

  1. if (is_uploaded_file($plik_nazwa_tmp1))
  2. if (is_uploaded_file($plik_nazwa_tmp2))


itd??
buliq
Dokładnie smile.gif tylko bez 1 bo nie masz takiej zmiennej
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.