Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Brak polskich znaków w formularzu - again
Forum PHP.pl > Forum > Przedszkole
surow
Witam,

Na wstępie przyznam się ze jestem laikiem w PHP a stronę robię dla siebie.
Przeczytałem chyba z 20 stron z różnymi rozwiązaniami niestety nie dzialaja dla mnie bądź coś robię źle.

Próbowałem wklejać w rożne miejsca:

  1. $headers.= "Content-Type: text/plain;charset=utf-8 \r\n";


Będę wdzieczny za każdą pomoc.
Poniżej wycinek ze strony HTML i z skryptu PHP

  1. <form method="post" action="kontakt.php" accept-charset="utf-8">
  2. <label>Imię i nazwisko</label>
  3. <input name="name" placeholder="Jan Kowalski">
  4.  
  5. <label>Email</label>
  6. <input name="email" type="email" placeholder="Podaj swój adres email">
  7.  
  8. <label>Wiadomość</label>
  9. <textarea name="message" placeholder="Napisz tu wiadomość"></textarea>
  10. <label>Wpisz kod z obrazka</label>
  11. <input name="token" type="text" value="" placeholder="Wpisz kod z obrazka">
  12. <img src="token.php" alt="token" />
  13. <input id="submit" name="submit" type="submit" value="Wyślij">
  14.  
  15. </form>


oraz PHP

  1. <?php
  2. if ($_POST['token']==$_SESSION['captcha'])
  3. {
  4. echo "Wpisałeś poprawny kod.";
  5.  
  6. // Tworzymy zmienną dla imienia i nazwiska
  7. $name = $_POST['name'];
  8.  
  9. // Tworzymy zmienną dla adresu email
  10. $email = $_POST['email'];
  11.  
  12. // Tworzymy zmienną dla wiadomości
  13. $message = $_POST['message'];
  14.  
  15. // Podajesz adres email z którego ma być wysłana wiadomość
  16. $odkogo = " info@test.pl";
  17.  
  18. // Podajesz adres email na który chcesz otrzymać wiadomość
  19. $dokogo = " info@test.pl";
  20.  
  21. // Podajesz tytuł jaki ma mieć ta wiadomość email
  22. $tytul = "Formularz kontaktowy";
  23.  
  24. // Przygotowujesz treść wiadomości
  25. $wiadomosc = "";
  26. $wiadomosc .= "Imie i nazwisko: " . $name . "\n";
  27. $wiadomosc .= "Email: " . $email . "\n";
  28. $wiadomosc .= "Wiadomosc: " . $message . "\n";
  29. // Wysyłamy wiadomość
  30.  
  31. $sukces = mail($dokogo, $tytul, $wiadomosc, "Od: <$odkogo>");
  32. }
  33. else
  34. {
  35. echo "Wpisany kod jest niepoprawny.";
  36. }
  37.  
  38. // Przekierowywujemy na potwierdzenie
  39. if ($sukces){
  40. print "<meta http-equiv=\"refresh\" content=\"0;URL=contact.html\">";
  41. }
  42. else{
  43. print "<meta http-equiv=\"refresh\" content=\"0;URL=contacts.html\">";
  44. }
  45. ?>
surow
To żeś się wysilił, już przeczytałem całego googla i nada nie wiem jak to ogarnąć.
Myślałem ze forum jest po to żeby pomagać a nie wklejać link do google thumbsdownsmileyanim.gif
viking
A dokumentację czytałeś? Bo masz tam pełno przykładów jak prawidłowo zakodować znaki w mailu utf-8.
nospor
Cytat
już przeczytałem całego googla
I tym o to sposobem wiemy juz, ze klamiesz smile.gif No i po co tak? A internet pewnie CALY tez juz zgrales na dyskietke? wink.gif
surow
Panowie bez nerw, jestem elektronikiem nie programista niewiele z tego kumam a korzystałem z gotowców.
Strona jest prywatna i nie robię tego zarobkowo.
Liczyłem ze ktoś powie wklej to tu i będzie git wink.gif

dodałem na początku ale dalej krzaczy, co robię nie tak??

  1. <?php
  2. header("Content-Type: text/html; charset=utf-8");
  3. if ($_POST['token']==$_SESSION['captcha'])
  4. {
  5. echo "Wpisałeś poprawny kod.";
  6.  
  7. // Tworzymy zmienną dla imienia i nazwiska
  8. $name = $_POST['name'];
  9.  
  10. // Tworzymy zmienną dla adresu email
  11. $email = $_POST['email'];
  12.  
  13. // Tworzymy zmienną dla wiadomości
  14. $message = $_POST['message'];
  15.  
  16. // Podajesz adres email z którego ma być wysłana wiadomość
  17. $odkogo = " info@test.pl";
  18.  
  19. // Podajesz adres email na który chcesz otrzymać wiadomość
  20. $dokogo = " info@test.pl";
  21.  
  22. // Podajesz tytuł jaki ma mieć ta wiadomość email
  23. $tytul = "Formularz kontaktowy";
  24.  
  25. // Przygotowujesz treść wiadomości
  26. $wiadomosc = "";
  27. $wiadomosc .= "Imie i nazwisko: " . $name . "\n";
  28. $wiadomosc .= "Email: " . $email . "\n";
  29. $wiadomosc .= "Wiadomosc: " . $message . "\n";
  30. // Wysyłamy wiadomość
  31.  
  32. $sukces = mail($dokogo, $tytul, $wiadomosc, "Od: <$odkogo>");
  33. }
  34. else
  35. {
  36. echo "Wpisany kod jest niepoprawny.";
  37. }
  38.  
  39. // Przekierowywujemy na potwierdzenie
  40. if ($sukces){
  41. print "<meta http-equiv=\"refresh\" content=\"0;URL=contact.html\">";
  42. }
  43. else{
  44. print "<meta http-equiv=\"refresh\" content=\"0;URL=contacts.html\">";
  45. }
  46. ?>
