On-Line Chat v PHP - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

On-Line Chat v PHP

7. prosince 2000, 00.00 | V tomto seriálu Vám popíši, jak funguje on-line chat v PHP a uvedu zde i jednoduchý příklad funkční aplikace.

Mnoho portálů, informačních a zábavních serverů poskytuje svým návštěvníkům službu CHAT. Popisovat Vám význam této služby je zbytečné, protože je určitě všem notoricky známá. Pokud ale chcete takovou službu provozovat i na svém serveru a nevíte, jak něco podobného vytvořit, jsou následující řádky určeny právě vám.

Provedu Vás všemi kroky, jak vytvořit vlastní CHAT za použití PHP a MySQL. Náš výsledný CHAT bude umět registraci nicků, přihlášení registrovaných uživatelů, posílat zamknuté zprávy (konkrétnímu příjemci). CHAT nebude umět vytvářet nové místnosti, a nebudou se moci přihlásit neregistrovaní uživatelé, ale myslím si, že tuto úpravu zvládnou i středně pokročilí programátoři.

Nejdříve bude nutné promyslet si strukturu tabulek v databázi. Budeme potřebovat tabulku, která bude obsahovat jména registrovaných uživatelů, jejich přístupová hesla a dodatečné údaje (ty pro jednoduchost vynecháme), dále pak budeme v databázi potřebovat tabulku, která bude obsahovat právě přihlášené uživatele a čas jejich posledního příspěvku. Třetí a poslední tabulkou bude tabulka obsahující samotné texty zpráv...

První tabulku nazveme třeba users a bude obsahovat celkem tři sloupce:

  1. id - id bude primárním klíčem tabulky a bude se automaticky zvyšovat (id int NOT NULL AUTO_INCREMENT PRIMARY KEY).
  2. nick - nick bude obsahovat přezdívku uživatele. Velikost přezdívky omezíme třeba na 20 znaků (nick varchar(20)).
  3. heslo - sloupeček heslo bude obsahovat heslo uživatele a bude omezeno na deset znaků (heslo varchar(10)).

Takže to byl popis tabulky users, nyní přejdeme k tabulce druhé.

Druhou tabulku si nazveme active a bude obsahovat 4 položky.

  1. id pro tuto položku platí to samé, co pro první tabulku.
  2. nick - obsahuje přezdívku uživatele (nick varchar(20)).
  3. heslo - obsahuje heslo uživatele (heslo varchar(10)).
  4. cas - tato položka bude obsahovat čas poslední odezvy (naposled napsané zprávy) uživatele. Položka bude číselná (cas int).

Možná si teď říkáte, proč se mají položky nick a heslo duplikovat, když by bylo jednodušší propojit tabulky users a active. Vede mne k tomu jediná věc - OPTIMALIZACE VÝKONU - chat je docela náročná aplikace na výkon serveru, zvláště pokud provozujete více místností s několika desítkami aktivních uživatelů. Proto si myslím že je výhodnější použít dotaz, který pracuje pouze s jednou tabulkou, než v dotazu skládat více tabulek. Stále je ekonomičtější koupit větší disk, než výkonnější procesor.

Třetí tabulku nazveme chatroom a bude obsahovat celkem 7 položek a některé se opět budou duplikovat.

  1. id - o této položce platí to, co pro obě předchozí tabulky.
  2. nickid - obsahuje id z tabulky active.
  3. nick - jako předchozí tabulky.
  4. proid - tato položka obsahuje id uživatele (z tabulky active, kterému je zpráva určena. Pokud bude 0, je zpráva určena všem (proid int).
  5. pro - obsahuje přezdívku uživatele, kterému je zpráva určena (pro varchar(20)).
  6. cas - položka bude obsahovat čas, ve kterém byla zpráva přijata (cas int).
  7. zprava - tato položka bude nést samotný obsah zprávy. Její velikost omezíme na 255 znaků (zprava varchar(255)).

Tak teď máme připraveny tabulky v databázi a můžeme začít s psaním samotné aplikace.

Samotná aplikace se bude, pro jednoduchost, skládat celkem ze 7 souborů. Každý soubor bude plnit jednu funkci. Soubory si nazveme:

  • index.php - úvodní stránka s přihlašovacím formulářem a odkazem na stránku s registrací.
  • registrace.php - tato stránka se bude starat o registraci uživatelů.
  • chat.php - tato stránka rozdělí okno prohlížeče na tři rámy a načte do něj patřičné stránky chatu.
  • chatactive.php - tento skript bude zobrazovat aktuální uživatele a čas jejich poslední odezvy.
  • chatbox.php - tento skript zobrazí formulář pro vložení samotné zprávy a bude ji vyhodnocovat.
  • chatroom.php - tento skript bude zobrazovat samotné okno chatu se zprávami.
  • obecne.php - tento skript se bude vkládat do všech výše zmíněných souborů a bude obsahovat definici základních funkcí, které se budou využívat na všech stránkách našeho chatu.

Nejprve začneme s popisem souboru obecne.php, který bude obsahovat přístupové údaje k databázi, bude obstarávat připojení skriptu na databázi, dále bude obsahovat funkci kontrola(), která bude ověřovat uživatelské jméno a heslo. Výpis skriptu je následovný:

<?
$se = "localhost"; // db server
$db = "chat"; // databáze s chatem
$us = "user_name"; // uživatelské jméno
$pa = "password"; // heslo k databázi

// připojíme se k databázi
@$s = mysql_connect($se,$us,$pa);
@$v = mysql_select_db($db);

// pokud dojde k chybě při spojení s databází, zastavíme chod skriptu
if (!$s || !$v):
   head();
   echo "

Došlo k chybě.

"; foot(); exit; endif; // pokud je heslo správné, pokračujeme, jinak se loučíme... function kontrola() { global $id,$pass; @$v = mysql_query("SELECT nick,heslo FROM active WHERE id ='$id'"); @$p = mysql_num_rows($v); if ($p == 1): @$z = mysql_fetch_row($v); if (MD5($z[1]) != $pass): odhl(); endif; else: odhl(); endif; return $z; } function head() // hlavička stránky { Header("Pragma: No-cache"); Header("Cache-Control: no-cache"); Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT"); echo "<HTML><HEAD><TITLE>CHAT</TITLE></HEAD>\n"; echo "<BODY TEXT=\"#000000\" BGCOLOR=\"#FFFFFF\">\n"; } function foot() // patička stránky { echo "</BODY></HTML>\n"; } // rozloučíme se s návštěvníkem function neopravneny() { head(); echo "<P>Neoprávněný přístup.</P>"; foot(); exit; } ?>

Takže teď jsme si ukázali skript se základními funkcemi, které budeme v našem chatu používat a nezbývá nic jiného, než pokračovat dále...

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: