pornjk, pornsam, xpornplease, joyporn, pornpk, foxporn, porncuze, porn110, porn120, oiporn, pornthx, blueporn, roxporn, silverporn, porn700, porn10, porn40, porn800, porn900

On-Line Chat v PHP 1.

Článek je 1. část seriálu On-line chat v PHP.

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.

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…

Navigace v seriáluOn-Line Chat v PHP 2. →