Jednoduchý online chat v PHP a JavaScripte – zobrazenie online užívateľov
Naposledy sme si ošetrili vstupy, dnes si ukážeme, ako pracuje minule spomenutá funkcia OnLineForm, ktorá nám vráti mená online chatujúcich oddelených znakom „>“.
Funkcia OnLineForm očakáva štyri parametre: $meno, $sprava, $odhlasit, $dvojnik. Prvé tri sú myslím jasné, $dvojnik je negovaná hodnota premennej $chatar, čo znamená, že ak je $chatar prázdny reťazec, $dvojnik je pravdivá hodnota. Pozrime sa teraz na to, čo sa stane po tom, ako vyhovujú všetky vstupy:
|
Stručne povedané, ak ide užívateľ prvý krát (to vieme podľa prázdnej premennej $chatar) napísať svoje meno a správu, urobíme kontrolu, či takéto meno už nechatuje. Ako som už povedal, funkcia vráti reťazec online chatujúcich oddelených znakom „>“, nič nám teda nebráni zistiť, či vrátený reťazec neobsahuje $meno. Ak áno (užívateľ s takýmto menom už existuje), vypíšeme o tom správu a nastavíme $meno na prázdny reťazec, ako keď sme na chat prišli prvý krát. Inak pridáme $meno do reťazca online chatujúcich, pretože na základe zmeny $new_online oproti $old_online budeme obnovovať rámec online.
V súbore function.php sú definované dve funkcie, ktoré generujú JavaScript kód:
|
Okrem týchto funkcií je tu definovaná funkcia na premenovanie súborov, ktorá sa používa predtým, ako ideme so súborom pracovať:
|
Pred funkciu Rename() vložíme znak @, ktorý zabráni výpisu chybových správ, pretože to, že sa súbor nedá premenovať, môže byť spôsobené tým, že so súborom práve pracuje iný užívateľ. V praxi sa tento cyklus vykoná pravdepodobne iba raz, pretože práca so súbormi nie je časovo náročná.
Funkcia OnLineForm pracuje nasledovne: do premennej $doteraz si uložíme počet sekúnd od 1.1.1970, premenujeme si oba súbory, čím dáme ostatým navedomie, že s nimi pracujeme práve my. Načítame obsah celého súboru online užívateľov do poľa, kde každý prvok poľa bude obsahovať jeden riadok zo súboru. Potom otvoríme oba súbory a postupne pomocou cyklu while prejdeme všetkými prvkami poľa.
|
Do $nick si uložíme meno chatujúceho a do $idle počet sekúnd od 1.1.1970 do času pridania poslednej správy. Potom na základe niekoľkých podmienok zapisujeme do oboch súborov potrebné údaje. Myslím, že po zhliadnutí zdrojového kódu bude princíp spracovania jasný.
|
Po ukončení cyklu, teda prekontrolovaní všetkých riadkov súboru online, nasledujúcou podmienkou prekontrolujeme, či nie je potrebné prihlásiť nového užívateľa na chat:
|
Pridaný bude vtedy, ak sa $meno nenachádza medzi online chatujúcimi a ešte musí byť splnená jedna z týchto dvoch podmienok: $meno sa nechce odhlásiť, alebo sa robí kontrola, či existuje dvojník. Nakoniec súbory zatvoríme, premenujeme na pôvodné a vrátime zoznam práve online chatujúcich. Funkcia nám teda:
- zabezpečuje kontrolu, či nepridáva novú správu dvojník
- odhlásenie užívateľa
- pridanie novej správy
- automatické odhlásenie užívateľa
- pridanie nového užívateľa (& správy)
Táto funkcia sa však spustí iba vtedy, ak vyhovujú vstupné hodnoty a odošle sa formulár. To by bol viac menej statický chat, preto, ako v prvom článku o jednoduchom chate sa každých HEAD_RELOAD_TIMER sekúnd obnoví rámec head, v ktorom pracuje skript head.php, ktorý sa stará o automatické odstránenie starých užívateľov. O tom si však povieme až v ďalšom pokračovaní. Pozorný čitateľ možno postrehol, že pri porovnávaní premenných $meno a $nick rozlišujeme veľkosti písmen, preto sa na chate môžu objaviť napr. mená „Barborka“ aj „BARBORKA“. Kto má niečo proti, nech nahradí toto porovnávanie funkciou StrCaseCmp(), ktorá nie je citlivá na veľkosť písmen. Taktiež bude potrebná zmena funkcie StrStr() na StrIStr().
Pre tých, ktorý nevedia, o čom som tu dnes písal, je tu odkaz na ukážku.
Mohlo by vás také zajímat
-
Fandíme českým sportovcům a rozdáváme hosting ZDARMA!
26. července 2024 -
Jak se chránit před podvody na internetu – část 2
14. října 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024