Autor | Zpráva | ||
---|---|---|---|
niCe Profil |
Ahoj,
potřeboval bych zjistit hlavičky vzdáleného souboru. Zkoušel jsem get_headers ale píše to call to undefined function, takže na hostingu zřejmě není php 5. Šlo by to i jinak? Někde jsem se dočetl o fsockopen, ale bohužel jsem tomu blíže neporozuměl :) Nebo mi vlastně stačí jen content-size, ale protože filesize() nejde tak stejně asi musim získat hlavičky (nechci načítat celej soubor). Předem díky za každou radu :) niCe |
||
koudi Profil |
#2 · Zasláno: 21. 10. 2007, 01:48:05
potřeboval bych zjistit hlavičky vzdáleného souboru
Technicky vzato je podle mě tohle blbost. Můžeš tak maximálně získat hlavičky z http odpovědi serveru. Ale to je jen drobná technikcá poznámka :). Jestli máš k dispozici CURL, tak ho použij. Na tohle existuje krásná http metoda HEAD, která říká, že server má vrátit pouze hlavičky bez obsahu. Pokud curl nemáš k dispozici, budeš muset použít sockety (jestli budeš mít alespoň ty). To ovšem znamená trochu se zabývat protokolem http a jeho zpracováním... |
||
dracek Profil |
#3 · Zasláno: 21. 10. 2007, 11:04:40
Otevřít soubor, skočit na konec, zjistit pozici. Tralalaá, máme velikost.....
|
||
djlj Profil |
#4 · Zasláno: 21. 10. 2007, 11:30:51
|
||
dracek Profil |
#5 · Zasláno: 21. 10. 2007, 13:47:31
djlj
A proč ho načítat celý? Alespoň pokud vím, existuje funkce fseek.... |
||
tiso Profil |
#6 · Zasláno: 21. 10. 2007, 13:55:50
dracek - fseek funguje na otvorené súbory, čiže sa musia celé načítať...
|
||
DoubleThink Profil * |
#7 · Zasláno: 21. 10. 2007, 14:16:11
niCe
Vtipné glosy, pokud se jich nedokážeš vystříhat, si schovej do těla příspěvku - ne do předmětu. |
||
niCe Profil |
#8 · Zasláno: 21. 10. 2007, 14:22:41
djlj
Asi jen tomu prvnímu - fsockopen($file); A pak jako co? fputs ($file, "HEAD / HTTP/1.1"); ? Asi to je trapas, ale ja sem nad tim stravil celej večer a nic mě nenakoplo :) DoubleThink A ty si svoji trapnost schovej úplně. |
||
djlj Profil |
#9 · Zasláno: 21. 10. 2007, 14:26:45
niCe
Koukni na příklad 1328. Místo „GET /“ jen napiš „HEAD /adresasouboru“. A samozřejmě www.example.com si přepiš na vlastní adresu. |
||
niCe Profil |
#10 · Zasláno: 21. 10. 2007, 14:30:31
Ještě mi napadlo, kdyby to bylo takhle:
fsockopen($file); fgets ($file, xxxx); Kolik musim dát aby to přečetlo bytů abych dostal všechny hlavičky? |
||
niCe Profil |
#11 · Zasláno: 21. 10. 2007, 14:33:34
djlj
Dobře, díky. Ale jak uvedu název souboru? Mějme třeba www.images.com/images/photo.jpg fputs ($fp, "HEAD /images/phot.jpg HTTP/1.0 Host: www.images.com "); Rozdělí se tam pak takhle ta url? |
||
djlj Profil |
#12 · Zasláno: 21. 10. 2007, 14:36:41
niCe
Je to dobře. A nezapomeň změnit adresu domény i u fsockopen. |
||
niCe Profil |
#13 · Zasláno: 21. 10. 2007, 14:50:00
djlj
Dík :) Už asi tuším o co tam go, ale... asi to tluče jen ten samotnej fsockopen. Protože když tam necham to ", 80, $errno, $errstr, 30", napíše to tuhle chybu: Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known Bez těch parametrů, tzn. jen fsockopen ("www.example.com"); to chybu nepíše. Znamená to, že na hostingu není fsockopen povolena? |
||
niCe Profil |
#14 · Zasláno: 21. 10. 2007, 14:52:35
Ještě změna:
Warning: fsockopen() [function.fsockopen]: unable to connect to http://example.com:80 Tluče to tam ten port. Jak je to možné? Bez portu to chybu nepíše, ale zároveň to nic neotevírá :)) |
||
djlj Profil |
#15 · Zasláno: 21. 10. 2007, 14:58:38
Co to děláš? Přece:
$fp = fsockopen ("www.images.com", 80, $errno, $errstr, 30); |
||
niCe Profil |
#16 · Zasláno: 21. 10. 2007, 15:01:51
|
||
Časová prodleva: 16 let
|
0