Keresés

Új hozzászólás Aktív témák

  • btz

    addikt

    Készítettem egy PHP alapú alkalmazást, amivel IP kamerák által FTP-n feltöltött képeket lehet kilistázni generált, User/Password védett weboldalon.

    Keresgéltem a neten olyan PHP script után, amit feltölthetek webtárhelyre és az IP kamerák statikus JPG formátumban feltöltött képeit egy generált weboldalon kilistáztathatom és Felhasználónév / Jelszó birtokában megnézhetek, akár mobilon is, anélkül, hogy le kelljen azokat FTP-vel töltenem a szerverről.
    Nem találtam egy normális scriptet sem, így nekiálltam szerény PHP tudásommal "összeeszkábálni" egyet. Tudom 90-es évekbeli design és spagetti PHP kód, de a funkcionalitását betölti úgy ahogy az nekem megfelelő.
    Abban a reményben mutatom be nektek, hátha egy (vagy akár több) hozzáértőbb PHP fejlesztő forkolja és tovább fejleszti. Nekem is vannak még ötleteim a továbbfejlesztésre, de sok időm nincs rá, de azért szép lassan haladok vele. Viszont egy több fejlesztő által reszelt kód gyorsabban fejlődne.

    Installálás
    A forráskód letölthető a GitHub-ról és a GitLab-ról.
    Ez feltölthető tárhelyünkre, szerverünkre.
    Hozzunk létre egy Mysql adatbázist szerverünkön és futtassuk le az /sql/install.sql fájhlban lévő parancsokat (Például Phpmyadminban)

    INSERT INTO `registered_users` (`id`, `user_name`, `display_name`, `password`, `email`, `opt_adm`) VALUES
    (1, 'DefaultUser', 'User Orig Name', 'MD5 PASSW', 'your@mail.com', '1');

    Ezt a részt cseréljük a saját adatainkra, ezzel fogunk tudni belépni a dashboardra. (Saját név, Saját megjelenített név, MD5 jelszó, Emailcím). Azt opt_adm = 1 esetén admin lesz a felvett user, más esetén sima felhasználó.

    INSERT INTO `registered_cameras` (`c_id`, `display_camname`, `cam_path`, `cam_owner`, `cam_secret`) VALUES
    (1, 'DefaultCAM', '/DATAS/CMS/', 1, 12345678); -- Change to Your own camera datas, and add a random secret (Max 8 numbers) --

    Ennél a résznél felvehetjük az első kameránk képeinek elérési útját, ami a fent felvett user tulajdona lesz. Ne feledkezzünk meg egy szép random titkos 8 jegyű számot is adni a kamera elérési útnak.

    A /class/DataSource.php-ben állítsuk be az adatbázisunk elérését! (HOST, DB USERNAME, DB PASSWORD, DB NAME).

    Használat

    Ha mindent jól csináltunk, beléphetünk az index.php-n keresztül a dashboardba, ahol jelenleg csak két menü elem van, a CAMLIST, adminoknak pedig az USERLIST (de ez a rész még nincs teljesen kész, egy tömböt listáz ki a rendszerben lévő felhasználók adataival)

    Itt adhatunk hozzá kamera elérési útvonalat (8 jegyű camera secret is létrejön egy random generálással!), ami beíródik az adatbázisba, illetve törölni elérési útvonalat, ami törlésre kerül az adatbázisból.
    Ez a rész majd a későbbiekben szépítve lesz, jelenleg csak egy table elrendezésre futotta.
    A view gombra kattintással nyílik meg a reader, ami kilistázza a legfrissebb 200 képet, illetve lapozható, így megjeleníthető az összes kép. Ezt is majd szeretném userhez kötötten megcsinálni. Azaz az user megadhatja mennyi képet szeretne látni , de nem ajánlatos 10000 kép/oldal-t csinálni (megöli a böngészőt).
    Lehetőség van a dátum szerinti rendezés megfordítására már a camlist.php-ben is, amit a GET lekövet minden lapon azaz a régebbi képek lesznek az első lapon, a többin az újak. Ezt is adatbázisba írhatóvá akarom tenni, így megmarad a beállítás a felhasználónak. Jelenleg csak addig marad meg, amíg a GET le tudja követni az URL-ben ezt a beállítást.

    A camreader.php listázza ki az adott elérési úton található képfájlokat GET-el felparaméterezve. Mutatja a rendezést, a kamera elérési utat. Mutatja hogy összesen hány kép van feltöltve a mappába és hogy hányadik lapon állunk. A képek alatt megjelenik a fájl neve és a képfájl dátuma, így könnyen beazonosítható, hogy mikor készült a kép.

    A képre történő kattintás után megnyílik a kép egy úgynevezett modal slider-ben, ami automatikusan pörög jelenleg, azaz átugrik az újabb képekre (Ez majd módosítva lesz a következő verziókban és csak gombnyomásra fog elindulni az automatikus képcsere. De azt sem bánnám ha egy forkban valaki megcsinálná és nekem már csak be kéne húznom a saját verziómba :D )

    Nem általam készített, felhasznált beépített projektek
    PHPPOT beléptető rendszer. (Működését elemeztem ebben a blogban)
    Modal lightbox and slider

    Mit szeretnék még belerakni, javítandó dolgok
    - Admin általi felhasználó kezelés, hozzáadás és törlés, szerkesztés
    - START / STOP gombok a modalhoz (Esetleg plusz billentyűparancs)
    - Kamera útvonal törlése előtti biztonsági értesítés (megerősítés)
    - Kamera adatok frissíthetősége törlés és újbóli felvétel helyett
    - Szebb kamera lista (a táblázat helyett)
    - A kameralistánál már a camlist oldalon látható legyen, hogy mennyi képfájlt tartalmaz a mappa.
    - MP4 videó lejátszása, videólista kezelése
    - Adatbázisban rögzített rendezési beállítás
    - Adatbázisban rögzített egyéb felhasználói opciók

    Várom az ötleteket és a forkokat
    Várom mindenkinek a további fejlesztési ötleteit. A forráskód forkolását és saját ötleteid alapján történő további fejlesztését, vagy akár teljesen új alapokról történő kód újraírást (PHP-ben pro szeméylektől)
    A fejlesztés menete a Githubos commitok által követhető nyomon, főleg itt teszem közzé, hogy mit miért változtatok a kódon.
    Én ugyan IP kamera képeinek nézegetésre használom ezt a rendszert, de elképzelhető, hogy más képekkel való munkára is fel lehet használni. Erre is várom az ötleteket.

    Köszönöm ha elolvastad! :)

    ⓑⓣⓩ

  • btz

    addikt

    válasz pelyib #20001 üzenetére

    Üdv!

    Először is köszönöm, ezbben leledzik minden PHP tudásom, amit össze tudtam szedni a cél érdekében. (Nem foglalkozom napi szinten programozással)

    Nem ismerem az általad ajánlott PHP galleryt-t de így első ránézésre azt mondom, hogy az enyém jóval egyszerűbb céleszköz kamerakép nézegetésre, mindazonáltal jobban szemügyre veszem majd az általad ajánlott Piwigo scriptet is.

    PDO-t már nézegettem, ha jól tudom az előnye abban rejlik, hogy könnyedén lehet változtatni az SQL típusokat és teljesen objektumorientált, de jelenleg a PHP tudásom nincs azon a szinten, hogy egy könnyű félórás szabadidőben csak úgy lecseréljem. Szívesen veszek minden forkot, ami a PDO-ra építkezik adatbázis tekintetében, ebből én is építkezni tudnék PHP ügyileg :)

    Az aktruális scripten való bejelentkezési pontot már én fabrikáltam rá. Igen, sajnos ezzel kódismétlés van. Erre is szívesen várnék egy változatot, ami egy ponton beléptet és vissza tud dobni a refer oldalra.

    "csak egy folder legyen elerheto a webservernek (tipikusan web vagy public neven)"
    Ezt nem értem pontosan, de jelenleg is így van. Egy mappában van a dashboard és a képek mappa is ami htaccessel le van védve, így csak az viewer applikációban nézhetők a képek.

    Probálom minél jobban szétválasztani a vieweket a PHP változóktól és minden egyébtől.

    Amint lesz időm rendezem a kód sorait olvashatóság szempontjából. :)

    public function __construct(DataSource $source)
    {
    $this->ds = $source;
    }

    Ez az injektálási eljárás pontosan mitől is jobb? Illetve nem nagyon értem, hogy a require_once nélkül akkor hogy is érem el vele a DataSource.php fájlt?

    A readme fájlban meg fogom említeni, hogy milyen PHP verziókon fut, csak előtte le kéne magamnak is tesztelni, eddig az egész 7.4-en ment , nem néztem meg, hogy mondjuk 5.6-on van e nyűgje :D

    if(true === empty($_SESSION["userId"]))
    {
    require_once './view/login-form.php';
    exit;
    }

    //amit ved

    Ez jó ötlet, azthiszem ez lesz az első a listán amit majd cserélek. Ennél legalább dereng is, hogy miért jobb ha így csinálom :)

    A Class folder a PHPPOT cucca volt eredetileg, de persze bele nyúltam mivel kellett néhány módosítás itt ott.

    Köszi a hasznos tippeket, ahogy haladok a PHP-vel való ismerkedésben próbálom behúzni a kódba a hasznos módosításokat. :R

    ⓑⓣⓩ

  • btz

    addikt

    válasz mobal #20007 üzenetére

    pelyib tanácsolta ezt, de amúgy a minél rövidebb kód annál jobb elvet szoktam követni.

    Ennek megfelelően így alakítottam át a kódot az index.php esetén és így a camlist.php esetén.

    [ Szerkesztve ]

    ⓑⓣⓩ

Új hozzászólás Aktív témák