Právě je 20 dub 2024 11:02

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 02 zář 2011 10:46 

Registrován:
02 zář 2011 10:43
Příspěvky:
6
Zdravím,
mám jednoduché malé diskuzní fórum, které ukládá data do tsv souborů. Kamenem úrazu je, že se do těchto tabulek místo českých znaků uloží znaky jako Ï, á apod. Při načtení dat z tabulek se samozřejmě zobrazí chybné znaky.
Jak tedy toto ošetřit? Předem děkuji za odpovědi.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 02 zář 2011 11:13 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8504
Dobrý den,

a jakým způsobem ukládáte data do souboru? Zřejmě bude problém v použité funkci a konverzi znaků. Vložte sem část zdrojového kódu, pomocí kterého vkládáte data do tsv souboru.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 06 zář 2011 22:56 

Registrován:
02 zář 2011 10:43
Příspěvky:
6
Dobrý večer,
ještě na okraj podotknu, že co se týče PHP jsem jen začátečník, tudíž zmíněné fórum není mé vlastní dílo, jen přejaté. Sice se již z větší části v kódu fóra orientuji, přesto mi některé vazby funkcí unikají, takže pokud by uvedený kód nebyl přesně to co potřebujete tak si prosím řekněte o konkrétní část kódu, popřípadě mohu interně poskytnout celý soubor.

Kód:
   $delimiter = "\t";
   $db_location = "./db/";
      $db_file = $db_location.$db_table.".tsv";
      if (trim($value[0]) == "AUTO") {
         $db_handle = fopen ($db_file, "r+");
      }
      else {
         $db_handle = fopen ($db_file, "a+");
      }
      if (!$db_handle) { return FALSE; }
      
      $record = fgets($db_handle);
      $value = explode($delimiter, $db_values);
      
      if (trim($value[0]) == "AUTO") {
         $auto_id = 0;
         while ( $record = fgets($db_handle) ) {
            $current_record = explode($delimiter, $record);
            if ($current_record[0] > $auto_id) { $auto_id = $current_record[0]; }
         }
         $value[0] = $auto_id +1;
      }
      
      $new_record = implode($delimiter, $value);
      
      fwrite($db_handle, $new_record."\r\n");
      fclose($db_handle);
      return $value[0];
   }
   
   Function OpenRecord($db_table, $select_fields, $find_condition, $sort_order='', $auto_join='false', $limit='') {
      global $delimiter;
      global $db_location;


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 07 zář 2011 10:44 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
Z toho co jste poslal plyne, že máte data připravená v proměnné $db_values. Zřejmě bude problém někde v předchozím kódu, který nastavuje proměnnou $db_values - tam bude docházet ke konverzi.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 07 zář 2011 16:20 

Registrován:
02 zář 2011 10:43
Příspěvky:
6
Jestli to pomůže, přidávám tuto část:

Kód:
   Function UpdateRecord($db_table, $db_values) {
      global $delimiter;
      global $db_location;
      
      $value = explode($delimiter, $db_values);
      DeleteRecord($db_table, "id+=". $value[0]);
      AddRecord($db_table, $db_values);
   }
      
   Function AddRecord($db_table, $db_values) {
      global $delimiter;
      global $db_location;


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 08 zář 2011 14:15 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
Z uvedené funkce nic neplyne. Ale zřejmě jde o to, že v tom tsv souboru máte data již escapovaná a musíte si uvědomit, že pokud je tam budete mít neoescapovaná, tak se změní logika skriptu a bude potřeba provádět escapování při každém výpisu hodnot na výstup, jinak bude možné skripty zneužít k XSS útokům.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 09 zář 2011 17:38 

Registrován:
02 zář 2011 10:43
Příspěvky:
6
Teď si nejsem příliš jist nakolik vaše odpověď souvisí s tématem, můžete to prosím rozvést?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 12 zář 2011 11:05 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
Dobrý den,

doporučuji něco přečíst o escapování:

http://phpfashion.com/escapovani-definitivni-prirucka

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 19 zář 2011 11:38 

Registrován:
02 zář 2011 10:43
Příspěvky:
6
To jsme se ale od původního tématu trochu vzdálili, nejdřív bych rád vyřešil problém se znaky pak můžeme vyřešit i escapování.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Jak dostat české znaky do tsv tabulky
PříspěvekNapsal: 19 zář 2011 16:23 
C4 podpora
C4 podpora

Registrován:
29 čer 2009 20:53
Příspěvky:
263
Právě že nevzdálili - problém se znaky je v tom, že to jsou ecsapované znaky.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PHP, MySQL Hosting
Návody pro C4

© 2009-2024 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz