Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z polskimi znakami
Forum PHP.pl > Forum > Przedszkole
Buaha
Witam
Mam taki (pewnie dla was mały) problem. Ponieważ robię stronę i potrzebują na nią formularz kontaktowy a na php się z deczka nie znam. Uporałem już sie z większością problemów ale został mi jeszcze jeden. A mianowicie ja wpisuje w formularzu na stronie polskie znaki to wszsytko jest ok i jest formularz przyjmowy. Jednak maila który przychodzi na moją skrzynke jest już bez polskich znaków. Co należy zmienić w pliku poniżej żeby mail który do mnie przychodzi był jednak z polskimi znakami a nie z kwadratami zamiast nich? Wielkie dzięki za pomoc.

  1. <?php
  2. if(isset($_POST['email'])) {
  3.  
  4. // EDIT THE 2 LINES BELOW AS REQUIRED
  5. $email_to = "nazwa@nazwa.pl";
  6. $email_subject = "Formularz kontaktowy";
  7.  
  8.  
  9. function died($error) {
  10. // your error code can go here
  11. echo "We are very sorry, but there were error(s) found with the form you submitted. ";
  12. echo "These errors appear below.<br /><br />";
  13. echo $error."<br /><br />";
  14. echo "Please go back and fix these errors.<br /><br />";
  15. die();
  16. }
  17.  
  18. // validation expected data exists
  19. if(!isset($_POST['first_name']) ||
  20. !isset($_POST['last_name']) ||
  21. !isset($_POST['email']) ||
  22. !isset($_POST['telephone']) ||
  23. !isset($_POST['comments'])) {
  24. died('We are sorry, but there appears to be a problem with the form you submitted.');
  25. }
  26.  
  27. $first_name = $_POST['first_name']; // required
  28. $last_name = $_POST['last_name']; // required
  29. $email_from = $_POST['email']; // required
  30. $telephone = $_POST['telephone']; // not required
  31. $comments = $_POST['comments']; // required
  32.  
  33. $error_message = "";
  34. $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  35. if(!preg_match($email_exp,$email_from)) {
  36. $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  37. }
  38. $string_exp = "/^[A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ .'-]+$/";
  39. if(!preg_match($string_exp,$first_name)) {
  40. $error_message .= 'The First Name you entered does not appear to be valid.<br />';
  41. }
  42. $string_exp = "/^[0-9.-]+$/";
  43. if(!preg_match($string_exp,$last_name)) {
  44. $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
  45. }
  46. if(strlen($comments) < 2) {
  47. $error_message .= 'The Comments you entered do not appear to be valid.<br />';
  48. }
  49. if(strlen($error_message) > 0) {
  50. died($error_message);
  51. }
  52. $email_message = "Form details below.\n\n";
  53.  
  54. function clean_string($string) {
  55. $bad = array("content-type","bcc:","to:","cc:","href");
  56. return str_replace($bad,"",$string);
  57. }
  58.  
  59. $email_message .= "First Name: ".clean_string($first_name)."\n";
  60. $email_message .= "Last Name: ".clean_string($last_name)."\n";
  61. $email_message .= "Email: ".clean_string($email_from)."\n";
  62. $email_message .= "Telephone: ".clean_string($telephone)."\n";
  63. $email_message .= "Comments: ".clean_string($comments)."\n";
  64.  
  65.  
  66. // create email headers
  67. $headers = 'From: '.$email_from."\r\n".
  68. 'Reply-To: '.$email_from."\r\n" .
  69. 'X-Mailer: PHP/' . phpversion();
  70. @mail($email_to, $email_subject, $email_message, $headers);
  71. ?>
  72.  
  73. <!-- include your own success html here -->
  74.  
  75. Thank you for contacting us. We will be in touch with you very soon.
  76.  
  77. <?php
  78. }
  79. ?>
mls
Należy ustawić odpowiednie kodowanie wiadomości, podpowiem, że to do zmiennej $headers będzie. I tysiące razy już na tym forum był poruszany temat polskich znaków, czy naprawdę tak ciężko skorzystać z wyszukiwarki?
Fifi209
Kodowanie pliku utf8 bez bom, nagłówek dla wiadomości z kodowaniem utf8 i do przeglądarki też taki.
Buaha
Dzięki udało się. A jeszcze mi sie urodziło jedno pytanie. Co i gdzie trzeba wstawić żeby user został na tej samej stronie z której wysyłał formularz?
PiNkOs
Możesz skorzystać z header("Location: ..."); albo w <form action='$_...'> skorzystać ze "super zmiennej", niestety nie pamiętam, która to..
Buaha
no właśnie z hedera próbuję skorzystać jednak niezabardzo mi to działa. Podejrzewam że w złym miejscu to wpisuje lub w jakiejś złej formie...
mrk9109
zrób warunek ? że jeżeli wyśle wiadomość to ma przenieś np: do index
PiNkOs
Jak napisał poprzednik:

  1. if($_POST['submit']){
  2.  
  3. ..........twoj_kod...........
  4.  
  5. header("Location: index.php");
  6.  
  7. }
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.