Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Formularz kontaktowy, Brak polskich liter
--pietro--
post 25.07.2013, 01:47:21
Post #1





Goście







Wstawiłem na stronę html skrypt formularza kontaktowego znaleziony w internecie. Przy testowaniu wszystko było OK, bo do testów używałem swojej skrzynki na poczta.interia.pl. Natomiast gdy maile zaczeły byc wysyłane na skrzynke poczta.o2.pl, zaczeły się problemy, bo wiadomości zaczeły dochodzic bez polskich znaków.


Skrypt wygląda tak. Jeśli możecie mi doradzic co zmienic , i dokładnie w którym miejscu - będę bardzo wdzięczny.
  1. <?php
  2.  
  3.  
  4. if(isset($_POST['Email_Address'])) {
  5.  
  6. include 'freecontactformsettings.php';
  7.  
  8. function died($error) {
  9. echo "Sorry, but there were error(s) found with the form you submitted. ";
  10. echo "These errors appear below.<br /><br />";
  11. echo $error."<br /><br />";
  12. echo "Please go back and fix these errors.<br /><br />";
  13. die();
  14. }
  15.  
  16. if(!isset($_POST['Full_Name']) ||
  17. !isset($_POST['Email_Address']) ||
  18. !isset($_POST['Telephone_Number']) ||
  19. !isset($_POST['Your_Message']) ||
  20. !isset($_POST['AntiSpam'])
  21. ) {
  22. died('Niestety występuje problem w formularzu.');
  23. }
  24.  
  25. $full_name = $_POST['Full_Name']; // required
  26. $email_from = $_POST['Email_Address']; // required
  27. $telephone = $_POST['Telephone_Number']; // not required
  28. $comments = $_POST['Your_Message']; // required
  29. $antispam = $_POST['AntiSpam']; // required
  30.  
  31. $error_message = "";
  32.  
  33. $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  34. if(preg_match($email_exp,$email_from)==0) {
  35. $error_message .= 'Wprowadzony adres e-mail nie jest poprawny.<br />';
  36. }
  37. if(strlen($full_name) < 2) {
  38. $error_message .= 'Nazwisko zostało błędnie wpisanenie.<br />';
  39. }
  40. if(strlen($comments) < 2) {
  41. $error_message .= 'Wpisz wiadomość.<br />';
  42. }
  43.  
  44. if($antispam <> $antispam_answer) {
  45. $error_message .= 'Odpowiedź na pytanie nie jest prawidłowa.<br />';
  46. }
  47.  
  48. if(strlen($error_message) > 0) {
  49. died($error_message);
  50. }
  51. $email_message = "Wiadomość wysłana ze strony wykrojekrawieckie.pl.\r\n";
  52.  
  53. function clean_string($string) {
  54. $bad = array("content-type","bcc:","to:","cc:");
  55. return str_replace($bad,"",$string);
  56. }
  57.  
  58. $email_message .= "Imię i nazwisko: ".clean_string($full_name)."\r\n";
  59. $email_message .= "e-mail: ".clean_string($email_from)."\r\n";
  60. $email_message .= "Telefon: ".clean_string($telephone)."\r\n";
  61. $email_message .= "Wiadomość: ".clean_string($comments)."\r\n";
  62.  
  63. $headers = 'From: '.$email_from."\r\n".
  64. 'Reply-To: '.$email_from."\r\n" .
  65. 'X-Mailer: PHP/' . phpversion();
  66. mail($email_to, $email_subject, $email_message, $headers);
  67. header("Location: $thankyou");
  68. ?>
  69. <script>location.replace('<?php echo $thankyou;?>')</script>
  70. <?php
  71. }
  72. die();
  73. ?>
Go to the top of the page
+Quote Post
gitbejbe
post 25.07.2013, 06:06:08
Post #2





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


treść wiadomości zacznij od:

$email_message="Content-Type: text/html; charset=utf8";

przed założeniem tematu szukaj na forum, bo parę dni temu tez ktoś pisał o tym problemie
Go to the top of the page
+Quote Post
--pietro--
post 26.07.2013, 02:53:52
Post #3





Goście







Słabo znam się na php. Jak narazie maile dochodzą bez polskich liter. Moze mi ktos podac w którym to ma byc dokładnie miejscu??
Go to the top of the page
+Quote Post
--pietro--
post 26.07.2013, 13:05:17
Post #4





Goście







W którym dokładnie miejscu trzeba wstawic ta linijkę z kodowaniem?questionmark.gif?
Go to the top of the page
+Quote Post
b4rt3kk
post 26.07.2013, 13:17:57
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Koledze kilka postów wyżej chodziło chyba o dodanie odpowiednich nagłówków. Daj sobie takie headers:

  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";


Ten post edytował b4rt3kk 26.07.2013, 13:18:14


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
--pietro--
post 26.07.2013, 14:00:41
Post #6





Goście







Nagłówek dopisany.
Kodowanie strony html ustawione na charset=utf-8
Kodowanie w edytorze utf-8

a wiadomości wysyłane tak:
">ęśżź po ile kopa jajek?questionmark.gif

nadak przychodzą tak:
">ęśżź po ile kopa jajek?questionmark.gif
Go to the top of the page
+Quote Post
gorden
post 26.07.2013, 14:29:35
Post #7





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


spróbuj przekonwertować w edytorze na utf8 bez bom (w notepad++: format > konwertuj na utf-8 bez bom)
jeśli to nie pomoże, spróbuj dodać na początek kodu php:
  1. header('Content-type: text/html; charset=utf-8');


jeśli to nie pomoże, sprawdź w treści maila (np. echo $email_message) przed jego wysłaniem, czy w samej zmiennej występują polskie znaki
Go to the top of the page
+Quote Post
-Gość-
post 26.07.2013, 15:53:03
Post #8





Goście







Mam polskie litery. Nie wiem tak do koncz co pomogło, czy konwertacja bez boom, czy cos innego.

Teraz kod wyglada nastepujaco:
  1. $headers = 'From: '.$email_from."\r\n".
  2. $headers = 'MIME-Version: 1.0' . "\r\n";
  3. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  4. 'Reply-To: '.$email_from."\r\n" .


Problem sie pojawił, że teraz wszystko sie zlewa:
Było tak:
  1. Imię i nazwisko: ania ania
  2. e-mail: ania@ania.pl
  3. Telefon: 16 18
  4. Wiadomość:


A jest tak:
  1. Imię i nazwisko: ania ania e-mail: ania@ania.pl Telefon: 16 44 Wiadomość:

Go to the top of the page
+Quote Post
b4rt3kk
post 26.07.2013, 15:58:35
Post #9





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Tam gdzie chcesz mieć przełamanie linii daj znacznik HTML-owy <br/>.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Turson
post 28.07.2013, 00:17:04
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Następujący kod u mnie działa prawidłowo. UTF-8 BEZ BOM
  1. $naglowek .="Content-type: text/html; charset=utf-8";
  2. $temat= "=?UTF-8?B?".base64_encode("Rejestracja")."?=";
  3. $tresc = 'Witaj blabla bla';
  4. mail($mail,$temat,$tresc,$naglowek);
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: 8.07.2025 - 17:13