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:

Kód: Vybrať všetko

save_snippet.processor.php
řá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:

Kód: Vybrať všetko

save_template.processor.php
řá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:

Kód: Vybrať všetko

save_htmlsnippet.processor.php
řá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.