Autor Zpráva
Jean
Profil
Omlouvam se, neco podobnyho se tady resilo vcera: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=24 808 , Leo tam zminuje, ze je objevovani se takovych nahodnych retezcu typu "359f". Bohuzel kod, ktery mi posila server zpracovavam fci eval(); a te se nic takoveho nelibi, jak bych mohl zakazat zobrazovani techto retezcu?

thx
Leo
Profil
Myslite zakazat ty retezce co dela transfer-encoding: chunked? A mate moznost ovlivnit skript na tom serveru, ze kteryho ctete? Jakym zpusobem ta data ze vzdalenyho serveru nacitate? Leo
Jean
Profil
ano, potrebuji aby se ty retezce neukazovaly(pri zpracovani evalem to hazi chybu), server mi posila jako odpoved na POST pozadavek tyto data(jsou to kompletni phpkody pro zapis do db, ktere se pak provadi na druhem klientovi(localhost)), k tomu skriptu mam kompletni pristup...
Leo
Profil
Pokud tu odpoved ctete pres fsockopen nebo tak neco, tam tam mate tuto syrovou komunikaci se vsim vsudy, i s http hlavickou atd. Muzete se pokusit to nacist pres praci se vzdalenymi soubory (fopen) nebo pouzit knihovnu curl, ktera by mela vratit jen samotnou odpoved bez tech znaku. Druha moznost je zkusit ten vystup vzdaleneho serveru odchytit do output bufferu, zjistit velikost dat a poslat hlavicku Content-length / pak server nema duvod posilat to v transfer-encoding chunked. Leo
Jean
Profil
presne ctu to pres fsockopen, protoze je tomu pres socket posilan POST pozadavek. Jestli jsem to dobre pochopil, musi byt php zkompilovano primo s curlem(to by mohl byt problem) Mohl byste prosim popsat blize, jak s tim output bufferem?

diky moc
Leo
Profil
Mozna bych jeste dodal, kde se ta podivnost (transfer-encoding: chunked) bere. Trochu lidove, ale zhruba takto: Driv server http spojeni po kazdem pozadavku ukoncil, takze klient vedel, ze uz nema ocekavat data a ze mu vsechno co si vyzadal prislo. Dnes je mozne spojeni nechat otevrene, ale pak se musi klient nejak dozvedet, ze prenos daneho dokumentu na tom spojeni konci. Pokud server vi, jak to, co posila je velke datove, tak posle hlavicku Content-legth a tam to uvede. Klient vi, ze ma cekat 5678 bajtu, jakmile dorazi, vi, ze soubor ma komplet. Pokud ovsem server nevi, jak to bude velke, coz je napriklad pripad php skriptu, kdy se vystup posila uz behem jejich behu, pak tohle udelat nemuze. Posila proud dat, a musi nejak oznacit konec. Takze je posila po kouskach (chunk, kouknete to anglicko-ceskeho slovniku) a pred kazdym kouskem uvadi jeho delku v bajtech (jako sestnactkove cislo) / to jsou ty podivne retezce. Pokud uz nic k odeslani nema, posle nulu.

Pokud pouzijete output buffering (viz manual php, fce co zacinaji ob_ ....), pred odeslanim obsahu bufferu zjistite delku, a poslete hlavicku Content-length, pak by to melo prijit ok, bez chunku.

Leo
Jean
Profil
jo, to sem vedel, horsi je ze nevim, jak to upravit, aby to neposilalo "chunked":/
Leo
Profil
Ted jsem to tam doplnil. Leo
Leo
Profil
Neco jako

http://mirrors.inway.cz/manual/en/function.ob-get-length.php

posledni priklad (komentar) dole, Leo
Jean
Profil
supr, diky moc leo, to je presne ono, uz to funguje...:)
Leo
Profil
Samotneho me to tesi :-) Leo
Jean
Profil
:-)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0