Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zamiast ą,ę,ł,ó,ż,ć pojawiają się inne litery
Forum PHP.pl > Forum > Przedszkole
forma3D
Buduję swoją pierszą stronę internetową i dzisiaj stworzyłem strone kontaktową gdzie po wysłaniu wiadomości miał się ukazać tekst: "Twoja wiadomość została przesłana do Forma 3D. Odpowiemy tak szybko, jak będzie to możliwe. Pozdrawiamy." Ukazuje się ale zamiast ś,ć,ł,ę,ż widać inne litery (skandynawskie?)... możesz to sprawdzić sam www.forma3d.pl/kontakt.html
Chcę również dodać wiadomość która ukaże się jeżeli ktoś nie wpisał emaila, że musi podać swój email adres (gościu@cokolwiek.cokolwiek), oraz dodać do kodu zasadę że bez podania email adresu wiadomość zostanie nie wysłana.
dzieki

podaje kod jakiego użyłem:

  1. <?php
  2.  
  3. /* Email Variables */
  4.  
  5. $emailSubject = 'contactformprocess!';
  6. $webMaster = 'forma3d@forma3d.pl';
  7.  
  8.  
  9. /* Data Variables */
  10.  
  11. $email = $_POST['email'];
  12. $name = $_POST['name'];
  13. $comments = $_POST['comments'];
  14.  
  15.  
  16.  
  17. $body = <<<EOD
  18. <br><hr><br>
  19. Name: $name <br>
  20. Email: $email <br>
  21.  
  22. Comments: $comments <br>
  23. EOD;
  24. $headers = "From: $email\r\n";
  25. $headers .= "Content-type: text/html\r\n";
  26. $success = mail($webMaster, $emailSubject, $body,
  27. $headers);
  28.  
  29.  
  30. /* Results rendered as HTML */
  31.  
  32. $theResults = <<<EOD
  33. <html>
  34. <head>
  35. <title>sent message</title>
  36. <meta http-equiv="refresh" content="5;URL=http://www.forma3d.pl/kontakt.html">
  37. <style type="text/css">
  38. <!--
  39. body {
  40. background-color: #444;
  41. font-family: Century Gothic;
  42. font-size: 20px;
  43. font-style: normal;
  44. line-height: normal;
  45. font-weight: normal;
  46. color: #7cc242;
  47. text-decoration: none;
  48. padding-top: 200px;
  49. margin-left: 150px;
  50. width: 800px;
  51. }
  52.  
  53. -->
  54. </style>
  55. </head>
  56. <div align="center"> Twoja wiadomość została przesłana do Forma 3D. Odpowiemy tak szybko, jak będzie to możliwe. Pozdrawiamy.
  57. Za kilka sekund powrócisz do Forma 3D. !</div>
  58. </div>
  59. </body>
  60. </html>
  61. EOD;
  62. echo "$theResults";
  63.  
  64. ?>


Pozdrawiam
tolomei
Witaj!

Odnośnie polskich znaków - popatrz na sekcję <head> strony którą budujesz. Nie ma tam ustawionego poprawnego kodowania.

Odnośnie walidacji adresu e-mail - możesz użyć funcji preg_match. Wpisz w google "walidacja email php" i zostaniesz zasypany wręcz próbkami kodu.

Pozdrawiam.
phpion
Proszę pamiętać o umieszczaniu kodu w odpowiednim bbcode - tym razem sam poprawię, ale na przyszłość proszę robić to samodzielnie.
forma3D
phpion - przepraszam i dzięki za poprawke, będe pamietał na przyszłość.

tolomei - dzięki za wskazówki, co do walidacji email to chyba dam rade, ale co do poprawnego kodowania w sekcji <head> polskich znaków, to ja nie mam zielonego pojęcia o czym jest mowa (od tygodnia dopiero buduję moją pierwszą stronę, nigdy w życiu nie miałem do czynienia z php, css, java, itd., jestem świeży w tym temacie).
Czy możesz mnie jakoś naprowadzić, co, gdzie i jak z tym kodowaniem ?
Pozdrawiam!
usb2.0
w sekcji <head>

