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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 2
dnes 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 0
dnes 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 1
dnes 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
včera 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
včera 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
včera 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
včera 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
30.11. 19:19 | Nová verze

Příspěvek na blogu nadace Raspberry Pi je věnován bezpečnostním vylepšením v nejnovější verzi Raspbianu s desktopovým prostředím PIXEL. V oficiálních obrazech je nově zakázán SSH přístup. Ten lze samozřejmě povolit po zavedení Raspbianu pomocí nástroje raspi-config. Nemá-li uživatel k Raspberry Pi připojený terminál, může SSH přístup povolit vytvořením souboru ssh v adresáři /boot. Raspbian nově upozorňuje uživatele na bezpečnostní riziko, je-li SSH přístup povolen a uživatel pi nemá změněno výchozí heslo.

Ladislav Hagara | Komentářů: 42
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 755 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 392×
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: 66 | 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: 45 | 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-Výuka.cz, Nekuřák.net
xkucf03 avatar 23.5.2012 12:54 xkucf03 | skóre: 45 | 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-Výuka.cz, Nekuřák.net
Josef Kufner avatar 23.5.2012 15:07 Josef Kufner | skóre: 66
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: 45 | 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-Výuka.cz, Nekuřák.net
Josef Kufner avatar 23.5.2012 18:53 Josef Kufner | skóre: 66
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: 45 | 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-Výuka.cz, Nekuřák.net
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: 66
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: 66
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: 66
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: 45 | 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-Výuka.cz, Nekuřák.net
Josef Kufner avatar 23.5.2012 21:09 Josef Kufner | skóre: 66
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: 45 | 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-Výuka.cz, Nekuřák.net
Josef Kufner avatar 23.5.2012 21:40 Josef Kufner | skóre: 66
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: 45 | 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-Výuka.cz, Nekuřák.net
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: 45 | 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-Výuka.cz, Nekuřák.net
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.