Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Máte problém, hľadáte niečo? Opýtajte sa a poradíme...

Moderátor: Moderators

Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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é ?
----------------------------
http://puschpull.org
:-)
R - stick
Moderator & CLT
Moderator & CLT
Príspevky: 215
Dátum registrácie: Pi Sep 23, 2005 10:59 am
Bydlisko: Vysoké Studnice (u Jihlavy)
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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.
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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á
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok od používateľa puschpull »

asi to už mám !!!
moment
testuju
:-)
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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 !!
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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
:-)
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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
:-)
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
puschpull
Expert
Expert
Príspevky: 112
Dátum registrácie: Št Mar 19, 2009 9:31 am
Bydlisko: Czech Republic - Most
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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
----------------------------
http://puschpull.org
:-)
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Chyba ve znacích u popisu Tempate, Snippetu a Chunku

Príspevok 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.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Napísať odpoveď