Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Brak polskich znaków w formularzu
Forum PHP.pl > Forum > Przedszkole
kiepski96
Mam formularz rejestracyjny. Plik z nim zakodowany jest w utf bez bom. W bazie danych jest format utf 8 general ci

Niestety mimo tego w bazie nie widać pl znaków..

  1. <div class="formularz">
  2. <form class="form" action="index.php" method="post">
  3. <input type="hidden" name="wyslane" value="TRUE" />
  4.  
  5. <p>
  6. <div class="label"></div>
  7. <input type="text" name="nazwisko" id="nazwisko" value="Imię i nazwisko" onfocus="if(this.value==this.defaultValue)this.value=''" />
  8. </p>
  9.  
  10. <p>
  11. <div class="label"></div>
  12. <input type="text" name="email" id="email" value="Twój Email" onfocus="if(this.value==this.defaultValue)this.value='' " />
  13. </p>
  14.  
  15. KONIEC;
  16. echo '<div class="recaptcha">';
  17. echo recaptcha_get_html($publickey); // wyświetlanie reCAPTCHA
  18. echo '</div>';
  19. echo <<< KONIEC
  20.   <p class="submit">
  21.   <input type="submit" value="dasdsa!" />
  22.   </p></form>
  23. KONIEC;
matiit
Jeśli w bazie nie widać polskich znaków... to może pokaż jak dodajesz coś do bazy danych, jak ustanawiasz połączenie.

Co nam po widoku formularza?
kiepski96
Proszę, oto cały form:

  1. <?php
  2.  
  3. if (!isset($_SESSION['login'])) { // dostęp dla zalogowanego użytkownika
  4.  
  5. include 'inc/db.php'; // połączenie się z bazą danych
  6. $tabela = 'rejestracja'; // zdefiniowanie tabeli MySQL
  7. include 'inc/recaptchalib.php'; // dołączenie modułu reCAPTCHA
  8. $privatekey = "dasp"; // prywatny klucz reCAPTCHA
  9. $publickey = "das"; // publiczny klucz reCAPTCHA
  10.  
  11. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  12.  
  13. // filtrowanie treści wprowadzonych przez użytkownika
  14. $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))), ENT_QUOTES);
  15. $haslo = $_POST["haslo"];
  16. $haslo2 = $_POST["haslo2"];
  17. $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
  18. $email2 = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email2"]))), ENT_QUOTES);
  19. $imie = htmlspecialchars(addslashes(strip_tags(trim($_POST["imie"]))), ENT_QUOTES);
  20. $nazwisko = htmlspecialchars(addslashes(strip_tags(trim($_POST["nazwisko"]))), ENT_QUOTES);
  21. $resp = recaptcha_check_answer ($privatekey,
  22. $_SERVER["REMOTE_ADDR"],
  23. $_POST["recaptcha_challenge_field"],
  24. $_POST["recaptcha_response_field"]);
  25.  
  26. // system sprawdza czy prawidło zostały wprowadzone dane
  27. if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
  28. $blad++;
  29. echo '<span class="blad" style="margin-left:70px; color:#FF0000" >Proszę wprowadzić poprawnie adres email. <br /> </span>';
  30. } else {
  31. $wynik = mysql_query("SELECT * FROM $tabela WHERE email='$email'");
  32. if (mysql_num_rows($wynik) <> 0) {
  33. $blad++;
  34. echo '<span class="blad" style="color:#FF0000" >Podany adres e-mail jest już zajęty.<br /> </span>';
  35. }
  36. }
  37. if (!$resp->is_valid) {
  38. $error = $resp->error;
  39. echo '<span class="blad" style="color:#FF0000" >Proszę wpisać poprawnie wyrazy z obrazka.</span>';
  40. $blad++;
  41. }
  42.  
  43. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  44. if ($blad == 0) {
  45.  
  46. $haslo = md5($haslo); // zaszyfrowanie hasla
  47. $kod = uniqid(rand()); // tworzenie unikalnego kodu dla użytkownika
  48.  
  49. $wynik = mysql_query("INSERT INTO $tabela VALUES('', '$imie', '$nazwisko', '$login', '$haslo', '$email', '$kod', NOW(), '')");
  50. if ($wynik) {
  51. $header .= "Content-type: text/plain; charset=utf-8\r\n";
  52. $list = "Witaj $nazwisko !
  53. Kliknij w poniższy link, aby potwierdzidas. http://www.hgfhgfpl/weryfikacja.ph...#036;kod";
  54. mail($email, "dassanie !", $list, "From: <kontakt@dsada.pl>");
  55. echo '<br /> <p style="color:#FF0000">Dziękujemydas! W ciągu nabliższych 5 minut dostaniesz wiadomość e-mail z linkiem potwierdziającym, który musisz kliknąć !</p> <br /> <br /> ';
  56. mysql_close($polaczenie);
  57. }
  58. }
  59. mysql_close($polaczenie);
  60. }
  61.  
  62. // tworzenie formularza HTML
  63. echo <<< KONIEC
  64.  
  65.   <div class="formularz">
  66.   <form class="form" action="index.php" accept-charset="utf-8" method="post">
  67.   <input type="hidden" name="wyslane" value="TRUE" />
  68.  
  69. <p>
  70. <div class="label"></div>
  71. <input type="text" name="nazwisko" id="nazwisko" value="Imię i nazwisko" onfocus="if(this.value==this.defaultValue)this.value=''" />
  72. </p>
  73.  
  74. <p>
  75. <div class="label"></div>
  76. <input type="text" name="email" id="email" value="Twój Email" onfocus="if(this.value==this.defaultValue)this.value='' " />
  77. </p>
  78.  
  79. KONIEC;
  80. echo '<div class="recaptcha">';
  81. echo recaptcha_get_html($publickey); // wyświetlanie reCAPTCHA
  82. echo '</div>';
  83. echo <<< KONIEC
  84.   <p class="submit">
  85.   <input type="submit" value="Podpisz petycję !" />
  86.   </p></form>
  87. KONIEC;
  88.  
  89. } else {
  90. header('Location: /index.php');
  91. }
  92. ?>
  93.  
  94. <?php
  95.  
  96. // dane do połączenia z bazą MySQL
  97. $mysql_host = 'localhost';
  98. $mysql_login = 'fdsd';
  99. $mysql_haslo = 'fdsds';
  100. $mysql_baza = 'fff';
  101.  
  102. // połączenie z bazą danych
  103. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Błąd: nie udało się nawiązać połączenia z bazą danych.');
  104.  
  105. // połączenie ze schematem bazy danych
  106. mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
  107.  
  108. ?>
