Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Samowysyłający się formularz
Forum PHP.pl > Forum > Przedszkole
yaboo999
Witam

Chcę zrobić na stronie formularz wysyłający tekst z załącznikiem. Z PHP dopiero zaczynam przygodę, więc oparłem się na skryptach z netu. Znalazłem dwa i je połączyłem. Niestety problem polega na tym, że w momencie wejścia na podstronę z formularzem on automatycznie się wysyła, oczywiście pusty i na dole mam napis potwierdzający to. Oczywiście chodzi o to żeby sam się nie wysyłał, a dopiero po prawidłowym wysłaniu generował potwierdzenie.
Proszę Was spójrzcie w kod i pomóżcie, bo pewnie rozchodzi się o drobną instrukcję:) Dzięki z góry:)

  1.  
  2. <table border="0" width="100%" style="height: 100%"><tbody><tr><td>
  3. <br><br><br><font size=2px face="Verdana" color="#D40000"><b><center>ZAPYTAJ NAS<center></b></font><br><br>
  4. <?php
  5. // sprawdzamy, czy zmienna $submit jest pusta
  6. if ($_POST["submit"]==0) {
  7. // wyświetlamy formularz
  8. echo "<table align=\"center\" height=\"100%\" width=\"100%\" border=\"0\">
  9.  
  10. <FORM NAME=\"zalacznik\" METHOD=\"post\" ENCTYPE=\"multipart/form-data\">
  11. <tr>
  12. <td width=\"200\" align=\"center\">Treść wiadomości</td>
  13. <td align=\"left\"><textarea name=\"tresc\" id=\"tresc\" style=\"border: 2px #D40000; border-style: solid; height: 200px; width: 400px;\"></textarea></td>
  14. </tr>
  15.  
  16. <tr>
  17. <td width=\"200\" align=\"center\">Imię</td>
  18. <td align=\"left\"><br><textarea name=\"imie\" id=\"nick\" style=\"border: 2px #D40000; border-style: solid; height: 15px; width: 200px;\"></textarea></td>
  19. </tr>
  20.  
  21. <tr>
  22. <td width=\"200\" align=\"center\">Nazwisko</td>
  23. <td align=\"left\"><br><textarea name=\"nazwisko\" id=\"nazw\" style=\"border: 2px #D40000; border-style: solid; height: 15px; width: 200px\"></textarea></td>
  24. </tr>
  25.  
  26. <tr>
  27. <td width=\"200\" align=\"center\">Adres e-mail</td>
  28. <td align=\"left\"><br><textarea name=\"email\" id=\"email\" style=\"border: 2px #D40000; border-style: solid; width: 200px; height: 15px\"></textarea></td>
  29. </tr>
  30.  
  31. <tr>
  32. <td width=\"200\" align=\"center\"><br>Załącznik / CV</td>
  33. <td align=\"left\"><br>
  34. <input type=\"hidden\" name=\"wyslij\" value=\"1\" />
  35. <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2000000\" />
  36. <INPUT type=\"file\" name=\"plik1\" style=\"border: 2px #D40000; border-style: solid; width: 200px; height: 20px\" />
  37. </td>
  38. </tr>
  39.  
  40. <tr>
  41. <td><br>&nbsp;</td>
  42. <td><br><INPUT TYPE=\"submit\" VALUE=\"Wyślij\" onclick=\"return confirm('Wysłać formularz?');\" />&nbsp;
  43. </form>
  44. </tr>
  45.  
  46. </table>";
  47.  
  48. }
  49.  
  50. //sprawdzenie czy załącznik pochodzi z formularza
  51. if ($_POST["submit"]==0)
  52. $nazwisko = $_POST["nazwisko"];
  53.  
  54. $imie = $_POST["imie"];
  55.  
  56. $email = $_POST["email"];
  57.  
  58. $tresc= $_POST["tresc"];
  59. {
  60. srand((double)microtime()*1000000);
  61. $znacznik = md5(uniqid(rand()));
  62.  
  63. // dane o odbiorcy, nadawcy
  64.  
  65. $odbiorca="tomasz.jab@wp.pl";
  66. $tytul="Formularz ze strony www.apuniapol.pl";
  67. $nadawca = "WWW.APUNIAPOL.PL";
  68. $nadawca_mail="email@email.pl";
  69.  
  70. // treść listu
  71. $tresclistu = "
  72. Nazwisko: $nazwisko
  73. Imię: $imie
  74. email: $email
  75. tresc: $tresc
  76.  
  77. "; }
  78.  
  79. // definicja nagłówków
  80. $naglowki = "From: $nadawca <$nadawca_mail>\n";
  81. $naglowki .= "MIME-Version: 1.0\n";
  82. $naglowki .= "Content-Type: multipart/mixed;\n";
  83. $naglowki .= "\tboundary=\"___$znacznik==\"";
  84.  
  85. // nagłówki listu
  86. $tresc="--___$znacznik==\n";
  87. $tresc .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  88. $tresc .="Content-Transfer-Encoding: 8bit\n";
  89. $tresc .="\n$tresclistu\n";
  90.  
  91. // nagłówki i obsługa załącznika
  92. $plik_nazwa_tmp = $_FILES["plik1"]["tmp_name"];
  93. $plik_nazwa_oryginalna = $_FILES["plik1"]["name"];
  94. $plik_wielkosc = $_FILES["plik1"]["size"];
  95.  
  96. if (is_uploaded_file($plik_nazwa_tmp))
  97. {
  98. $tresc .="--___$znacznik==\n";
  99. $tresc .="Content-Type: image/gif\n";
  100. $tresc .="Content-Disposition: attachment;\n";
  101. $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
  102. $tresc .="Content-Transfer-Encoding: base64\n\n";
  103. $f = fopen($plik_nazwa_tmp,"rb");
  104. $dane = fread($f,filesize($plik_nazwa_tmp));
  105. fclose($f);
  106. $tresc .= chunk_split(base64_encode($dane));
  107. $tresc .="--___$znacznik==--\n";
  108. }
  109.  
  110. @mail("$odbiorca","$tytul","$tresc","$naglowki") or die('Nie udało się wysłać wiadomości');
  111. // wyświetlenie komunikatu w przypadku powodzenia
  112. echo "<div align=\"center\"><strong><br><br>Wiadomość została wysłana poprawnie!<br><br></strong></div>";
  113.  
  114.  
  115.  
  116. ?>
  117. </td></tr></tbody></table>
  118.  
  119.  
yaboo999
Dzięki za odpowiedź, ale chyba nie o to mi chodziło. Mam problem z czymś zupełnie odwrotnym, czyli NIE chcę żeby formularz sam się wysyłał. Chcę żeby został wysłany tylko po kliknięciu na "Wyślij". Próbowałem jednak coś zrobić z tą radą, ale bez skutku.

Pewnie wystarczy coś tylko zmienić w kodzie, żeby nie wykonywał się cały automatycznie po odświeżeniu strony, ale nie wiem co:/

Ewentualnie drugie rozwiązanie - bo gdy wrzucę część odpowiedzialną za wysyłanie do oddzielnego pliku to wszystko działa dobrze, ale wtedy potwierdzenie jest generowane na czystej białej stronie tylko z napisem, że wiadomość wysłana. Ja chcę, żeby to się pojawiało pod, lub nad formularzem, ale na tej samej stronie. Efekt taki uzyskuję używając tego kodu, który podałem, no ale wtedy mam problem z tym samowysyłaniem się:/ I kółko się zamyka:?

Pomóżcie;)
piotr94
dajesz w formularzu
Kod
<input type="hidden" name="is_sent" value="1">

a potem
  1. if($_POST['is_sent']!=1){
  2. //tu wyświetlasz formularz do wypełnienia
  3. }else{
  4. //tu wklejasz to co ma być wykonane po wysłaniu formularza
  5. }

i nie widzę żadnego problemu ;-)
yaboo999
Faktycznie żadnego problemu nie ma - teraz:) Trafiłeś w dyszkę:)

Dzięki
oi.
Jak zmienić nagłówki w tym skrypcie by wysyłał polskie znaki i znaki specjalne HTML typu <a href ... czy <b> ?
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.