leonpro778
Temat: Funkcja mail a polskie znaki
surow
okey poddaje się dwa dni walki wystarczy. Próbowałem wklejać w rożne miejsca i albo się nie wysyła albo dostaje ten text w mailu.
trzczy
Warto spytać support hostingu, bo wiele zależy od konfiguracji programu pocztowego.
Czikusek
Dodaj zaraz po <?php

ob_start();

dodatkowo pamiętaj, żeby pliki zapisywać w formacie UTF-8 BEZ BOM (np. przez notepad).

to: mail($dokogo, $tytul, $wiadomosc, "Od: <$odkogo>"); zamień na:
Kod
$from = $od_kogo;
$naglowek = "From: $from\r\n";
$naglowek .= "Reply-To: $from\r\n";
$naglowek .= "MIME-Version: 1.0\r\n";
$naglowek .= 'Content-type: text/html; charset=utf-8' . "\r\n";

mail($dokogo, $tytul, $wiadomosc, $naglowek);


pozdro aarambo.gif
surow
Czikusek jesteś wielki!!!!!!!!!! Ale looknij bo może coś skopałem wink.gif

Dostaje maila, we From brakuje adresu email, ponadto można to posortować aby info było?:

Imie i nazwisko: ąą
Email: ww@ki.pl
Wiadomosc: ąąśś



  1. <?php
  2. if ($_POST['token']==$_SESSION['captcha'])
  3. {
  4. echo "Wpisałeś poprawny kod.";
  5.  
  6. // Tworzymy zmienną dla imienia i nazwiska
  7. $name = $_POST['name'] ;
  8.  
  9. // Tworzymy zmienną dla adresu email
  10. $email = $_POST['email'];
  11.  
  12. // Tworzymy zmienną dla wiadomości
  13. $message = $_POST['message'];
  14.  
  15. // Podajesz adres email z którego ma być wysłana wiadomość
  16. $odkogo = " info@test.pl";
  17.  
  18. // Podajesz adres email na który chcesz otrzymać wiadomość
  19. $dokogo = " info@test.pl";
  20.  
  21. // Podajesz tytuł jaki ma mieć ta wiadomość email
  22. $tytul = "Formularz kontaktowy";
  23.  
  24. // Przygotowujesz treść wiadomości
  25. $wiadomosc = " ";
  26. $wiadomosc .= "Imie i nazwisko: " . $name . "\r\n" ;
  27. $wiadomosc .= "Email: " . $email . "\r\n";
  28. $wiadomosc .= "Wiadomosc: " . $message . "\r\n";
  29. // Wysyłamy wiadomość
  30. $from = $od_kogo;
  31. $naglowek = "From: $from\r\n";
  32. $naglowek .= "Reply-To: $from\r\n";
  33. $naglowek .= "MIME-Version: 1.0\r\n";
  34. $naglowek .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  35.  
  36. $sukces = mail($dokogo, $tytul, $wiadomosc, $naglowek);
  37. }
  38. else
  39. {
  40. echo "Wpisany kod jest niepoprawny.";
  41. }
  42.  
  43. // Przekierowywujemy na potwierdzenie
  44. if ($sukces){
  45. print "<meta http-equiv=\"refresh\" content=\"0;URL=contact.html\">";
  46. }
  47. else{
  48. print "<meta http-equiv=\"refresh\" content=\"0;URL=form.html\">";
  49. }
  50. ?>


Okey ogarnąłem łamanie linij zmieniając na plain:

  1. $naglowek .= 'Content-type: text/plain; charset=utf-8' . "\r\n";


Jeszcze tylko ten email w From wink.gif
nospor
ten ob_start jest tu totalnie zbedny. Nie dosc ze ma sie nijak do wysylki email to i ma sie nijak do calosci kodu tutaj.

Co do brakujacego from to znajdz 10 roznic
$od_kogo;
$odkogo;
surow
10 punktów za spostrzegawczość nospor.
Wywaliłem ob_start i działa tez bez tego.
Tylko ze w polu From dostaje mój adres info@test.pl można jakoś przechwycić i wkleić adres z formularza??
Nie wiem czy dobrze bedzie ale np:
zamiast

$from = $odkogo;

na

$from = $email;

Czy tak będzie dobrze?? Tzn wygląda mail okey tylko czy to zgodnie ze sztuka?
nospor
Tak, to jest ok
surow
Dziękuje wszystkim za pomoc mój problem został rozwiązany.
specool.gif
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.