Strana 1 z 1
Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 4:11 pm
od používateľa puschpull
Chyba ve znacích u popisu Tempate, Snippetu a Chunku
kdykoliv díte do popisu český znak ěščřžýáíéúů atd
tak se v poli popisu daného Tempate, Snippetu a Chunku objeví paznaky
Dělá to stejně na localhostu i na webovém serveru
ještě to budu zkjoušet vyzkoumat doma později odpoledne
Dělá vám to také ?
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 9:19 pm
od používateľa R - stick
Jo, taky
Svého času jsem pátral po příčině, ale vzhledem k tomu, že ostatní šlape jako hodinky, tak jsem se na to vybodl - a prostě v popisech diakritiku nepoužívám.
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 9:23 pm
od používateľa puschpull
no jasně to je nejjedodušší řešení
koukám nyní v kédech souborů
save_snippet.processor.php
save_template.processor.php
save_htmlsnippet.processor.php
v části
Kód: Vybrať všetko
switch($_POST['mode'])
{
case '23':
//do stuff to save the new doc
$snippet = mysql_escape_string($_POST['post']);
$name = mysql_escape_string(htmlentities($_POST['name']));
$description = mysql_escape_string(htmlentities($_POST['description']));
$locked = $_POST['locked'] == 'on' ? 1 : 0 ;
if($name == "")
{
$name = "Untitled snippet";
}
$sql = "INSERT INTO $dbase.".$table_prefix."site_snippets(name, description, snippet, locked) VALUES('".$name."', '".$description."', '".$snippet."', '".$locked."');";
$rs = mysql_query($sql);
if(!$rs)
{
echo "\$rs not set! New snippet not saved!";
}
else
{
// get the id
if(!$newid=mysql_insert_id())
{
echo "Couldn't get last insert key!";
exit;
}
ale zatím nic nezabírá
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 9:36 pm
od používateľa puschpull
asi to už mám !!!
moment
testuju
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 9:49 pm
od používateľa puschpull
soubor:
řádka 37
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
řádka 81
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
-----------------------------------------------------------------------------------------------------------------------
soubor:
řádka 37
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
řádka 81
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
-----------------------------------------------------------------------------------------------------------------------
soubor:
řádka 21
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
řádka 65
Kód: Vybrať všetko
$description = mysql_escape_string(htmlentities($_POST['description']));
nahradit
Kód: Vybrať všetko
$description = mysql_real_escape_string($_POST['description']);
-----------------------------------------------------------------------------------------------------------------------
uff
u mě tohle funguje !!
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 9:51 pm
od používateľa puschpull
totéž by šlo napsat i pro všechny řádky s číslem o jedno nižším, pro položku "name", ale tam je lepší české znaky nepoužívat
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: St Apr 01, 2009 10:24 pm
od používateľa puschpull
Dal jsem dohromady všechny soubory, které jsem zatím v Etomite opravil.
Ke stažení jsou zde:
Kód: Vybrať všetko
http://rapidshare.com/files/216270391/etomite_1.1_opravene_soubory.rar
62 kB
bez hesla
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: Št Apr 02, 2009 12:30 am
od používateľa _rasel^
Tiež ma to trápilo, ale bol som dosť lenivý nato, aby som rozmýšľal, ale inšpiroval si ma k tomuto:
Kód: Vybrať všetko
$description = mysql_real_escape_string(htmlspecialchars(iconv('UTF-8', 'UTF-8//IGNORE', $_POST['description']), ENT_QUOTES, 'UTF-8'));
... do UTF-8 a navyše zahadzuje nepovolené _neviditeľné_ znaky UTF-8.
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: Št Apr 02, 2009 8:13 am
od používateľa puschpull
_rasel^: fajn, funguje
popiš mi, prosím, na jakém principu to funguje a co myslíš tím
a navyše zahadzuje nepovolené _neviditeľné_ znaky UTF-8.
díky
Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku
Napísané: Št Apr 02, 2009 6:27 pm
od používateľa _rasel^
Je to ochrana proti XSS. Funkcia
iconv() prekonvertuje dáta z UTF-8 do UTF-8 pričom zahodí všetky znaky, ktoré nie je možné prekonvertovať korektne (ochrana proti UTF-8 háčkovaniu
)
htmlspecialchars() prekonvertuje všetky nepovolené znaky na entity... a namiesto
mysql_real_escape_string() by sa hodilo použiť Prepared Statements, ale to by trebalo trocha upraviť funkcie.