IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Jednoduchý chat v PHP

V tomto tutoriálu si ukážeme jak si vytvořit jednoduchý chat v PHP.

Potřebujeme nějaký kvalitní webhosting, ne Endoru – ta to má zakázáno, ne Webzdarma nebo IC – ti mají děsně pomalou databázi.

Tento článek byl označen jako zastaralý, odkazujeme proto na novější článek, který využívá novější principy.

Takže, chat si uděláme do framesetu.

Připravíme si databázi.

Vytvořte si tabulku, např. "chat", se sloupci

  • ID - typ INT a zaškrtneme AUTO_INCREMENT
  • jmeno - typ TEXT, porovnání utf8_bin
  • zprava - typ TEXT, porovnání utf8_bin
  • cas - typ DATETIME

Vytvoříme si 7 souborů.

  1. databaze.php
  2. index.php
  3. chat_type.php
  4. chat_screen.php
  5. messages.php
  6. messages.js
  7. msg_write.php

Do souboru databaze.php si uložíme údaje do databáze, např.

<?php
if(!mysql_connect("kam","uzivatel","heslo")) // Připojí se k databázi
{die("Nepodařilo se připojit k databázi");} // pokud selže připojení, vyhodí chybu

if(!mysql_select_db("databaze")) // vybere databázi
{die("Nepodařilo se vybrat databázi");} // pokud selže výběr databáze, vyhodí chybu

mysql_query("SET NAMES `utf-8`");  // nastaví kódování UTF
?>

Do souboru index.php napíšeme

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Chat</title>
</head>
<frameset rows="*, 100" cols="*">
<frame src="chat_screen.php" name="chat-screen">
<frame src="chat_type.php" name="chat-type">
</frameset>
</html>

Jdeme dál, do souboru chat_screen.php. Zde se budou zobrazovat zprávy. Soubor vypadá takto:

<script type="text/javascript" src="messages.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="messages"></div>

Soubor chat_type.php slouží k zápisu zprávy. Vložíme:

<?php session_start(); //použijeme pro uložení jména ?>
<br><br>
<form action="msg_write.php" method="post">
<input type="text" name="jmeno" <?php if(isset($_SESSION['jmeno'])){echo('value="' . $_SESSION["jmeno"] . '" ');} ?> > <input type="text" name="zprava"><input type="submit" value="Pošli !">
</form>

Nyní vkládání zprávy do databáze. Do souboru msg_write.php si vložíme:

<?php
session_start(); // Slouží pro uložení jména
include('databaze.php'); // includuje soubor s údaji do databáze
$jmeno = mysql_real_escape_string($_POST['jmeno']); // Ochrana proti SQL injekci
$zprava = mysql_real_escape_string($_POST['zprava']);

if($jmeno != "" || $zprava != "") // Pokud jméno a zpráva něco obsahuje (není prázdné)
{
mysql_query("INSERT INTO `chat`(`jmeno`, `zprava`,`cas`) VALUES ('$jmeno','$zprava',Now())"); // Vloží do databáze... vkládáme pouze do jméno, zpráva a datum, ID se vloží samo
$_SESSION['jmeno'] = $jmeno; // Nastaví jméno
header("Location: chat_type.php"); // Vrátí se zpět k psaní zprávy
}
else // Pokud je něco prázdné
{
header("Location: chat_type.php"); // Vrátí se zpět k psaní zprávy
}
?>

Nyní zobrazování zpráv. Do souboru messages.php vložíme:

<?php
include('databaze.php'); // Includuje údaje pro připojení k DB

$vyber = mysql_query("SELECT * FROM `chat` ORDER BY `cas` DESC"); // Vybere z tabulky chat, seřazeno podle času
while($radek = mysql_fetch_assoc($vyber)) // Dokud není na konci, vybírá zprávy
{
echo htmlspecialchars($radek['cas'] . " ~ " . $radek['jmeno'] . " ~ " . $radek['zprava']); echo("<br><br>"); // Vypíše zprávy, htmlspecialchars zakazuje HTML
}
?>

Aktualizaci zpráv uděláme pomocí JavaScriptu, přesněji technologií AJAX. Do souboru messages.js vložíme:

function getMessages(letter) {
     var div = $("#messages");
     $.get('messages.php', function(data) {
               div.html(data);
          });
}

setInterval(getMessages, 2000);

2000 je čas aktualizace v milisekundách, příliš malé hodnoty budou zatěžovat server.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 1852x (2.56 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

Všechny články v sekci
Zdrojákoviště PHP - Základní konstrukce
Článek pro vás napsal Neaktivní uživatel
Avatar
Uživatelské hodnocení:
5 hlasů
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity