Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz kontaktowy bez funkcji "mail"
Forum PHP.pl > Forum > PHP
lojciec14
Witam. W php nadal raczkuję i ostatnio natrafiłem na pewien problem. Otóż na serwerze na którym musi by postawiona strona nie jest obsługiwana funkcja "mail" ze standardowego formularza. Jedyna słuszna opcja, to wysyłanie takiego formularza ze strony poprzez jakiś serwer smtp. Pisząc do administratora strony otrzymałem w odpowiedzi taki oto link:

http://instrukcja.opoka.org.pl/www-mail.html

Jednakże nie potrafię tego wykorzystać. Chodzi mi o to, by w wyznaczonym miejscu na stronie znalazły się 3 pola tekstowe: Imię i Nazwisko, Adres Email oraz tekst. Potrwierdzane przyciskiem wyślij. Po "kliknięciu" wyślij sprawdzone mają być pola mail i tekst. Wiadomość zaś ma zostać dostarczona na adres email: email@poczta.pl (adres później będzie zupełnie inny). Formularz, z którego zawsze korzystałem miał taką formę:
  1. <?php
  2.  
  3. // sprawdzamy, czy zmienna $submit jest pusta
  4. if (empty($_POST['submit'])) {
  5. // wyświetlamy formularz
  6. echo "<table border=\"0\"><form method=\"post\">
  7.  
  8. <tr>
  9. <td>Imię i nazwisko: </td>
  10. <td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
  11. </tr>
  12. <tr>
  13. <td>Adres E-mail:</td>
  14. <td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
  15. </tr>
  16. <tr>
  17. <td>Nazwa firmy:</td>
  18. <td><input type=\"text\" name=\"firma\" style=\"width: 250px\"></td>
  19. </tr>
  20. <tr>
  21. <td>Tel. kontaktowy:</td>
  22. <td><input type=\"text\" name=\"tel\" style=\"width: 250px\"></td>
  23. </tr>
  24. <tr>
  25. <td>Treść wiadomości:</td>
  26. <td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
  27. </tr>
  28. <tr>
  29. <td>Potwierdź: </td>
  30. <td><input type=\"checkbox\" name=\"potw\" />Zgadzam się na otrzymanie informacji handlowej w rozumieniu ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną.</td>
  31. </tr>
  32. <tr>
  33. <td>&nbsp;</td>
  34. <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
  35. </tr>
  36. </table>";
  37. }
  38. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  39. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['potw'])) {
  40. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  41. // zmienna $message zawiera treść wiadomości
  42. $message = "<b>Wysłał:</b> $_POST[imie]<br/><b>E-mail:</b> $_POST[email]<br/> <b>Firma:</b> $_POST[firma]<br/><b>Tel:</b> $_POST[tel]<br/><br/><b>Treść wiadomości:</b><br/>$_POST[tresc]<br/><br/>----------------------------<br/>Zgadzam się na otrzymanie informacji handlowej w rozumieniu ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną.";
  43. // zmienna $header zawiera przede wszystkim adres zwrotny
  44. $from = "$_POST[imie_nazwisko] <$_POST[email]>";
  45. $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=UTF-8";
  46. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  47. @mail("twój@adres.com","Pytanie ze strony www.strona.com","$message","$header")
  48. or die('Nie udało się wysłać wiadomości');
  49. // wyświetlenie komunikatu w przypadku powodzenia
  50. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  51. }
  52. // lub w przypadku nie wypełnienia formularza do końca
  53. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza! Nie zapomnij potwierdzić informacji handlowych!</span> <a href='kontakt.php'>Wróć do pisania</a> <br/>";
  54.  
  55. ?>


Niestety na tym serwerze nie działa...

Mam nadzieję, że w miarę jasno wytłumaczyłem problem, jeśli nie to czekam na ew. pytania. Pozdrawiam.
erix
Użyj phpMailer; wszystko, czego potrzebujesz, jest w którymś przykładzie użycia dołączonym do paczki.
lojciec14
Ściągnąłem ten phpMailer, jednak nie potrafię dać z nim sobie rady... czy ktoś mógłby mi podać gotowy, lub półgotowy kod do wstawienia na stronkę?
piotr94
  1. ini_set("include_path", "class.phpmailer.php");
  2. require("class.phpmailer.php");
  3. $mail = new PHPMailer();
  4. $mail->IsSMTP();
  5. $mail->Host = ""; // SMTP serwer
  6. $mail->SMTPAuth = true;
  7. $mail->Username = ""; // SMTP login
  8. $mail->Password = "***"; // SMTP hasło
  9.  
  10. $mail->From = "adres@email.nadawcy";
  11. $mail->FromName = 'nazwanadawcy';
  12. $mail->AddAddress('mejl adresata','nazwa adresata');//wysyłanie wpisu na ten adres
  13. $mail->AddReplyTo('mejl zwrotny','nazwa adresata zwrotnego');//wysyłanie adresu zwrotnego
  14. $mail->CharSet = 'utf-8';
  15. $mail->WordWrap = 50;
  16. $mail->IsHTML(true);
  17.  
  18. $mail->Subject = $_POST['temat'];
  19. $mail->Body =$tresc;
  20. $mail->AltBody =$tresc;
  21.  
  22. if(!$mail->Send())
  23. {
  24. echo("Błąd wysyłania wiadomości!<br>");
  25. }else{
  26. echo("Poprawnie wysłano wiadomość!<br>");
  27. }

korzystam z tej wersji skryptu:
http://www.piotrek94.ovh.org/mailphp.zip
lojciec14
Ok dzięki. I teraz jeszcze jedne pytanie. jak pod to podpiąć formularz??
piotr94
odpowiednie wartości, które masz opisane w moim skrypcie zastąp wartościami przesłanymi przez $_POST z formularza ;-)
lojciec14
Przepraszam, ale nadal nie wiem co dalej z tym zrobić.. jestem zielony w temacie..
Blame
$_POST['temat'] jest to pobranie zawartości pola formularza którego name="temat". Tak samo jest z treścią tylko że ona została(również przez $_POST) przypisana do zmiennej $tresc.
lojciec14
Nie daję rady... walczyłem z tym na wszystkie możliwe sposoby, ale nie potrafię się w tym połapać... czy ktoś mógłby stworzyć gotowy kod do wstawienia na stronkę?? sad.gif Jeszcze jak widać spoooro nauki przede mną...
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.