Jednoduchý online chat v PHP a JavaScripte – úvod
Určite každý z vás natrafil na stránku, na ktorej komunikovalo medzi sebou viacej ľudí naraz. Pomocou PHP a JavaScriptu som vytvoril takýto jednoduchý chat, ktorý si môžete aj vyskúšať.
Stránka bude vytvorená zo 4 rámcov. V poslednom „reklama“ budeme zobrazovať reklamu na nejakom free webhostingu. Každý z nich si pomenujeme:
|
Nech sa stránka s nadefinovaním rámcov volá index.php. Stránka v rámci „head“ slúži na kontrolu zmeny veľkosti súboru, v ktorom sú uložené všetky odkazy. Ak táto zmena nastane, vygeneruje sa opäť stránka head.php, avšak bude obsahovať JavaScript, ktorý zabezpečí, aby sa obnovil rámec „show“, v ktorom zobrazujeme odkazy. Tento spôsob je výhodný najmä preto, lebo rámec „show“ s odkazmi sa obnoví iba vtedy, ak pribudne nový odkaz. Rámec „form“ obsahuje formulár na meno a správu, ktorou chceme prispieť do odkazov.
Okrem nadefinovania rámcov súbor index.php obsahuje aj kúsok PHP kódu.
|
Najskôr si načítame súbor const.php, ktorý obsahuje premenné, ktoré budeme používať vo viacerých skriptoch. Sú to tieto premenné:
|
Myslím, že význam premenných je zrejmý z komentárov, jedine $format by mohol robiť problémy. Ide o formát, v akom chceme, aby sa zobrazovali (a ukladali do súboru) odkazy. Pričom jeho výsledný tvar musí obsahovať dve „%s“, pretože zapisovať do súboru budeme nasledovne sprintf($format,$meno,$sprava).
Vráťme sa opäť k súboru index.php. Funkcia ClearStatCache() nám vymaže vyrovnávaciu pamäť, aby sme získali aktuálne informácie o existencii súboru.
|
Pri definovaní rámcov za súbor „head.php“ pripájame hodnotu premennej oldSize, čo je veľkosť súboru s odkazmi. Aby sme neskôr mohli skontrolovať, či pribudol nový odkaz.
Súbor head.php sa bude načítavať v pravidelných časových intervaloch a bude kontrolovať, či pribudol nový odkaz (zmena veľkosti premennej $oldSize). Na úvod si zabezpečíme, aby sa stránka neukladala do cache. Inak by sa mohlo stať, že by sa obnovila iba z cache a neposkytla nám údaje o zmene v súbore s odkazmi.
|
Nasledujúci kód porovná veľkosti súboru s odkazmi pred a po časovom intervale a ak nastala zmena, obnoví rámec so zobrazenými odkazmi:
|
Navyše je tu ešte kúsok JavaScriptu, ktorý zobrazuje, za koľko sekúnd sa opäť prevedie kontrola veľkosti súboru s odkazmi. JavaScript odpočítavanie by sme mohli nahradiť aj meta tagom, samozrejme medzi tagy <head> a urobiť malé úpravy v postupnosti spracovania kódu.
|
V súbore form.php máme jednoduchý formulár s menom a správou. Pri odosielaní sa zapíše meno aj správa do súboru s odkazmi vo formáte, ako sme si ho definovali v const.php v premennej $format. Tu musím upozorniť, že každý odkaz uložený v súbore má rovnaký počet bajtov. To preto, aby sme sa jednoducho mohli nastaviť na posledných $maxPocetOdkaz odkazov. Preto je meno a správa v tvare napr. „%5.5s“. Čím si zabezpečíme stály minimálny a maximálny počet znakov (bajtov) na odkaz. Preto aj reťazec vrátený z Date() musí mať zakaždým rovnaký počet znakov. Odkaz sa do súboru zapíše, iba ak správa niečo obsahuje. Vstupy sú jednoducho ošetrené, znaky <>& sú nahradené znakom * a lomítka spred citlivých (napr. \n \“) sú odstránené:
|
Ak je pridaný nový odkaz, nečaká sa na časový interval, ale obnoví sa rámec „show“ s novými odkazmi. Aby užívateľ videl, že odkaz sa už pridal a onedlho ho uvidia aj ostatný užívatelia.
Show.php vypíše posledných $maxPocetOdkaz odkazov, ak je ich v súbore viacej ako $maxPocetOdkaz. Inak sa zobrazia všetky odkazy.
|
V súbore „show.php“ opäť pomocou hlavičiek prikážeme, aby sa stránka zakaždým načítala zo serveru. Ako sami vidíte zápis do súboru a načítavanie premenných je urobené čo najjednoduchšie, ale ako ukážka to isto postačí. Hlavná myšlienka bola, aby sa stránka, ktorá zobrazuje odkazy nenačítavala vtedy, keď to nie je potrebné (takto je totiž urobená väčšina „chatov“ na internete). Rámec „head“, ktorý sa obnovuje v pravidelných časových intervaloch je vhodné na stránke urobiť čo najmenší, aby pri opätovnom načítavaní “ nepreblikoval“. Keďže každý odkaz má rovnaký počet bajtov, nebude problém chat obohatiť o zobrazenie ľubovoľného počtu (alebo všetkých – postupne) doposiaľ uložených odkazov. Prípadne každého „chatujúceho“ odlíšiť farebne, alebo veľkosťou písma. Ďalšie úpravy sú už na vás.
Súbory potrebné k „chatovaniu“ sú zabalené (zip) tu.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
inPage AI: Jak na generování obsahu
18. července 2024 -
Nejlevnější VPS: To je nový Cloud Server Mini od ZonerCloud
4. června 2024 -
Thunderbolt 4 vs. OCuLink: Přišel čas na upgrade?
27. května 2024 -
Rychlost serveru: Klíč k lepšímu umístění ve vyhledávačích
7. června 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
Juraj
Zář 29, 2009 v 15:15Mne ten zip archiv nesiel na stránke, písalo chybu v 7.riadku súbru index.php v príkaze fopen a fclose. Riešil som to zmazaním php kodu, aby som skontroloval ostatne framy, no v kazdom vypisalo chybu, i ked som dodatocne vytvoril v adresari subor data.txt . Prosím o pomoc. Dakujem :)
Adam
Lis 30, 2009 v 7:25Ja som to skusal, tiez mi pisalo tu chybu. Hned som siel na FTP a hodil som tam data.txt, a nastavil som (to si zrejme nespravil ty) chmod na 777 a uz to fungovalo :D
matus
Pro 7, 2010 v 21:35co je to chmod?
pali
Bře 19, 2011 v 2:29Ja som ten chat skúšal tiež a fungoval len v PC s použitím vetrigo na php, ale na normálnom serveri mi síce fungovalo písanie aj som stlačil odoslať, ale kam to odoslalo, to už neviem, pretože na show som to nevidel a napísal som viacero správ.
Michal Grňo
Srp 29, 2011 v 16:13Super, moc mi to pomohlo! Trochu jsem to předělal, aby tam šlo psát & a aby tam fungovaly tagy :D
Ján Kucan
Lis 23, 2011 v 21:40Dobry navod, potreboval som iba vediet urobit refresh. Teraz to urobim cez databazu. To je lepsie ako ukladat do nieco.txt ;)
Ján Kucan
Lis 23, 2011 v 22:52Som ti strasne vdacny za tie javascripty! Ostatne som zmenil lebo ja to mam cez databazu
martin
Čvc 22, 2012 v 10:41prosim vas ma niekto ten chat kompletny a funkcny?
Anonym
Říj 10, 2014 v 21:25Par komentov:
ked sa pise staci dat
v systeme su premenne $sprava, $meno, tieto som nikde nenasiel osadene napr. $sprava = $_GET[‚sprava‘];