Jak zjistit přítomnost souboru v jiné doméně ?
7 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Dobrý den, ze svého webu poskytuju jinému webu (něco jako backend) výpis posledních pěti článků a posledních pěti příspěvků v diskuzních fóru. XML nechtěl, tak jsem to udělal tak, že si může můj soubor jednoduše includovat z mého webu. Přístup do mé databáze z venku je zakázaný. Protože ale měl hosting, kde jsem nějaké problémy, nebyl můj web dostupný a kolegovi na jeho stránkách to PŘÍŠERNĚ zmršilo vzhled. Proto se chci zeptat, jestli pro něj existuje nějaká možnost kontroly existence vzdáleného souboru. File_exists funguje jen v rámci domény. Napadá mně obejít to pomocí fsockopen : $fp = fsockopen ("http://www.domena.cz/export/skript.php", 80); if (!$fp) { echo "<small>Chyba: vzdálený soubor není k dispozici.</small><br>\n"; } else { include("http:/www.domena.cz/export/skript.php"); } Může být ? Nebo raději jinak ?
-
Copak on si může z tvého serveru includovat nějak soubory? Já bych to celé dělal přes socket. Připojil bych se k tvému serveru, vyžádal si stránku (pokud by tam nebyla, tak vypsat chybu) a z ní bych vybral dané věci nějakým algoritmem. PAVEL
-
Copak on si může z tvého serveru includovat nějak soubory? Může a dělá to... A jak bys to řešil přes ten socket ? Na to jsem se ptal..
-
> $fp = fsockopen ("http://www.domena.cz/export/skript.php", 80); to je blbe ne ? v php jsem to sice nikdy nepotreboval, ale rekl bych, ze soketove funkce o http nic nevi, takze ten pozadavek na konkretni soubor musi jit az jako "zprava" tim soketem tj. fputs($fp,"HEAD /export/skript.php\nHost:www.domena.cz\n\n"); a pak cist, co to vrati cimz pripominam, ze fsockopen je docasne zakazany, odvazuju si slibit, ze do konce tydne to pobezi - s rozumnymi limity na pocet a datovy tok spojeni
-
co takle if($f=@fopen("http://...")) { ... fclose($f); }
-
Tady je základní komunikace přes socket: $host = "tvujweb.wz.cz"; $port = 80; $fp = FSockOpen($host, $port); if ($fp): // POZADAVEK $head = "GET http://$host/podadresar/soubor.php HTTP/1.0\n"; $head .= "Accept: text/*, text/html, */*\n"; $head .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MSN 2.5; Windows 98)\n"; $head .= "Host: $host\n"; $head .= "Pragma: no-cache\n"; $head .= "\n"; FPuts($fp, $head); // ODPOVED $answer = ""; while ($line = FGetS($fp, 128)): $answer .= $line; endwhile; /* a teď si musíš z proměnné $answer vytáhnout vše co potřebuješ (pomocí řetězcových funkcí) */ FClose($fp); else: // chyba: nepodřilo se připojit k sereveru endif; PAVEL
-
pouzivej \r\n a ne jenom \n - at dodrzujes rcf :-) (see rfc2616)