Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] kodowanie znakow w formularzu kontaktowym
Forum PHP.pl > Forum > Przedszkole
lewin
Witajcie,

Jak zmienic kodowanie znakow na UTF-8 w tym skrypcie? Jak wysylam wiadomosci zamiast PL znakow otrzymuje jakies krzaczki.
  1. <?php 
  2.  
  3. $ko = $_POST["ko"];
  4. $em = $_POST["mail"];
  5. $kt = $_POST["kto"];
  6. $tr = $_POST["uwagi"];
  7.  
  8. $kt1 = "";
  9. $em1 = "";
  10. $tr1 = "";
  11.  
  12. if ($ko == 1)
  13. {
  14. $blad = 0;
  15. if ((strlen($kt) < 2) or (!isset($kt))) $blad += 1;
  16. if ((strlen($em) < 2) or (!isset($em)) or (strpos($em, "@")<2)) $blad += 2;
  17. if ((strlen($tr) < 5) or (!isset($tr))) $blad += 4;
  18.  
  19. if (($blad > 0)&&($_POST['action']=="submited"))
  20. {
  21. $kt1 = $kt; $em1 = $em; $tr1 = $tr;
  22. print ('<div style="text-align: center; color: #ff0000; font-size: 14px"><b>Formularz wypełniony niewłaściwie!</b></div><br>');
  23. } // $blad>0
  24.  
  25. if (($blad == 0)&&($_POST['action']=="submited"))
  26. {
  27. $da = date("H:i; d.m.Y");
  28. $ho = $REMOTE_ADDR;
  29. $tresc = "Od: ".$kt."\n";
  30. $tresc .= "Data: ".$da."\n";
  31. $tresc .= "e-mail: ".$em."\n\n";
  32. $tresc .= "Treść: \n".$tr;
  33. mail ($moj_mail, "Potwierdzenie", $tresc, "From:".$em."");
  34.  
  35. $tresc = "tekst wiadomosci otrzymania e-maila dla nadawcy";
  36. $tresc .= "podpis wiadomosci";
  37. mail ($em, "Potwierdzenie przesłania wiadomości", $tresc, "From:adres@email.com");
  38.  
  39. print ('<h1><div align="center">Dziękujemy! Wiadomość została wysłana</div></h1>');
  40.  
  41. } // $blad==0
  42.  
  43. } // $ko==1
  44.  
  45. if (($_POST['action']!="submited")||($blad>0)) {
  46. <form action="kontakt.php" method="post"><input type="hidden" name="ko" value="1">
  47. <table cellSpacing=1 cellPadding=1 border="0" width="400" align="center">
  48. <input type="hidden" name="action" value="submited">
  49. <tr>
  50. <td width="135" class=text><b>Imię i nazwisko</b>: <font color="red">*</font></td>
  51. <td width="*"><input class="input" type="text" name="kto" size="35" value="'.$_POST['kt1'].'"></td>
  52. </tr>
  53. <tr>
  54. <td class=text><b>Adres e-mail</b>: <font color="red">*</font></td>
  55. <td><input class="input" type="text" name="mail" size="35" value="'.$_POST['$em1'].'"></td>
  56. </tr>
  57. <td class=text><b>Wiadomość</b>: <font color="red">*</font></td>
  58. <td><textarea class="input" name="uwagi" rows="9" cols="40">'.$_POST['$tr1'].'</textarea></td>
  59. </tr>
  60. <tr>
  61. <td></td>
  62. <td><input type="submit" class="input" name="zamawiam" value="Wyślij" onclick="this.disabled=true; this.form.submit();"></td>
  63. </tr></table>
  64. <br>
  65. <div class="mini">Pola oznaczone <font color="red">*</font> należy obowiązkowo wypełnić</div>
  66. ';
  67. }
  68. else
  69. echo ""
  70. ?>
  71. </form>
atomek4
Cześć,
spróbuj zapisać ten formularz edytorem obsługującym UTF-8 i z poprawnym kodowaniem. Oczywiście ustaw też UTF-8 w nagłówku strony, powinno pomóc.
lewin
Dzieki za szybka odpowiedz!

Strona w naglowku oczywiscie ma ustawione kodowanie UTF-8:
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Skrypt zostal zapisany w Dreamweaver'ze takze wszystko powinno byc ok.
Najdziwniejsze jest to ze jak zmienie kodowanie w naglowku strony na ISO to skrypt po wyslaniu wiadomosci wyswietla prawidlowo wszystkie znaki.
JaRoPHP
Cytat(lewin @ 16.09.2007, 09:34:28 ) *
Skrypt zostal zapisany w Dreamweaver'ze takze wszystko powinno byc ok.

- upewnij się, że dokument jest zapisywany w kodowaniu utf-8,
- poinformuj przeglądarkę, jakie jest kodowanie:
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. ?>
.
lewin
Przegladarke poinformowalem o kodowaniu UTF-8 wg. Twoich zalecen. Kodowanie strony jest poprawne. Znaki na www wyswietlaja sie poprawnie.
Kicok
To gdzie nie wyświetlają się poprawnie? W mailu? Jeśli tak, to dodaj do maila nagłówek, który poinformuje klienta w jakim kodowaniu przesłana została treść, np.:

  1. <?php
  2.  
  3. $headers = "From:adres@email.com\n";
  4. $headers .= "MIME-Version: 1.0\n";
  5. $headers .= "Content-Type: text/plain; charset=utf-8\n";
  6.  
  7. mail( $em, "Potwierdzenie przesłania wiadomości", $tresc, $headers );
  8.  
  9. ?>



To powinno wystarczyć. A jeśli nie wystarczy, to poczytaj jeszcze o:
iconv_mime_encode" title="Zobacz w manualu PHP" target="_manual
lewin
Jestem w polowie usatysfakcjonowny. Kicok podzialalo, ale temat wiadomosci wyswietla krzaczki przy PL znakach :/
Masz na to jakas rade? sciana.gif
JaRoPHP
Jest na to rada smile.gif.
Temat musisz zapisać w postaci:
  1. <?php
  2. $topic = "=?UTF-8?B?".base64_encode("Temat")."?=";
  3. ?>
lewin
JaRoPHP dziala!! smile.gif
Wielkie dzieki wszystkim za pomoc!!!
maslosky
Witam. Mam problem.. korzystam ze skryptu formularza kontaktowego.. niestety nie wysyła on w ogóle polskich znaków, nawet krzaczków nie ma... Całość kodu wygląda tak:
CODE

<?php
header("Content-Type: text/html; charset=iso-8859-2");
?>
<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
// wyświetlamy formularz
echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Treść wiadomości</td>
<td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
</tr>
<tr>
<td>Imię, nazwisko lub nick</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
</tr>
<tr>
<td> </td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">
<input type=\"reset\" value=\"Od nowa\"></td></form>
</tr>
</table>";
}
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
// jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
// zmienna $message zawiera treść wiadomości
$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
// zmienna $header zawiera przede wszystkim adres zwrotny
$header = "Od: $_POST[imie] <$_POST[email]>";
// funkcja mail() za pomocą której wiadomość zostanie wysłana
@mail("bjedras@centrumstomatologii.pl","Formularz kontaktowy - Centrum Stomatologii","$message","$header")
or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";

?>


Co z tym zrobić ? Proszę o odpowiedź na maila maslosky@o2.pl
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-2024 Invision Power Services, Inc.