Преглед на урок

Чат съобщения

Чат съобщения




Сега ще ви покажа как да си направите собствен чат на вашата страница (PHP & MySQL)

Първо да добавим полетата в базата данни:
За начинаещите ще кажа, че този код се добавя директно в базата данни през phpMyAdmin. Като влезете натиската на SQL (или Query Window) и въвеждате този код там:

Код
CREATE TABLE `chat` (
  `chat_id` int(10) NOT NULL auto_increment,
  `chat_nick` varchar(100) NOT NULL default '',
  `chat_msg` text NOT NULL,
  `chat_time` int(10) NOT NULL default '0',
  PRIMARY KEY  (`chat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Сега отворете някой текстов редактор и копирайте следващия код там. След това го запишете като chat.php

Код
<?php

//Свързване към базата

$db_host = "Сървър";
$db_user = "Потребителско име";
$db_pass = "Парола";
$db_name = "Име на базата";

$dbconnect = mysql_connect($db_host, $db_user, $db_pass);
$dbselect = mysql_select_db($db_name);
$dbsetnames = mysql_query("SET NAMES cp1251");

//Ако е написано ново съобщение го записва в базата данни

if(isset($_POST['chat_new'])){
	$msg = descript($_POST['chat_msg']);
	$nick = descript($_POST['chat_nick']);
	
	$query = mysql_query("INSERT INTO chat VALUES ('', '$nick', '$msg', '".time()."')");
	header("Location: chat.php");
}

//----------------------------------

//Извличане на последните 10 чат съобщения

$query = mysql_query("SELECT * FROM chat ORDER BY chat_time DESC LIMIT 0,10");
$chats = "";
while($row = mysql_fetch_array($query)){
	$chats .= "&raquo; <b>".$row['chat_nick']."</b><br />
	<span style='color:#777;'>".strftime("%H:%M %d.%m.%y", $row['chat_time'])."</span><br />
	".trim($row['chat_msg'])."<br /><br />\n";
}

//Изобразява чат съобщенията на екрана

echo "<center>
<table border='0'>
<tr>
<td style='text-align:center'>
<form method='post' action=''>
<input type='text' name='chat_nick' />
<textarea name='chat_msg' cols='15' rows='3'></textarea><br />
<div style='padding:1px'></div>
<input type='submit' name='chat_new' value='Изпрати' />
<input type='reset' name='reset' value='Изчисти' />
<div style='padding:2px'></div>
</form>
</td>
</tr>
</table>
</center>
<div style='border:0; padding:3px; width:100%; height:200px; overflow:auto; '>
<!-- Chat Start -->
$chats
<!-- Chat End -->
</div>";

//--------------------------------

//Функция за филтриране на HTML кода в чат съобщенията

function descript($text){
	$text = str_replace("&", "&amp;", $text);
	$text = str_replace("<", "&lt;", $text);
	$text = str_replace(">", "&gt;", $text);
	$text = str_replace('"', "&quot;", $text);
	$text = str_replace("'", "&#39;", $text);
	return $text;
}

?>

Вече би трябвало всичко да работи нормално! (Ако има проблеми пишете в коментарите)

Малко обяснение на това какво прави целият този код:

Код
$db_host = "Сървър";
$db_user = "Потребителско име";
$db_pass = "Парола";
$db_name = "Име на базата";

dbconnect = mysql_connect($db_host, $db_user, $db_pass);
dbselect = mysql_select_db($db_name);
dbsetnames = mysql_query("SET NAMES cp1251");
Свързваме се към базата данни. Тук ще трябва да въведете вашата потребителска информация!

Код
if(isset($_POST['chat_new'])){
	$msg = descript($_POST['chat_msg']);
	$nick = descript($_POST['chat_nick']);
	
	$query = mysql_query("INSERT INTO chat VALUES ('', '$nick', '$msg', '".time()."')");
	header("Location: chat.php");
}
Тук проверяваме дали е пуснато ново съобщение. Ако има първо правим 2 променливи, като с функцията която си направихме (най-долу в кода) филтрираме HTML кода (против хакване на сайта). След това добавяме съобщението към базата данни.

Код
$query = mysql_query("SELECT * FROM chat ORDER BY chat_time DESC LIMIT 0,10");
$chats = "";
while($row = mysql_fetch_array($query)){
	$chats .= "&raquo; <b>".$row['chat_nick']."</b><br />
	<span style='color:#777;'>".strftime("%H:%M %d.%m.%y", $row['chat_time'])."</span><br />
	".trim($row['chat_msg'])."<br /><br />\n";
}
Тук се свързваме с базата данни за да вземем последните чат съобщения. Ако искате да се показват всички съобщения махнете LIMIT 0,10 от кода. След това вкарваме информацията в една променлива с функцията mysql_fetch_array.

Следващата част е HTML кода и мисля че той няма нужда от обеснение, затова да преминем по-нататък:

Код
function descript($text){
	$text = str_replace("&", "&amp;", $text);
	$text = str_replace("<", "&lt;", $text);
	$text = str_replace(">", "&gt;", $text);
	$text = str_replace('"', "&quot;", $text);
	$text = str_replace("'", "&#39;", $text);
	return $text;
}
Тук си правим функция, която да филтрира HTML кода при всяко чат съобщение, с което предпазва сайта ви от евентуални злонамерени действия.



Ако урокът ви допада, споделете го в Twitter и Facebook или го запазете в Delicious.




Урокът е добавен от: toddor

Добави коментар

Трябва да сте регистиран потребител за може да оставяте коментари! Направете своята безплатна регистрация още сега.