Autor | Zpráva | ||
---|---|---|---|
MyShare Profil |
Zdravím mám tento kód pre chat a pri zapísaní Ď Ž Š čiže ak použijem diakritiku tak my to pri zobrazení vyhodí
Ž Å Ä prosím ako mám zadať to aby mi tú diakritiki zapísalo aj do indexu aj do DB Ďakujem.
<?php include 'core/init.php'; protect_widtgets_applications(); if (isset($_POST['send_message'])) { $shout = protect($_POST['shout']); if (strlen($shout) > 1024) { echo 'Prekročili ste limit 1024 znakov!'; } else if ($shout !== '') { if (isset($_POST['name'])) { $name = protect($_POST['name']); $q = mysql_query("SELECT `username` FROM `users` WHERE `username` = '$name'"); if (mysql_num_rows($q) > 0) { echo 'Obsadené!'; } else if ($name !== '') { if (strlen($name) > 32) { echo 'Prekročené znaky v mene 32!'; } else { mysql_query("INSERT INTO `shouts` SET `user_id` = 0, `date_posted` = NOW(), `message` = '$shout', `name` = '$name'"); } } } else { mysql_query("INSERT INTO `shouts` SET `user_id` = {$_SESSION['uid']}, `date_posted` = NOW(), `message` = '$shout'"); } } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" charset="UTF-8" /> <link rel="stylesheet" type="text/css" href="css/style.css" /> <meta name="robots" content="noindex, nofollow" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#window').load('shouts.php'); setInterval(function() { $('#window').load('shouts.php'); }, 10000); }); </script> <title>Bla ...</title> </head> <body class="home"> <div id="background_bg"></div> <div class="logo"><img /></div> <div class="headertxt"><label>Online Chat ...</label></div> <div id="window"> </div> <form action="" method="post"> <?php if ( ! isset($_SESSION['uid']) ) : ?> <div> <span>Username:</span> <input type="text" name="name" /> </div> <?php endif; ?> <div class="textarea"> <input type="text" name="shout" /> <button type="submit" name="send_message" class="send_message">Odoslať</button> </div> </form> </body> </html> <?php include 'core/init.php'; $q = mysql_query("SELECT `users`.`username`, `shouts`.`user_id`, `shouts`.`message`, `shouts`.`name` FROM `users` INNER JOIN `shouts` ON `users`.`user_id` = `shouts`.`user_id` ORDER BY `shouts`.`id` DESC LIMIT 100"); $shouts = array(); while ($r = mysql_fetch_assoc($q)) { $shouts[] = array( 'user_id' => $r['user_id'], 'username' => $r['username'], 'message' => $r['message'], 'name' => $r['name'] ); } foreach ($shouts as $s) { $user = ($s['user_id'] > 0) ? $s['username'] : $s['name']; echo $user . '<span class="nap">(napísal/a)</span>' . ' - ' . '<span class="text">' . $s['message'] . '</span>' . '<br />'; } ?> |
||
Martin02 Profil |
#2 · Zasláno: 22. 9. 2012, 19:14:45
MyShare:
Máš nastavené správné kódování v MySQL a v připojování k ní? |
||
MyShare Profil |
Martin02:
Kódovanie v mysql mám utf8_general_ci a pripojenie je <?php $connect_errors = 'Momentálne je DB Off'; mysql_connect('localhost', 'blablabla', 'blablabla') or die($connect_errors); mysql_select_db('blablabla') or die($connect_errors); ?> |
||
Martin02 Profil |
MyShare:
K tomu připojení přidej toto: mysql_set_charset("utf8") |
||
MyShare Profil |
#5 · Zasláno: 23. 9. 2012, 00:16:00
Martin02:
<?php $connect_errors = 'Momentálne je DB Off'; mysql_connect('localhost', 'blablabla', 'blablabla') or die($connect_errors); mysql_select_db('blablabla') or die($connect_errors); mysql_set_charset("utf8"); ?> |
||
Tori Profil |
MyShare:
Zkuste nastavit kódování ([#4]), pak vložit do DB nějaký řádek s diakritikou, a nakonec načíst z DB a zobrazit ten nově vložený řádek plus několik starších. Všechno jedním skriptem. Zobrazí se vám diakritika stejně špatně u starého i nového záznamu, anebo v tom bude rozdíl? (= chci zjistit, jestli náhodou ta data nejsou už špatně uložená.) |
||
Keeehi Profil |
#7 · Zasláno: 23. 9. 2012, 00:30:49
MyShare:
A pro nové záznamy to dělá také? |
||
MyShare Profil |
Keeehi:
Áno aj pre nové záznamy to robí to isté stačí že napíše žaba a je s toho žaba v php a v mysql je to zas žaba Tori: Takže ani nemusím meniť kódovanie keď v mysql prepíšem žaba na žaba a aktualizujem php zobrazí sa mi to správne aj s diakrtitkou |
||
Keeehi Profil |
#9 · Zasláno: 23. 9. 2012, 00:44:46
Když to tak vidí, tak bych si tipl, že za to možná může funkce protect() na 6. řádku. Co se vypíše, pokud za ní přidáte
var_dump($shout);
|
||
MyShare Profil |
#10 · Zasláno: 23. 9. 2012, 00:59:57 · Upravil/a: MyShare
Keeehi:
Myslíš ako za if (isset($_POST['send_message'])) { $shout = protect($_POST['shout']); pridať if (isset($_POST['send_message'])) { $shout = protect($_POST['shout']); var_dump($shout); A tu je protect.php kód <?php function protect($v) { $v = mysql_real_escape_string($v); $v = htmlentities($v, ENT_QUOTES); $v = trim($v); return $v; } ?> |
||
Keeehi Profil |
#11 · Zasláno: 23. 9. 2012, 15:48:47
MyShare:
„Myslíš ako za“ Ano, to přesně myslím, co se pak vypíše? Mám podezření, že už právě v htmlentites pak bude problém. Není ten includovaný soubor v jiném kódování? |
||
MyShare Profil |
Keeehi:
ak to dám s tým var_dump tak vypíše string(37) "Ž Å Ä�" a v DB zas Ž Å Ä kódovanie som skúšal ale nezabralo.Takže som to vyriešil tým, že do protect.php som miesto <?php function protect($v) { $v = mysql_real_escape_string($v); $v = htmlentities($v, ENT_QUOTES); $v = trim($v); return $v; } ?> <?php function protect($v) { $v = mysql_real_escape_string($v); $v = htmlspecialchars($v, ENT_QUOTES); $v = trim($v); return $v; } ?> |
||
Keeehi Profil |
#13 · Zasláno: 23. 9. 2012, 21:31:31
MyShare:
Schválně, pokud to teď upravíš zpátky, zase se to rozbije? |
||
MyShare Profil |
#14 · Zasláno: 23. 9. 2012, 22:03:36
Keeehi:
Ak to vrátim späť a aktualizujem nič sa nedeje ale ako náhle použijem diakrit. tak je to rozbité ale ak vrátim späť htmlspecialchars tak už to zas funguje.
|
||
Keeehi Profil |
#15 · Zasláno: 23. 9. 2012, 22:11:37
Ok, jen jsem tím chtěl zjistit, kde byl problém. V kódování souboru pravděpodobně ne.
|
||
Časová prodleva: 13 let
|
0