matiit
  1. <?php
  2.  
  3. // dane do połączenia z bazą MySQL
  4. $mysql_host = 'localhost';
  5. $mysql_login = 'fdsd';
  6. $mysql_haslo = 'fdsds';
  7. $mysql_baza = 'fff';
  8.  
  9. // połączenie z bazą danych
  10. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Błąd: nie udało się nawiązać połączenia z bazą danych.');
  11. mysql_set_charset('utf8',$polaczenie);
  12.  
  13. // połączenie ze schematem bazy danych
  14. mysql_select_db($mysql_baza) or die('Błąd: nie udało się wybrać schematu bazy danych.');
  15.  
  16. ?>


Dla pewności pytanie: jaki encoding masz ustawiony na bazie danych?
b4x
Spróbuj po połączeniu z DB
  1. mysql_query('SET NAMES utf8');
kiepski96
Po linijce:

  1. $polaczenie = mysql_connect($mysql_host, $mysql_login, $mysql_haslo) or die('Błąd: nie udało się nawiązać połączenia z bazą danych.');


Umieściłem tą w/w i nie działa nadal sad.gif
matiit
Cytat("matiit")
Dla pewności pytanie: jaki encoding masz ustawiony na bazie danych?
kiepski96
Jeśli chodzi o Metoda porównywania napisów: utf8_general_ci
b4x




  1. SHOW VARIABLES LIKE 'character\_set\_%';


Co zwraca Ci?
matiit
+ metoda porównywania napisów powinna być dobrze ustawiona dla każdej kolumny, w której chcemy mieć polskie znaczki.
viking
I oczywiście serwer http musi odpowiedzieć odpowiednimi nagłówkami.
kiepski96
W sql tabeli dałem to co kazałeś i zwróciło:

http://prntscr.com/11o6be
b4x
character_set_server musi być na utf8

  1. mysql_query("SET NAMES 'utf8'");
  2. mysql_query("SET CHARACTER SET 'utf8'");
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.