Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz kontaktowy w utf-8 - dziwolągi po ponownym załadowaniu
Forum PHP.pl > Forum > PHP
i_ron23
Mam nastepujący problem:
Wpisując tekst w formularz kontaktowy z polskimi znakami tekst coprawda dochodzi z prawidłowymi polskimi znakami do adresata, lecz jeżeli wpisuję się kod captcha niepoprawnie to stronka ładuje sie ponownie i pojawia się komunikat że kod się nie pokrywa. Wtedy z polskich znaków robią się dziwolągi i ukazuję się znak zapytania przed tymi dziwolągami.

Niestety nie udało mi się znaleźść rozwiązania szukając w googlach oraz na forum php.pl.
Wielkie dzięki za każdą porade! biggrin.gif


Użyłem kodowania utf-8 (bez BOM) do wszystkich stron.


Kod formularza kontaktowego:
  1. <?php
  2. header( 'content-type: text/html; charset=utf-8' );
  3. include 'mail.php';
  4. ?>
  5. <form id="ContactForm" method="POST" name="contact_form" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
  6. <div class="column1 col-indent">
  7. <label>Imię i nazwisko:<br /><span class="input"><input type="text" name="name" value="<?php echo htmlentities($name) ?>" size="25" maxlength="50" /></span></label>
  8. <label>Email:<br /><span class="input"><input type="text" name="mail" value="<?php echo htmlentities($visitor_email) ?>" size="25" maxlength="50" /></span></label>
  9. <label>Telefon:<br /><span class="input"><input type="text" name="phone" value="<?php echo htmlentities($phoneno) ?>" size="25" maxlength="50" /></span></label>
  10.  
  11. </div>
  12. <div class="column2">
  13. Tekst:<br /><div class="text"><textarea name="message" onclick="this.select()" rows="15" cols="30"><?php echo htmlentities($user_message) ?></textarea></div>
  14. </div>
  15. <div style="margin-top:5px;" class="column1 col-indent">
  16. <img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id='captchaimg' ><br>
  17. <label style="height:20px;" for='message'>Proszę wpisać kod:</label>
  18. <input id="6_letters_code" name="6_letters_code" type="text" value="" size="25" maxlength="10" ><br>
  19. <small>Nie możesz odczytać? Kliknij <a href='java script: refreshCaptcha();'>tutaj</a> aby odświeżyć</small>
  20. </div> <input style="cursor: pointer; margin-top:72px;" type="submit" value="Wyślij" name='submit'>
  21. </form>



Kod "mail.php":
  1. <?php
  2. $your_email ='moj@mail.pl';
  3.  
  4. //send the email
  5. $to = $your_email;
  6. $subject="Nowy formularz";
  7. $from = $your_email;
  8. $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
  9.  
  10. $body = "Imie i nazwisko: $name\n".
  11. "Adres mejlowy: $visitor_email \n".
  12. "Numer telefonu: $phoneno \n".
  13. "Wiadomosc: \n ".
  14. "$user_message\n".
  15. "IP: $ip\n";
  16.  
  17. $headers = "From: $from \r\n";
  18. $headers .= "Reply-To: $visitor_email \r\n";
  19. $headers .= "Content-Type: text/plain; charset=utf-8' \r\n";
  20.  
  21. mail($to, $subject, $body, $headers);
  22.  
  23. header('Location: thank-you.html');
  24. }
  25. }
  26.  
  27. ?>


Plik ".htaccess" zawiera kod:
AddDefaultCharset Off
AddDefault utf-8 .html .htm .php
AddDefaultCharset On



Wielkie dzięki za każdą porade! biggrin.gif
Raven1122
w pliku przetwarzajacym ustaw kodowanie na utf-8 bez bom

@EDIT
Przepraszam nie zauwazylem ze we wszystkich plikach uzles tego kodowania

http://php.net/manual/en/function.mail.php Przyklad numer 4 i powinno dzialac smile.gif
i_ron23
Dzięki za szybką odpowiedź.

Niestety instrukcja pod linkiem dotyczy folrmularzy kodowanych w ascii(iso).

Sam formularz jest sprawny i wysyła poprwanie polskie znaki - dochodzą poprawnie.
Chodzi o to, że po wypełnieniu pól tekstowych i ponownym załadowaniu strony (n.p. jeżeli się wpisze źle kod captcha), to polskie znaki zamieniają sie w dziwolągi.

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.