File_get_contents – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

File_get_contents – PHP – Fórum – Programujte.comFile_get_contents – PHP – Fórum – Programujte.com

 

Dušan
~ Anonymní uživatel
62 příspěvků
30. 9. 2020   #1
-
0
-

Zdravím,

potreboval by som vedieť, či pri tomto skripte sťahuje file_get_contents aj obsah súboru "photo.jpg", alebo výsledkom je iba true/false a podľa neho sa rozhodne ďalej:

$obrazok = "http://www.nejaka_url/photo.jpg";
if(file_get_contents($obrazok)) {
// obrazok existuje
}
else {
//obrázok neexistuje
}

Za pomoc a fundovanú odpoveď ďakujem...

Nahlásit jako SPAM
IP: 89.173.23.–
gna
~ Anonymní uživatel
1891 příspěvků
30. 9. 2020   #2
-
0
-

Načte to celý obsah souboru (pokud existuje).

Nahlásit jako SPAM
IP: 213.211.51.–
Dušan
~ Anonymní uživatel
62 příspěvků
30. 9. 2020   #3
-
0
-

#2 gna
No toho som sa obával...

Kontrolujem totiž na jednej url obsah cca 200 adresárov, či sa v nich nachádza súbor photo.jpg. Funkcia

if (file_exists($obrazok)) {

mi z na tej url nefunguje...

Márne pátram, či existuje ešte nejaká možnosť overenia existencie súboru na inej url....

Nahlásit jako SPAM
IP: 89.173.23.–
peter
~ Anonymní uživatel
4014 příspěvků
30. 9. 2020   #4
-
0
-

Co jsi nasel googlem? Zkousel jsi hledat?
google = php check exist url file 

$file = 'http://www.example.com/somefile.jpg';
$file_headers = @get_headers($file);
if(!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}
function url_exists($url) {
    return curl_init($url) !== false;
}
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Dušan
~ Anonymní uživatel
62 příspěvků
30. 9. 2020   #5
-
0
-

#4 peter
Fu, asi som nehľadal dosť... google mi stále núkalo iba ten file_exist...

Ale to riešenie s $file_headers bude asi to pravé, poobede to skúsim a napíšem výsledok. Zatiaľ veľká vďaka!
 

Nahlásit jako SPAM
IP: 89.173.23.–
Dušan
~ Anonymní uživatel
62 příspěvků
30. 9. 2020   #6
-
0
-

#5 Dušan
Wow, to je ono, ešte raz vrelá vďaka!
Načíta to aj rýchlejšie, aj bude prenos dát určite skromnejší, ako pri file_get contents!

Paráda, takže s tým $file_headers = @get_headers($file); je problém vyriešený.

Super!

Nahlásit jako SPAM
IP: 89.173.23.–
Kit+15
Guru
30. 9. 2020   #7
-
0
-

#6 Dušan
funkce get_headers() stahuje ze serveru pouze hlavičku, proto je rychlejší.

Nahlásit jako SPAM
IP: 37.188.240.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
1. 10. 2020   #8
-
0
-

Existuji linuxove a win funkce, ktere jsou asi 100x rychlejsi. Ty bys musel volat asi pres exec(). Bohuzel si nevybavim nazvy, co jsem pouzival. A vetsinu z nich admine blokuji, protoze hromadne prochazeni adresaru se da povazovat za hackersky utok.

Zkus si dat do
google: php detect file on remote server
google: detect file on remote server linux
php: curl_init, ftp_nlist, fopen
linux: ping, tracert, bash/wget (a ten jeden si nevzpomenu, ale delal presne, co chces)

function validate_url(){
  if [[ `wget -S --spider $1  2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
    return 0
  else
    return 1
  fi
}
Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
4014 příspěvků
1. 10. 2020   #9
-
0
-

https://www.codexworld.com/how-to/check-if-remote-file-exists-url-php/

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Kit+15
Guru
1. 10. 2020   #10
-
0
-

#8 peter
Zkusil sis už tu funkci get_headers()? Ta vůbec není pomalá a jistě bude rychlejší než volání externího programu.

Nahlásit jako SPAM
IP: 46.135.24.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
1. 10. 2020   #11
-
0
-

#9 peter
Tak jsem to změřil. Funkce get_headers() mi výsledek dodá za cca 16 ms, wget přes exec() za cca 23 ms.

$time = microtime(true);
$url = "http://localhost/";
$opts = ['http' => ['method' => 'HEAD']];
$context = stream_context_create($opts);
$headers = get_headers($url, 1, $context);
printf("%6.3f ms\n", (microtime(true) - $time)*1000);

Otázkou zůstává: K čemu je to dobré? Když chci soubor, tak ho stáhnu, když ho nechci, tak ho nechám být. Předběžné zkoumání jeho existence mi nedává smysl.

Nahlásit jako SPAM
IP: 46.135.24.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
1. 10. 2020   #12
-
0
-

#11 Kit
Jo, jenze ty se bavis o detekci jedne url a ne treba 50.

Ja pred XX lety potreboval propingat asi 30 adres. Zjistit, zda tam existuje soubor a pokud ano, stahnout jeho obsah a najit konkretni string. Nebo porovnat aspon delku, abych zjistil, ze dane stranky funguji.

Predpokladam, ze potrebuje hackovat server a hledat na nem konkretni soubor, o kterem vi, ze jej lze napadnout. Mozna 1000 serveru. CMSka maji nekolik takovych der. Treba obrazek u file_uploaderu (tusim to byl hack u CK/FCK editoru), ktery je mozne spustit pres url. Spousta lidi provozujicich cms nedela updaty.

Nahlásit jako SPAM
IP: 193.84.198.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 10. 2020   #13
-
0
-

#11 Kit
Jakoze, nepopiram, ze je get_headers rychle, o moc rychlejsi nez file_exists a file_get_contents a rychlejsi nez spousteni cmd kvuli par adresam. Proste, zalezi na tom, co presne potrebuje v jakem poctu a tak.

Nahlásit jako SPAM
IP: 193.84.198.–
Kit+15
Guru
1. 10. 2020   #14
-
0
-

#12 peter
Pokud potřebuješ zjistit, zda existuje soubor a následně ho stáhnout, tak to ho můžeš stáhnout rovnou i bez zjišťování existence.

Psát kvůli tomu skript v PHP je samozřejmě nesmysl, když máme wget a potřebuješ to volat z shellu. Tazatel to však potřeboval volat z PHP, které na to svou nativní funkci už má.

Nahlásit jako SPAM
IP: 46.135.24.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Dušan
~ Anonymní uživatel
62 příspěvků
24. 12. 2020   #15
-
0
-

No páni, vy tu preberáte level, na ktorý ja, bohužiaľ, nemám...

Ale mám dlhšiu dobu otestované to $file_headers = @get_headers($file); a beží to aj rýchlo, aj spoľahlivo, tak už ani neskúšam inú možnosť, táto mi plne vyhovuje.

Tak ešte raz vďaka za pomoc!

Nahlásit jako SPAM
IP: 89.173.23.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý