Проблем с chatbox

Streleca

Registered
Реших да си направя чат-че, но имам един проблем. Като някой напише едно съобщение и то се появи долу, може да се натисне рефреш и същото съобщение ще се покаже пак, с което много хора биха злоупотребили. Та искам някакси да премахна този бъг.
ето кода:
Код:
<html>
<head>
<title>Чатче :)</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
</head>
<body>
<form  action="" method="post">
<b>Username:</b><input type="text" name="username"><br>
<textarea rows="10" cols="30" name="msg"></textarea><br>
<input type="submit" name="submit" value="Изпрати"><br>
</form><hr color="black" size=3>
<?php

include("db_connect.php");

$broi_msg = "20";

$sql = mysql_query("SELECT * FROM `chat` ORDER BY `id` DESC LIMIT 0, $broi_msg");
while($row = mysql_fetch_array($sql))
{
$username = $row['username'];
$msg = $row['msg'];

$username2 = htmlspecialchars("$username", ENT_QUOTES);
$msg2 = htmlspecialchars("$msg", ENT_QUOTES);

echo "<b>$username2:</b><i>$msg2</i><br>";
}

?>
</body>
</html>
<?php

if(isset($_POST['submit']))
{
include("db_connect.php");

$username = $_POST['username'];
$msg = $_POST['msg'];
$ip = $_SERVER['REMOTE_ADDR'];
$data = date("j F - Y");
$chas = date("g:i:s a");

if($username == NULL || $msg == NULL)
{
return false;
}
else
{
$insert = mysql_query("INSERT INTO `chat`(`username`, `msg`, `ip`, `data`, `chas`) VALUES('$username', '$msg', '$ip', '$data', '$chas')");
}
}
?>
 
Код:
<html>
<head>
<title>Чатче :)</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
</head>
<body>
<form  action="" method="post">
<b>Username:</b><input type="text" name="username"><br>
<textarea rows="10" cols="30" name="msg"></textarea><br>
<input type="submit" name="submit" value="Изпрати"><br>
</form><hr color="black" size=3>
<?php

include("db_connect.php");

$broi_msg = "20";

$sql = mysql_query("SELECT * FROM `chat` ORDER BY `id` DESC LIMIT 0, $broi_msg");
while($row = mysql_fetch_array($sql))
{
$username = $row['username'];
$msg = $row['msg'];

$username2 = htmlspecialchars("$username", ENT_QUOTES);
$msg2 = htmlspecialchars("$msg", ENT_QUOTES);

echo "<b>$username2:</b><i>$msg2</i><br>";
}
echo '</body>
</html>';

if(isset($_POST['submit']))
{

$username = $_POST['username'];
$msg = $_POST['msg'];
$ip = $_SERVER['REMOTE_ADDR'];
$data = date("j F - Y");
$chas = date("g:i:s a");

$limit = 10; //секундите, който делят съобщенията. Ако са по-малко от 10 (в случая) връща съобщ. за грешка.
$q_last = mysql_query("SELECT * FROM `chat` WHERE `username`='$username' ORDER BY `id` DESC LIMIT 1");
$r_last = mysql_fetch_assoc($q_last);
$last_data = $r_last['data'];
$last_chas = $r_last['chas'];

if($data == $last_data)
{
	if(substr($chas, 0, 5) == substr($last_chas, 0, 5))
	{
		$sec1 = explode(':', $chas);
		$sec2 = explode(" ", $sec1[2]);
		$sec = $sec2[0];
		
		$l_sec1 = explode(':', $last_chas);
		$l_sec2 = explode(" ", $l_sec1[2]);
		$l_sec = $l_sec2[0];
		
		if(($sec - $l_sec) < $limit)
		{
			die("Wait for $limit to post a new message. :)");
		}
		
	}
}

if($username == NULL || $msg == NULL)
{
return false;
}
else
{
$insert = mysql_query("INSERT INTO `chat`(`username`, `msg`, `ip`, `data`, `chas`) VALUES('$username', '$msg', '$ip', '$data', '$chas')");
}
}
?>

Но не съм го пробвал.. :)
 
мне, никакво съобщение не излиза...
 
up
 
Преди да добавяш провери дали вече има добавен същият запис и ако няма токава правиш INSERT
 
error каза:
Преди да добавяш провери дали вече има добавен същият запис и ако няма токава правиш INSERT

зарежи, ще си го направя нанво php-то без да следвам урока - сванах идеята. Мерси за вниманието дадох ти +1
 

Back
Горе