Въпрос за time() и проверка на IP

Vladislaw

Registered
Имам система за коментари:

Код:
<?php
include("conn.php");
$id = $_GET['id'];
if(isset($_POST['submit'])){
$date = date("d.m.Y");
$name = htmlspecialchars($_POST['name']);
$comment = htmlspecialchars($_POST['comment']);
$sql = mysql_query("INSERT INTO comment (id, article, author, comment, date) VALUES (NULL, '$id', '$name', '$comment', '$date')") or die(mysql_error());
}
else {
echo "";
}
?>

<?php
$query = mysql_query("SELECT * FROM `comment` WHERE `article`='$id' ORDER BY id DESC LIMIT 10") or die(mysql_error());
while($raw = mysql_fetch_array($query)){
echo "
<tr>
<td class=\"comments\" style=\"border-bottom: 1px solid #000000\"><b>$raw[author]</b> на <span class=\"style2\">$raw[date]</span><br>
<div class='rawcomment'> $raw[comment] </div></td>
</tr>";
}
?>

Искам да направя, чрез time() от един ИП адрес да може да се пише веднъж на 1 минута. Как ще стане?
 
Добави си само поле `ip` в таблицата.

PHP:
<?php
include("conn.php");
function checkSpam($ip, $id) {
	$query = mysql_query("SELECT * FROM `comment` WHERE `ip` = '{$ip}' AND `id`='{$id}';") or die(mysql_error());
	$row = mysql_fetch_object($query);
	return $row['date'];
}
$id = isSet($_GET['id']) ? (int)$_GET['id'] : 1;
if(isSet($_POST['submit'])) {
    if (time() < checkSpam($_SERVER['REMOTE_ADDR'], $id) + 60) {//60 е времето(в секунди), което определя след колко време да може да коментира
        echo "След 1 минута ще можете да коментирате отново.";
    } else {
		$name = isSet($_POST['name']) ? htmlspecialchars($_POST['name']) : NULL;
		$comment = isSet($_POST['comment']) ? htmlspecialchars($_POST['comment']) : NULL;
		mysql_query("INSERT INTO `comment` (id, article, author, comment, date, ip) VALUES (NULL, '$id', '$name', '$comment', '".time()."', '{$_SERVER['REMOTE_ADDR']}')") or die(mysql_error());
	}
}
?>

<?php
$query = mysql_query("SELECT * FROM `comment` WHERE `article`='$id' ORDER BY id DESC LIMIT 10") or die(mysql_error());
while($raw = mysql_fetch_array($query)){
echo "
<tr>
<td class=\"comments\" style=\"border-bottom: 1px solid #000000\"><b>$raw[author]</b> на <span class=\"style2\">".date("d.m.Y", $raw['date'])."</span><br>
<div class='rawcomment'> $raw[comment] </div></td>
</tr>";
}
?>

П.П. Възможно е да имаш проблеми със старите коментари, понеже в примера съм използвал функцията time(); вместо да записвам с date("d.mY"); но ако все още нямаш коментари това не е проблем. Другия вариант биеш един trunce.. а пък можеш и да извлечеш всички дати от базата, чрез php/mysql да ги "кодираш" с time() функцията и да ги update-неш в базата. :)
 

Back
Горе