Kod
<meta charset="utf-8">
forma3D
usb2.0 - 100krotne dzięki!!! działa

Znalazłem kod do walidacji emaila i nie wiem gdzie mam go umieścic, dodałem go do mojego php kodu do kontakt zakładki po lini 11 $email = $_POST['email']; ale dostaje wiadomość że mam syntax error na samym końcu kodu ?>
Czy zapomniałem o czymś? A może muszę go dodać gdzie indziej?


  1. function verifyEmail($email)
  2. {
  3. // checks proper syntax
  4. if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email))
  5. {
  6. return false;
  7. }
  8. else
  9. {// gets domain name
  10. list($username,$domain)=split('@',$email);
  11. // checks for if MX records in the DNS
  12. $mxhosts = array();
  13. if(!getmxrr($domain, $mxhosts))
  14. {
  15. // no mx records, ok to check domain
  16. if (!fsockopen($domain,25,$errno,$errstr,30))
  17. {
  18. return false;
  19. }
  20. else
  21. {
  22. return true;
  23. }
  24. }
  25. else
  26. {
  27. // mx records found
  28. foreach ($mxhosts as $host)
  29. {
  30. if (fsockopen($host,25,$errno,$errstr,30))
  31. {
  32. return true;
  33. }
  34. }
  35. return false;
  36. }
  37. }

vonski
Syntax Error masz dlatego, że w kodzie który podałeś brakuje na końcu jednego nawiasu klamrowego: }
Natomiast co do kodu.. nie wnikam co tam się dzieje, ale nie wygląda to na "zwykłą" walidajcę maila smile.gif Jeśli zadowala Cię sprawdzenie jedynie poprawności adresu e-mail, to wystarczy jak będziesz miał:

  1. function verifyEmail($email)
  2. {
  3. // checks proper syntax
  4. if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email))
  5. {
  6. return false;
  7. }
  8. return true;
  9. }


Co do umieszczenia tego kodu to powyższy możesz wrzucić np. na sam początek skryptu, z tym że jest to jedynie definicja funkcji, którą trzeba jeszcze wywołać, tzn. przekazać do niej adres email do sprawdzenia. Czyli mniej więcej tak:

  1. if(verifyEmail($_POST['email'])) {
  2. // tutaj piszesz to co ma się dziać jeśli e-mail jest poprawny
  3. } else {
  4. // tutaj co się ma dziać jeśli email jest nieprawidłowy
  5. }
forma3D
Nowy syntax error na lini 28. foreach ($mxhosts as $host)
Wciąż nie wiem gdzie mam umieścić nawias klamrowy którego mi brakuje. Chcę użyć kodu który podałem na samym początku ponieważ sprawdza czy email adres naprawdę istnieje oraz nie pozwoli wpisać email z błędem czyli z literkami ą,ę,ć itp.
Gdzie umieścić kod? w kontak.htlm czy w moim php pliku do emaila?
vonski
Cytat
Chcę użyć kodu który podałem na samym początku ponieważ sprawdza czy email adres naprawdę istnieje oraz nie pozwoli wpisać email z błędem czyli z literkami ą,ę,ć itp.


Czytałeś w ogóle co napisałem we wcześniejszym poście? Ta okrojona wersja którą podałem wyżej spełnia Twoje założenia.
Kod musisz umieścić w pliku .php wysyłającym maila.
forma3D
Tak czytałem. Zrobiłem to troszeczkę inaczej. W Dreamweaver dodałem "behaviors" do przycisku "wyślij", więc teraz jeżeli nie wpiszesz imiona, poprawnego email i treści to wyskoczy okienko (oczywiście po nacisnięciu "wyslij") i powiadomi co należy wpisać.
Dzięki wszystkim za pomoc. Jesteście debeściakami!
Pozdrawiam
tolomei
ehh... pokolenie Dreamwavera....
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.