Ajax chat-ul web folosind PHP, MySQL si jQuery (partea 1 din 2)
Dacă luăm în considerare subiectul comunicațiilor în timp real, există puține soluții care pot concura în putere cu un simplu chat-ul web. Deosebit de bun este soluția, astfel încât tot ceea ce este necesar pentru a implementa - este un browser web.
În această lecție din două părți, vom crea AJAX chat-ul web folosind PHP, MySQL si jQuery. În prima parte a lecției, vom discuta despre utilizarea de PHP si MySQL, iar următorul - partea de client a jQuery și CSS.
Ca de obicei, primul pas este dedicat elementele de limbaj HTML. Lucrarea noastră este construită în conformitate cu HTML5, care permite utilizarea unui nou sintaxă, mai scurt DOCTYPE. și omite atributul type la script-ul tag-ul.
index.html
Pentru organizarea unei zone derulabil cu linii de chat, vom folosi jScrollPane plugin. Acest plugin are propriul stil, care este inclus în secțiunea de cap.
markup chat-ul este format din patru elemente principale div - panoul de sus al containerului de chat, container utilizatorii și panoul inferior. Ultimul div conține un formular de înregistrare de utilizator și trimite un mesaj. trimiterea de mesaje de formă implicită este ascuns și afișat doar atunci când utilizatorul a introdus cu succes sistemul de chat.
schema bazei de date
Înainte de a porni la partea de PHP, trebuie să te uiți mai întâi la organizația de date de chat într-o bază de date MySQL.
vom folosi două tabele pentru script-ul nostru. În tabelul webchat_users stochează informații despre participanții la chat. Tabelul are un identificator de câmp. nume. Gravatar și last_activity. Nume câmp este definit ca, prevenind astfel o utilizare unică de nume duplicat într-un chat.
O altă caracteristică frumos a câmpului, cu un indice unic este faptul că cererea de introducere a datelor eșuează, iar proprietatea inserted_rows obiect MySQLi va fi setat la 0, dacă încercați să inserați un rând duplicat. În clasa PHP chat, această proprietate va fi utilizat pe scară largă.
câmp last_activity conține o valoare de timp. Valoarea este actualizată la fiecare 15 de secunde pentru fiecare utilizator. Câmpul este, de asemenea, definit ca un index care vă permite să ștergeți rapid utilizatorii inactivi (valoarea last_activity în mai mult de 15 înseamnă că utilizatorul nu mai vizionează fereastra de chat).
tabele de determinare sunt disponibile în fișierul tables.sql în codul sursă. Puteți utiliza textul de interogare pentru a crea tabele. De asemenea, atunci când instalați un chat pentru gazda dvs., trebuie să modificați setările în ajax.php datele dvs. pentru a se conecta la MySQL.
Acum avem o bază de date, să discutăm script PHP care gestionează chat-ul.
Primul fișier ne uităm la, ajax.php. Acesta se ocupă de cereri AJAX din partea clientului din datele jQuery și ieșirile în format JSON.
Pentru comoditate, utilizați o declarație comutator pentru a determina acțiunea pe care procesează script-ul. Aici sunt puse în aplicare subsistem chat-ul, funcționalitatea I / O și acțiune privind cererea de replici și lista de utilizatori online.
Ieșirea este sub formă de mesaje JSON (care sunt prelucrate în mod convenabil folosind jQuery), erori arunca excepții. Instrucțiunea switch distribuie toate cererile la tehnicile de clasă chat statice corespunzătoare. care vor fi discutate mai târziu în această secțiune.
DB.class.php
Clasa DB - Database Manager. Constructorul este declarat ca fiind private. astfel încât obiectul nu poate fi creată în afara clasei, și inițializarea este posibilă numai dintr-o metodă de inițializare statică (). El ia o serie de opțiuni de conexiune cu MySQL și creează o instanță a clasei, care este conținut într-o variabilă de sine :: $ instanță statică. Acest lucru asigură existența unei singure conexiuni la baza de date la un anumit moment în timp.
Restul clasei pune în aplicare comunicarea cu baza de date, care se bazează pe o metodă de interogare statică ().
ChatBase.class.php
Aceasta este o clasă de bază simplă. Scopul său principal - pentru a defini un constructor care ia o serie de parametri, dar păstrează numai cele definite în clasă.
ChatLine.class.php
Această clasă definește, de asemenea, metoda de economisire. care stochează obiectul în baza de date. Deoarece metoda returneaza un obiect MySQLi conținută în clasa DB, puteți verifica finalizarea cu succes a operațiunii prin utilizarea affected_rows de proprietate.
ChatUser.class.php
Clasa are un nume de proprietate și gravatar (nota modificator de acces protejat - proprietăți sunt disponibile în sala de clasă ChatBase, și putem seta valoarea sa în constructor).
Chat.class.php - Partea 1
Acest cod face toate lucrările. Instrucțiunea switch în fișierul selectat acțiuni ajax.php care corespund metodelor din această clasă. Fiecare dintre aceste metode returnează o matrice, care este apoi convertit la obiect JSON folosind () funcția json_encode (acest lucru are loc în fișierul ajax.php de jos).
Atunci când un utilizator se află în, numele și gravatar lui stocate ca elemente în matrice $ _SESSION și devin disponibile în solicitările viitoare.
Chat.class.php - Partea 2
jQuery getUsers trimite cereri () la fiecare 15 secunde. Noi folosim acest lucru pentru a elimina o replica care este mai vechi de 5 minute și utilizatorii inactivi din baza de date. Potențial ar putea șterge getChats înregistrări de date. dar această cerere este primită în fiecare secundă și suplimentare de încărcare poate afecta performanța aplicației.
Continuarea a doua parte!
Prin obținerea de informații de la două canale (vedere si auz) eficacitatea instruirii de învățare departe superioare de cărți. O temele pentru acasă și teste on-line vă va permite să se gândească în mod constant în limba țintă și imediat verifica cunoștințele!
Dacă doriți o lungă perioadă de timp pentru a studia modul în HTML, mi-ai, pentru ai vesti bune!
Dacă ați învățat deja HTML și doresc să avanseze, următorul pas va fi de a studia tehnologia CSS.
Dacă doriți să înțeleagă conceptele de domeniu si hosting, învață cum să creeze o bază de date, încărca fișiere pe un site web prin intermediul unui server FTP, crea subdomenii, configurați cutiile poștale pentru site-ul și să monitorizeze participarea, acest curs este conceput special pentru tine!