Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jeszcze o polskich znakach
Forum PHP.pl > Forum > Przedszkole
Jaca79
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.
Robert1985
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.
Bateria
Dodaj do funkcji mail nagłówek:
  1. $header = "Content-Type: text/html; charset=UTF-8";

jako czwarty parametr
Robert1985
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.
-Jaca79-
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. ?>

Bateria
  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)
Jaca79
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.  
Bateria
sprawdź kodowanie wysyłanego maila za pomocą mb_detect_encoding
Jaca79
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.
Bateria
Wywal tę linijkę, nie jest Ci już potrzebna.
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.