Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Formularz Kontaktowy - Krzaki
Forum PHP.pl > Forum > Przedszkole
Matif
Witam.
Gdy wysyła ktoś do mnie maila formularzem kontaktowym na gmaila, wszystko jest oK. Ale gdy wysyła na pocztę home.pl wtedy zamiast polskich liter pokazują się znaki zapytania.
(Sprawdziłem i po wysłaniu bezpośrednio z o2 na home.pl nie było krzaków)
Więc błąd musi być w formularzu

Oto jego kod:
  1. <?php
  2. session_start(); //start sesji
  3. require_once('connect.php');
  4. require_once('functions.php');
  5. ?>
  6. <html>
  7. <head>
  8. <title><?php echo $ustawienia['tytul']; ?> - Kontakt</title>
  9. <?php include('tpl/head.php') ?>
  10. </head>
  11. <body>
  12. <div id="naglowek">
  13. <!-- code by klocek & Quik -->
  14. <?php include('tpl/naglowek.php') ?>
  15. </div>
  16. <div id="menu">
  17. <?php include('tpl/menu.php') ?>
  18. </div>
  19. <div id="kontener">
  20. <h1>Kontakt</h1>
  21. <?php
  22. // sprawdzamy, czy zmienna $submit jest pusta
  23. if (empty($_POST['submit'])) {
  24. // wyświetlamy formularz
  25. ?>
  26. <?php
  27. $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-2";
  28. ?>
  29. <div id="boxform">
  30. <form action="kontakt.php" method="post" id="test">
  31. <div>
  32. <label>Imię / Login <strong>*</strong></label>
  33. <input type="text" class="pole" name="imie" />
  34. </div>
  35. <div>
  36. <label>E-mail <strong>*</strong></label>
  37. <input type="text" class="pole" name="email" />
  38. </div>
  39. <div>
  40. <label>Treść wiadomości <strong>*</strong></label>
  41. <textarea name="tresc" rows="5" cols="20"></textarea>
  42. </div>
  43. <div style="margin-left:160px;">
  44. <input type="submit" name="submit" value="Wyślij" class="button" />
  45. </div>
  46. </form>
  47. </div>
  48. <?php
  49.  
  50. }
  51. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  52. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  53. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  54. // zmienna $message zawiera treść wiadomości
  55. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  56. // zmienna $header zawiera przede wszystkim adres zwrotny
  57. $header = "From: $_POST[imie] <$_POST[email]>";
  58. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  59. @mail($ustawienia['email'],"Wiadomosc z ".$ustawienia['tytul'],"$message","$header")
  60. or die('Nie udało się wysłać wiadomości.');
  61. // wyświetlenie komunikatu w przypadku powodzenia
  62. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  63. }
  64. // lub w przypadku nie wypełnienia formularza do końca
  65. else echo 'Wypełnij wszystkie pola formularza!<br/><a href="kontakt.php">&laquo; Powrót</a>';
  66.  
  67. ?>
  68. </div>
  69.  
  70. <div id="stopka">
  71. <?php include('tpl/stopka.php') ?>
  72. </div>
  73.  
  74. </body>
  75. </html>
  76. <?php ob_end_flush(); ?>


Co trzeba zrobić żeby wysyłał polskie znaki?
mortus
A czy przypadkiem charset nie powinien mieć wartości utf-8 (linia 28)?
Matif
  1. Tre&#65533;��� wiadomo��ci:
  2. &#65533;���������������
  3. Wys&#65533;�a��: ��������
  4. e-mail: &#65533;���������


To nic nie zmienia tongue.gif
przeszukiwałem internet i znalazłem ze trzeba dodać coś takiego gdzieś i wrzuciłem do kodu ale nie pomogło ;P
Więc standardowo skrypt był bez tego:
  1. [/php]<?php
  2. $header = "From: $from\nReply-to: $from\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-2";
  3. ?>[php]
mortus
Wyrzuć linie 27, 28 i 29, a linię 58 zastąp tym:
  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  3. $headers .= 'From: '.$_POST['imie'].' <'.$_POST['email'].'>' . "\r\n";

Linię 60 zastąp natomiast tym:
  1. @mail($ustawienia['email'],"Wiadomosc z ".$ustawienia['tytul'], $message, $headers)


EDIT
Poprawiłem literówki!
Matif
Cytat(mortus @ 13.08.2011, 12:10:01 ) *
Wyrzuć linie 27, 28 i 29, a linię 58 zastąp tym:
  1. $headers = 'MIME-Version: 1.0' . "\r\n";
  2. $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  3. $headers .= 'From: '.$_POST['imie'].' <'.$_POST['email'].'>' . "\r\n";

Linię 60 zastąp natomiast tym:
  1. @mail($ustawienia['email'],"Wiadomosc z ".$ustawienia['tytul'], $message, $headers)


EDIT
Poprawiłem literówki!


Treść wiadomości:
śćśćśćś
Wysłał: śćśćś
e-mail: śćśćść

Dziękuję bardzo! Działa wszystko smile.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.