IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Jednoduchý chat v PHP

V tomto tutoriále si ukážeme ako si vytvoriť jednoduchý chát v PHP.

Potrebujeme nejaký kvalitný webhosting, nie Endoru - tá to má zakázané, nie webzdarma alebo IC - tí majú desne pomalou databázu

Takže, chát si urobíme do FRAMESET.

Pripravíme si databázu.

Vytvorte si tabuľku, napr. "Chat", sa stĺpci

  • ID - typ INT a zaškrtneme AUTO_INCREMENT
  • jmeno - typ TEXT, porovnanie utf8_bin
  • sprava - typ TEXT, porovnanie utf8_bin
  • cas - typ DATETIME

Vytvoríme si 7 súborov.

  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 súboru databaze.php si uložíme údaje do databázy, napr.

<?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 súboru 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>

Ideme ďalej, do súboru chat_screen.php. Tu sa budú zobrazovať správy. Súbor vyzerá 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>

Súbor chat_type.php slúži na zápis sprá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>

Teraz vkladanie správy do databázy. Do súboru 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
}
?>

Teraz zobrazovania správ. Do súboru 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
}
?>

Aktualizáciu správ urobíme pomocou JavaScriptu, presnejšie technológií AJAX. Do súboru messages.js vložíme:

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

setInterval(getMessages, 2000);

2000 je čas aktualizácie v milisekundách, príliš malé hodnoty budú zaťažovať server.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 1861x (2.56 kB)
Aplikácia je vrátane zdrojových kódov v jazyku PHP

 

Všetky články v sekcii
Ostatné tutoriály v PHP
Článok pre vás napísal Neaktivní uživatel
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Tento uživatelský účet již není aktivní na základě žádosti jeho majitele.
Aktivity