PHP skript - zobrazení nejnovějšího obrázku ze složky
Ahoj,
mám zařízení které v pravidelném časovém intervalu udělá fotku a nahraje ji přes FTP na free hosting.
Mám web, na jiném hostingu než je free hosting s FTP, kde mám nasazen certifikát od letsencrypt, takže celý web běží pod https.
Na webu s https mám skript pro zobrazení nejnovější fotky ze složky na free hostingu.
<?php
$dir = 'http://test8819.borec.cz/timelapse/';
$base_url = 'http://test8819.borec.cz/timelapse/';
$newest_mtime = 0;
$show_file = 'BROKEN';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (($file != '.') && ($file != '..')) {
$mtime = filemtime("$dir/$file");
if ($mtime > $newest_mtime) {
$newest_mtime = $mtime;
$show_file = "$base_url/$file";
}
}
}
}
print '<img src="' .$show_file. '" alt="Image Title Here">';
?>
Na free hostingu mi vše funguje korektně, http://test8819.borec.cz/gallery.php/ zobrazí poslední uploadnutý obrázek.
Na mém hostingu mi to bohužel nechce nějak chodit.
https://crocodilus.cz/uploads/gallery.php
Buď je to problém https vs http webu nebo někde dělám nějakou trapno chybu.
Dokázal by mi někdo poradit?
Díky!
Jestli dobře chápu, tak se snažíš z jednoho serveru vylistovat obsah adresáře na jiném serveru? To obvyklé bývá zakázané, o čemž se můžeš přesvědčit, když tu adresu http://test8819.borec.cz/timelapse/ zadáš do prohlížeče.
Nene, vylistovat ne.
Tady můžeš vidět, jak to má fungovat -
http://test8819.borec.cz/gallery.php/ - pokud stránku obnovíš, měla by se vždy zobrazit nejnovější fotka z adresáře.
A na adrese mám ten samý skript - https://crocodilus.cz/uploads/gallery.php jenže mi obrázky nezobrazuje.
A ten samý skript tahá data zase ze svého serveru?
Ne, ten skript který běží na https://crocodilus.cz tahá obrázky z toho http://test8819.borec.cz/timelapse/ free hostingu protože na https hostingu ftp služba vůbec neběží a nechci aby běžela.
No takže se snažíš vylistovat obsah adresáře na jiném serveru.
To je prave ono, nemuzes to takhle volat mezi domenami, leda pomoci curl (na konkretni obrazek)...
Aha:(
Tak to je dost naprd. Jen nerozumím tomu, že když napíšu konkrétně adresu nějakého obrázku, např
<img src="http://test8819.borec.cz/timelapse//14:39:03.jpg">
tak se na webu normálně obrázek kdekoliv zobrazí.. (Kdyby teda poradna neměla divně osekané fce pro nepřihlášené uživatele...)
Tak ono je dost velký rozdíl zobrazit jeden konkrétní soubor u kterého znáš název a zobrazit seznam všech souborů v adresáři.
Chmm, nějaký nápad jak to udělat lépe?
Na free hostingu dej php skript, který bude mít jako výstup název aktuálního obrázku.
Ten název načti na druhým hostingu a obrázek zobraz.
Proč neuděláš třeba toto? Nechápu.
Akorát se teda možná prohlížečům nebude líbit, že stránka běží na HTTPS, ale obrázek se snaží stáhnout z jiného serveru přes HTTP.
To pak bude mít upozornění před adresou.
Ale i to se dá řešit, například tak, že ten druhý hosting stáhne obrázek a pošle prohlížeči obrázek třeba v base64. To pak nebude problém ani s https. Další možnost je použít freehosting s https, např. já používám freehosting na zikum a ten má zdarma i https
Nejstupidnejsi reseni je jebnout to "http://test8819.borec.cz/gallery.php/" do src iframe...
Technická:
Proč máš v adrese dvě lomítka? Vážně dáváš do názvu souboru dvojtečky?
Pokud správně chápu, o co se snažíš, tak by to mělo fungovat. Jen je nutné použít klasicky <img ....> a zadat správný název souboru. Ten skript, který generuje fotky, aby vždy poslední fotku zkopíroval např. jako last.jpg. A z druhého webu budeš zobrazovat tenhle obrázek.
Díky, přivedl jsi mě na myšlenku, že opravdu v tomto konkrétním případě nepotřebuju ukládat soubory s otiskem času, tak jako by se mi to hodilo při pokusu o sestavení timelapse, ale stačí jednoduše přepisovat jeden a ten samý obrázek a tím si prakticky a naprosto jednoduše vyřeším všechny problémy :)