Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jeszcze o polskich znakach
Jaca79
post 26.05.2013, 09:03:23
Post #1





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

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


Witam.
Udało mi się napisać prosty skrytpt wysyłający wiadomości ze strony www.
Wszystko wyświetla się poprawnie. Problem pojawia się przy wysyłce.

W przypadku serwera „o2” polskie znaki są ucinane lub pojawiają się krzaki.
W przypadku serwera „gmail” jest wszystko ok. Jest szansa na poprawne
wyślwietlanie polskich znaków na wszystkich serwerach?

I jeszcze jedno. Jako ID użytkownika użyłem jednego pola: „Nazwa użytkownika”.
Gdy wpisuję tam nazwę jednowyrazową, wszystko jest ok. Wystarczy że nazwa
składa się z dwóch wyrazów oddzielonych spacją — pojawia się nieznany nadawca.
Można coś z tym zrobić?

Od razu przyznaję że z PHP mam styczność od wczoraj, także jestem totalnym
nowicjuszem. Proszę o wyrozumiałość, jeśli zdublowałem temat, ale niestety
nie byłem w stanie znaleźć podobnego problemu na forum.
Go to the top of the page
+Quote Post
Robert1985
post 26.05.2013, 09:22:18
Post #2





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Hej, co do kodowania znaków u różnych dostawców klientów, również miałem
problem i nie udało mi się go rozwiązać. Sam jestem ciekaw czy ktoś zrobił
na to jakieś obejście. Co do drugiego punktu to nie miałem takiego problemu może przedstaw
ten kawałek kodu, będzie łatwiej się zorientować o co dokładnie chodzi.


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
Bateria
post 26.05.2013, 09:31:15
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Dodaj do funkcji mail nagłówek:
  1. $header = "Content-Type: text/html; charset=UTF-8";

jako czwarty parametr

Ten post edytował Bateria 26.05.2013, 09:31:49


--------------------
Go to the top of the page
+Quote Post
Robert1985
post 26.05.2013, 09:40:47
Post #4





Grupa: Zarejestrowani
Postów: 84
Pomógł: 7
Dołączył: 5.08.2009
Skąd: Tychy

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


Ja już nie pamiętam dokładnie, bo było to jakiś czas temu i korzystałem z Kohana 2.3.4, a ona wykorzystuje
swiftMail wydaje mi się, że przestawiałem kodowania na różne sposoby i nie pomagało. Ale to inna sytuacja była.


--------------------
"Istnieją dwa sposoby projektowania oprogramowania. Można napisać je tak prosto, że w oczywisty sposób nie będzie w nim niedoskonałości; można też uczynić je tak skomplikowanym ,że nie będzie w nim żadnych oczywistych niedociągnięć.Pierwsza metoda jest znacznie trudniejsza." C.A.R Hoare
Go to the top of the page
+Quote Post
--Jaca79--
post 26.05.2013, 09:48:15
Post #5





Goście







Dzięki za odpowiedzi.
Wklejam kod, bo prawdopodobnie coś robię źle, ponieważ ten sposób nie zadziałał :/

  1. <?php
  2. if($_POST['submit']) {
  3. if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) {
  4. $error = true;
  5. } else {
  6.  
  7. $to = "jakismail@jakisserwer.pl";
  8.  
  9. $name = trim($_POST['name']);
  10. $email = trim($_POST['email']);
  11. $comments = trim($_POST['comments']);
  12.  
  13. $subject = "Wiadomość ze strony";
  14.  
  15. $messages = "Name; $name \r\n Email: $email \r\n Comments: $comments";
  16. $headers = "From:" . $name;
  17. $mailsent = mail($to, $subject, $messages, $headers);
  18.  
  19. if($mailsent) {
  20. $sent = true;
  21. }
  22. }
  23. }
  24. ?>

Go to the top of the page
+Quote Post
Bateria
post 26.05.2013, 11:49:36
Post #6





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


  1. <?php
  2. if($_POST['submit']) {
  3. if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) {
  4. $error = true;
  5. } else {
  6.  
  7. $to = "jakismail@jakisserwer.pl";
  8.  
  9. $name = trim($_POST['name']);
  10. $email = trim($_POST['email']);
  11. $comments = trim($_POST['comments']);
  12.  
  13. $subject = "Wiadomość ze strony";
  14.  
  15. $messages = "Name; $name \r\n Email: $email \r\n Comments: $comments";
  16. $headers = "From:" . $name;
  17. $headers .= "Content-type: text/html; charset=utf-8";
  18. $mailsent = mail($to, $subject, $messages, $headers);
  19.  
  20. if($mailsent) {
  21. $sent = true;
  22. }
  23. }
  24. }
  25. ?>

no i plik zakodowany być musi w utf-8 (bez bom)

Ten post edytował Bateria 26.05.2013, 11:53:43


--------------------
Go to the top of the page
+Quote Post
Jaca79
post 26.05.2013, 11:59:32
Post #7





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

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


Bateria, nie działa. sad.gif
Na 100 % coś robię źle, wklejam jak wygląda cały kod (razem z html).
Po tym co wkleiłem nie przesyła mi polskich znaków w nadawcy (wcześniej mogłem tam napisać np: Jącki
i przesyłało dobrze). W treści mam krzaki i w tytule (który jest ustawiony na stałe — nie ma „Wiadomość ze strony”
tylko „Wiadomość ze strony”

  1.  
  2. <?php
  3. if($_POST['submit']) {
  4. if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['comments'])) {
  5. $error = true;
  6. } else {
  7.  
  8. $to = "jakiś@mail.pl";
  9.  
  10. $name = trim($_POST['name']);
  11. $email = trim($_POST['email']);
  12. $comments = trim($_POST['comments']);
  13.  
  14. $subject = "Wiadomość ze strony";
  15.  
  16. $messages = "Name; $name \r\n Email: $email \r\n Comments: $comments";
  17. $headers = "From:" . $name;
  18. $headers .= "Content-Type: text/html; charset=UTF-8";
  19. $mailsent = mail($to, $subject, $messages, $headers);
  20.  
  21. if($mailsent) {
  22. $sent = true;
  23. }
  24. }
  25. }
  26. ?>
  27.  
  28.  
  29.  
  30. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  31.  
  32. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  33.  
  34. <html xmlns="http://www.w3.org/1999/xhtml">
  35.  
  36. <head>
  37.  
  38. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  39.  
  40. <link rel="stylesheet" type="text/css" href="css/formularzstyle.css" />
  41.  
  42. <title>Formularz kontaktówy próba</title>
  43.  
  44. </head>
  45. <body>
  46. <div id="wrapper">
  47. <h1>Formularz kontaktowy próba</h1>
  48.  
  49. <?php if($error == true) { ?>
  50. <p class="error">Proszę wypełnić wszystkie pola!</p>
  51. <?php } if($sent == true) { ?>
  52. <p class="sent">Twoja wiadomość została wysłana. Dziękuję!</p>
  53. <?php } ?>
  54.  
  55. <div id="contactform">
  56.  
  57. <form name="contact" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  58.  
  59. <label for="name">Nazwa użytkownika:</label>
  60. <input type="text" name="name" />
  61.  
  62. <label for="email">E-mail:</label>
  63. <input type="email" name="email" />
  64.  
  65. <label for="comments">Wiadomość:</label>
  66. <textarea name="comments" rows="10" cols="15"></textarea>
  67.  
  68. <input type="submit" name="submit" class="submit" value="Wyślij" />
  69. </form>
  70.  
  71. <div style="clear:both;"></div>
  72.  
  73. </div>
  74. </div>
  75. </body>
  76. </html>
  77.  
Go to the top of the page
+Quote Post
Bateria
post 26.05.2013, 13:52:52
Post #8





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


sprawdź kodowanie wysyłanego maila za pomocą mb_detect_encoding


--------------------
Go to the top of the page
+Quote Post
Jaca79
post 26.05.2013, 14:33:23
Post #9





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

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


Bateria działa!
Wielkie dzięki. Serwer miał ustawione kodowanie na ISO-8859-1 (zachodnioeuropejski).
Przestawiłem na UTF-8 i gra! smile.gif
Wielkie dzięki za pomoc!

P.s.
Po wstawieniu tej linijki:

$headers .= "Content-Type: text/html; charset=UTF-8";

w polu nadawcy w odebranym mailu wyświetla mi się:

Content-Type: text/html@nazwaserwerapl>, charset=UTF-8 <charset=UTF-8>

Nie mam pojęcia dlaczego.
Zostanę przy starej wersji kodu, bo jest ok.
Jeszcze raz bardzo dziękuję za pomoc.

Ten post edytował Jaca79 26.05.2013, 15:01:15
Go to the top of the page
+Quote Post
Bateria
post 26.05.2013, 16:11:01
Post #10





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Wywal tę linijkę, nie jest Ci już potrzebna.

Ten post edytował Bateria 26.05.2013, 16:11:15


--------------------
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: 4.07.2025 - 20:40