Autor Zpráva
davef6
Profil
Dobrý den, dá se nějakou funkcí zjistit, zda je mp3 stále na vzdáleném serveru uložena nebo ne? případně nějaký příklad:) děkuji za odpovědi
Joker
Profil
davef6:
Zkusit otevřít a kdyžtak se vrátí, že soubor neexistuje :-)
davef6
Profil
zkoušel jsem toto, ale neni to vůbec spolehlivé

$fh = fopen($soubor, 'r');
                          $theData = fread($fh, 3);
                          fclose($fh);
                          if(empty($theData))
                          {}
                          
valecekm
Profil
davef6
Zkus hledat tadyhlenc, určo si vybereš ;-).
http://php.vrana.cz/nacitani-souboru.php
davef6
Profil
tak jsem vyzkoušel toto

$file = file_get_contents($soubor, NULL, NULL, 0, 10);
                          if(empty($file))
                          {}


a žádná změna k lepšímu:(
valecekm
Profil
davef6
chvilku vydrž mam řešení. ;-)
davef6
Profil
to by bylo super:)
valecekm
Profil
Je to sice šílené řešení, ale u mně funguje. Zkušenější mohou případně upravit (zatim jsem totiž s hlavičkama nějak více blíže nepracoval, proto to řešim přes vyhledaní OK).
<?php
$soubor = "http://newagegames.cz/20autoskola.mp3"; // hledany soubor                     
$zavolej = get_headers($soubor); // vrati hlavicku (pole)
$vyhodnot = strpos($zavolej[0], "OK"); // vyhleda v prvnim prvku pole jestli bylo vraceno "OK" jinak vrati false
     
 if( $vyhodnot == false ){echo "nenalezeno";} // nenalezeno
	            else {echo "nalezeno";} // jinak nalezeno
	            
// Pro pripadne vysvetleni odkomentovat (/**/) a uvidis vysledek	            

/*
    echo "<br><br>";
    print_r($zavolej);
*/
?> 


Kde je ale funkce get_headers zakázána, tak tam slavit úspěch nebudeš. Pokud by zkuš. borci věděli jak to vytahat spolehlivějš z hlavičky nebo nějak jinak, tak napište, tohle mě jen tak napadlo jak to obejít místo přečtení souboru ;-) .
Fergi
Profil
zkus
$file = file_get_contents($filename);
if(!$file){}

?
edit: Mozna bych jeste overil jestli se jedna o MP3 (viz http://php.vrana.cz/zjisteni-typu-souboru.php)
davef6
Profil
díky za řešení, vyzkouším:)
DoubleThink
Profil *
Je to sice šílené řešení, ale u mně funguje.
Šílené, ale jediné zatím správné. Není důvod načítat celý soubor jenom proto, abych se ujistil, že existuje.

$headers = get_headers("http://newagegames.cz/20autoskola.mp3", 1);

if(strpos($headers[0], 'OK') !== false){
	// soubor existuje
}
valecekm
Profil
davef6
Jinak to moje řešení bylo jen na ukázku, rychlejší a úspornější je od DoubleThink, ja to rozepisoval a rval tam tunu proměnnejch aby to bylo pouze lépe pochopitelné. Použij to od DoubleThink. Ale říkam kde fce
get_headers()
není povolena, tak to prostě nepůjde (mně to nešlo třebas i na localhostu, tak aby jsi se nedivil ;-) ),
Joker
Profil
DoubleThink:
Není důvod načítat celý soubor jenom proto, abych se ujistil, že existuje.
Tak nebylo by třeba ho číst celý... stačilo by například přečíst 4 bajty a zkontrolovat, jestli to je 255 255 255 251 :-)
davef6
Profil
tak jsem zjistil, že
get_headers()
neni povolena na většině:( takže zase nic
valecekm
Profil
davef6
zjistiljsi to pouze z internetu a nebo jsi to sam vyskousel na svem hostingu? Pokud ti to na tvem host. pujde a nedelas nejakou komercni aplikaci, ktera by mela slapat vsude, tak bych to neresil. Hlavicky by se meli dat zjistit i jinym zpusobem ;-). Jen hledat, ja se sem dnes uz asi nedostanu, takze stim ti uz neporadim.
DoubleThink
Profil *
neni povolena na většině:( takže zase nic
Možná freehostů, ale tam je spíš vypnutá direktiva allow_url_fopen. V takovém případě ti nebude fungovat žádná ze zmíněných funkcí, včetně fopen a file_get_contents.
Zbývá pak už jen fsockopen, možná cURL.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: