abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:55 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Komunita

    GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.

    Ladislav Hagara | Komentářů: 0
    10.5. 15:00 | Zajímavý článek

    Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.

    Ladislav Hagara | Komentářů: 7
    9.5. 17:22 | Nová verze

    Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.

    Ladislav Hagara | Komentářů: 3
    9.5. 15:22 | Komunita

    Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.

    Ladislav Hagara | Komentářů: 0
    8.5. 19:22 | Nová verze

    Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.5. 18:00 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.

    Ladislav Hagara | Komentářů: 0
    8.5. 01:22 | Nová verze Ladislav Hagara | Komentářů: 0
    8.5. 00:55 | Zajímavý projekt

    PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.

    vlk | Komentářů: 0
    7.5. 19:44 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (22%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 583 hlasů
     Komentářů: 26, poslední 8.5. 09:58
    Rozcestník

    Dotaz: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK

    17.5.2012 16:46 adrinko | skóre: 22
    problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Přečteno: 439×
    Ahojte, prosim o pomoc, netusim preco dochadza k takemuto problemu:

    ked nacitam do ajaxu data zo statickeho skriptu index.html vsetko je ok. ale ked mi tie iste data vygeneruje dynamicky php vycitanim ich z db a naslednym echom, tak ajax nezbehne dobre, hlasi chybu (prehliadac).

    co je toto za hovadinu?

    priklad: index.html vypise "XXX" script.php vypise "XXX" ale vygeneruje to takto: echo $data[0]->var;

    viete niekto, v com je problem, preco data z php nie su dobre?

    Odpovědi

    Tarmaq avatar 17.5.2012 16:57 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    jakou chybu hlasi prohlizec? je urcite nultym prvkem pole $data instance nejake tridy?
    Don't panic!
    17.5.2012 17:20 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    áno, data je určite ok, lebo to vypíše vporiadku php (keď si otvoriím ten skript priamo v browseri). Prohlížeč IE píše syntax error line 281 character 163 v súbore ttm/canvas.1.03.jgz.

    17.5.2012 17:24 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    ešte prikladám ten súbor http://www.freefilehosting.net/canvas103
    Tarmaq avatar 17.5.2012 17:53 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    je velky problem ten soubor uploadnout primo sem?
    Don't panic!
    17.5.2012 17:38 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Určitě jsou to dva rozdílné výstupy lišící se nějakým netisknutelným znakem…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    17.5.2012 17:40 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    a viem to nejako zistiť, ktorý je ten netiskutelný znak?
    17.5.2012 18:03 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Jo, normálně si to stáhnout a pak se podívat/porovnat to třeba hex editorem.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    17.5.2012 17:50 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    neviem kde je problém, ale zistil som,že keď jednoducho vyechujem toto:
    $from ='05/17/2012 10:15:00';
      $to ='05/17/2012 10:30:00';
      $day ='5/17/2012';
    echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';
    tak to fičí ok, ale akonáhle pred to dám hocijakú funkciu, tak to ajax nespracuje, napr. toto (prepíšem na konci tie isté premenné čo v prvom skripte, ale aj tak to nejde dobre):
    $from= preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_from);
    $to  = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_to);
    $day = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->day);
    $from ='05/17/2012 10:15:00';
      $to ='05/17/2012 10:30:00';
      $day ='5/17/2012';
    echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';
    Tarmaq avatar 17.5.2012 17:58 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    hocijaku funkciu? ozaj? orly? neverim.. IMHO je problem nekde v poli $data
    Don't panic!
    17.5.2012 18:14 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    keby bol problém v $data, tak keď naplním znova manuálne tie isté premenné novými hodnotami (ako v ukážke kódu), tak by to malo fungovať, nie? ale mne to ani tak nefunguje.
    Tarmaq avatar 17.5.2012 18:41 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    presne tak, do promennych $from, $to, $date by se mely stejne priradit rucne definovane hodnoty, takze problem bude spise v tom, ze tam dojde k nejake notice/warning nebo tak neco, co pak rozbije ten vystup..
    Don't panic!
    17.5.2012 18:43 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    síce som neprišiel na to, čo tam blbne, ale prerobil som pole na iný tvar a ide to konečne super! diky za navedenie na správnu cestu!
    Array(
        [0] => array        (
                [id] => 24
                [time_from] => 05/17/2012 10:15:00
                [time_to] => 05/17/2012 11:30:00
                [day] => 05/17/2012
            )
     
    )
    17.5.2012 18:45 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    object vs. array?
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    17.5.2012 19:10 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    áno, presne. ale netuším, prečo to s obejct nefunguje.
    17.5.2012 22:24 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Asi to není všechno, co tady vidíme, a nebo prostě to tam generuje výstup, který je nám zde odpírán.
    Třeba tam vyletí nějaký notice či warning…
    Toto je to samé:
    <?php
    class Data{
      public $time_from = '05/17/2012 10:15:00';
      public $time_to ='05/17/2012 10:30:00';
      public $day ='05/17/2012';
    };
    
    $data = Array(0 => new Data());
    
    $from= preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_from);
    $to  = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->time_to);
    $day = preg_replace('/[\x00-\x1F\x80-\xFF]/', '',$data[0]->day);
    
    echo '{ "dtstart": "'.$from.'", "dtend": "'.$to.'", "day": "'.$day.'" },';
    
    jako byste přímo zapsal toto:
    { "dtstart": "05/17/2012 10:15:00", "dtend": "05/17/2012 10:30:00", "day": "05/17/2012" },
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    mess avatar 23.5.2012 15:20 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Tady vidím potenciální problém - čárka , na konci toho výpisu. Zkusil bych ji dát pryč, co to udělá.
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
    23.5.2012 15:31 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Jen jsem vysvětloval, že v tom není žádný rozdíl, jestli se to generuje a zavolá se nějaká fce, nebo se to vystřelí přímo - krom toho, že při generování tam můžou být chyby, které se snadno zjistí s vygenerovaného výstupu…
    Jak bylo zadání, tak jsem to tam opsal.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    17.5.2012 18:18 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    btw $data dava
    Array(
        [0] => stdClass Object
            (
                [id] => 24
                [time_from] => 05/17/2012 10:15:00
                [time_to] => 05/17/2012 11:30:00
                [day] => 05/17/2012
            )
     
    )
    v čom by tam mohol byť do kelu problém?
    17.5.2012 18:56 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Co to tam vyvádíš s tím echem? Snad se z toho nepokoušíš vyrobit JSON?
    echo json_encode(array("dtstart"=>$from,"dtend"=>$to,"day"=>$day));
    17.5.2012 19:05 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    problém s json_encode je ten, že mi z 05/17/2012 spraví 05\/17\/2012
    17.5.2012 19:14 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    To je snad dobře, ne? Alespoň je ten JSON korektní. To děláš pro Američany?
    18.5.2012 23:29 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    :D s tými Američanmi som sa pobavil. nie nie, nerobím to pre nich. je to taká nepodarený library, volá sa yui, ktorá berie len hetak naformátované veci a preto ak sa tam vyskytne spätné lomítko, tak to už nevie spracovať (teda vytiahnuť si dátumy korektne...)
    19.5.2012 00:42 DK
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    tak tam pridej replace do yui ne? :)
    19.5.2012 12:39 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    pravda, to by šlo.
    19.5.2012 12:58 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Pokud ten JSON budeš dávat do Javascriptu, stačí použít funkci eval(), která si s těmi zpětnými lomítky hravě poradí.
    19.5.2012 15:40 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    A s jiným podstrčeným kódem taky.
    19.5.2012 16:52 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Funkce json_encode() přidává uvozovky, podstrčený kód se tedy předá jako řetězec.
    xkucf03 avatar 23.5.2012 12:53 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    On spíš myslel, kdyby ze serveru přišel obecně nějaký závadný JSON (ve skutečnosti závadný skript), ale to není až takový problém, protože vlastnímu serveru bys měl věřit (a v případě MITM ti může podvrhnout cokoli jiného, takže už je to jedno).
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    xkucf03 avatar 23.5.2012 12:54 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Podle JSONLint validátoru je:
    {
        "dtstart": "05/17/201210: 15: 00",
        "dtend": "05/17/201210: 30: 00",
        "day": "05/17/2012"
    }
    v pořádku. Že by zase nějaká JSON obskurnost?
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 23.5.2012 15:07 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Ty zpětná lomítka před normální se tam přidávají, aby náhodou nevznikl uzavírací tag, který by mohl dělat někdy potíže. (Jo, je to úchylárna.)

    http://stackoverflow.com/questions/1580647/json-why-are-forward-slashes-escaped
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 23.5.2012 16:47 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Dík, to jsem nevěděl.

    Ale jinak OMG: od toho máme přece
    <![CDATA[
    …
    ]]>
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 23.5.2012 18:53 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Tím jen převedeš problém na zákaz "]]>".
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 23.5.2012 19:27 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    No, hlavně odpovědnost za správné escapování nemá mít JSON (ani formát, ani knihovna), ale ten, kdo něco někam vkládá. A escapovat se bude pokaždé jinak podle toho, jestli vkládám do elementu bez CDATA, nebo do CDATA, nebo do atributu, nebo do .js souboru, nebo třeba do zdrojáku LaTeXu nebo jakéhokoli jiného formátu/prostředí… Připomíná mi to PHP Magic Quotes a podobné bastlení.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.5.2012 20:25 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    A proč? Když budu chtít uložit do JSONu binární data, tak nejsem povinen je nijak escapovat. json_encode() si s tím musí umět poradit tak, abych při json_decode() dostal identická data.

    Když ukládám data do DB, tak je také nesmím escapovat, abych je měl v DB přesně byte po bytu tak, jak je tam potřebuji mít.
    Josef Kufner avatar 23.5.2012 20:45 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Tak. A když pak vkládáš JSON do HTML, tak ho musíš taky escapovat.
    Hello world ! Segmentation fault (core dumped)
    23.5.2012 20:56 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Ne. Když vkládám JSON do HTML, tak nejprve json_decode() a pak htmlspecialchars(). V HTML nemá JSON co pohledávat.
    Josef Kufner avatar 23.5.2012 21:17 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Proč decode?
    Hello world ! Segmentation fault (core dumped)
    23.5.2012 21:35 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Abych dostal původní datový strom, který jsem si do JSONu uložil a mohl s ním dál pracovat.
    Josef Kufner avatar 23.5.2012 21:41 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    A v čem to pomůže jeho vložení do HTML?
    Hello world ! Segmentation fault (core dumped)
    23.5.2012 20:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    A zas jindy musím data escapovat, když je vkládám do db, abych je měl v DB přesně byte po bytu tak, jak je tam potřebuji mít.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    xkucf03 avatar 23.5.2012 21:00 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Protože můžu napsat třeba:
    <script>
      <?php
        echo json_encode(array("dtstart"=>"<![CDATA[","dtend"=>"05/17/2012 10:15:00"));
      ?>
    </script>
    nebo
    <script>
      <?php
        echo json_encode(array("dtstart"=>"<script>","dtend"=>"05/17/2012 10:15:00"));
      ?>
    </script>
    což mi rozbije výstup.

    Případně když budu vypisovat jinam (atribut, jiný formát), může se tam rozbít něco jiného. Proto je potřeba, aby escapoval ten, kdo ví*, kam se vypisuje. A tudíž je to polovičaté escapování ve funkci json_encode() nadbytečné a povede akorát ke zmatkům a chybám – stejně jako ty PHP Magic Quotes – programátoři se budou spoléhat na to, že můžou jen tak přilepit návratovou hodnotu funkce do výstupu a nebudou ji escapovat a špatně dopadnou.

    Ta funkce má i volby – trochu by pomohla JSON_HEX_TAG, která zneškodní ty < >, ale stále tam zbudou & a ty budou dělat neplechu (neexistující entity). Takže je potřeba přidat ještě JSON_HEX_AMP. A už to není tak jednoduché a možná tam jsou i další díry…

    Je to takový neunixový přístup, jedna funkce se toho snaží dělat příliš mnoho a nakonec to dělá blbě. Daleko lepší mi přijde to rozdělit – mít jednu spolehlivou funkci na generování JSONu a jinou spolehlivou funkci na escapování (pro různé výstupní formáty) a tyto dvě funkce zřetězit:
    $výstup = bezpečněEscapujProDanýVýstupníFormát(generujNějakáData($vstup));
    *) což může být programátor, který zavolá patřičnou funkci, nebo třeba nějaký inteligentní šablonovací systém, který zná kontext.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 23.5.2012 21:09 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    <script>
      <?php
        echo htmlspecialchars(json_encode(array("dtstart"=>"&<![CDATA[","dtend"=>"05/17/2012 10:15:00")));
      ?>
    </script>
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 23.5.2012 21:23 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Ano, tak je to správně* – ostatně to jsem myslel tím bezpečněEscapujProDanýVýstupníFormát(). Jenže pak je nějaké přidávání zpětného lomítka před / zbytečnost a nemá tam co dělat – akorát to někoho svede k chybě.

    *) relativně – zase to zbytečně převádí " na &quot;, přestože uvozovky v textových uzlech (uvnitř elementů) klidně být můžou a je potřeba je převádět jen v atributech – a to ještě jen v těch, kde je hodnota zavřená do uvozovek – zatímco v <element atribut='nějaká "hodnota" s uvozovkami'/> klidně být můžou.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 23.5.2012 21:40 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Ale v apostrofech uzavřené hodnoty zas nemohou obsahovat apostrof, takže to escapování uvozovek je celkem dobrý nápad. Ale jinak htmlspecialchars bere jako parametr příznak, zda uvozovky escapovat, či ne.
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 23.5.2012 21:46 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Koukám, že tam jsou příznaky na oboje – ENT_NOQUOTES a ENT_QUOTES – takže se dá dosáhnout celkem precizního výsledku, kdy se neescapuje to, co není potřeba:
    • apostrofy ani uvozovky uvnitř elementů
    • apostrofy uvnitř atributů zavřených do uvozovek
    • uvozovky uvnitř atributů zavřených do apostrofů
    ale výchozí chování je takové humpolácké.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    23.5.2012 21:30 Kit
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Specifikace formátu JSON připouští 2 možnosti ("/", "\/") a to není dobře. Na druhou stranu není možná dvojí interpretace. Shodneme se snad na tom, že při ukládání by nemělo být escapování pokud možno žádné, ale při výstupu je nutné escapovat podle kontextu, ve kterém je generován:
    • Javascript v HTML
    • čistý Javascript
    • čisté HTML
    • něco jiného
    Pokaždé je potřebné escapovat trochu jinak. Ve chvíli, kdy JSON vytváříme, však teoreticky nemusíme tušit, v jakém formátu bude uskutečněn výstup a proto jsou tyto zmatky.
    xkucf03 avatar 23.5.2012 21:42 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    V tom se shodneme.

    Nelíbí se mi to, když funkce na generování JSONu tam jako výchozí cpe ty \/, protože pak z toho bude mít někdo pocit, že nemusí escapovat a dojde k chybě. A když naopak escapovat bude, tak jsou tam ty \ nadbytečné – k chybě sice nedojde, ale proč je tam dávat?
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    mess avatar 24.5.2012 15:38 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: problém so spracovaním dát ajaxom - z PHP zlé z HTML OK
    Ještě bych se zkusil podívat, jaké hlavičky posílá server, když servíruje to HTML a porovnal s tím, když servíruje PHP.
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.