Функции за коментари

vasil_s9

Registered
Здравейте.

Може ли да ми направите следния код за коментари да мога да изтривам коментари (примерно да въведа моето Ip и само това Ip да може да трие даден коментар които е пуснат) и също така след като бъде пуснат коментар в следващите 40 секунди да не може да бъде пуснат друг от същото Ip примерно.

Благодаря. +1

ето и кода


Код:
CREATE TABLE `comment` (
`id` int(4) NOT NULL auto_increment,
`article` varchar(255) NOT NULL,
`username` varchar(32) NOT NULL,
`comment` longtext NOT NULL,
`date` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;


и

Код:
<tr>
<td class='mainTxt'>
<hr width='595' size='1' color='#dadada' />
<form action="" method="post">
Име:<br />
<input type="text" name="name" id="name" size="45"><br />
Коментар:<br />
<textarea name="comment" cols="45" rows="4" class="textinput" id="m"></textarea><br />
<br />
<input name="submit" type="submit" value="Изпрати">  
<input name="submit" type="reset" value="Изчисти">
<br />
<?php
$id = $_GET['id'];
if(isset($_POST['submit'])){
$date = date("d.m.Y");
$sql = mysql_query("INSERT INTO comment (id, article, username, comment, date) VALUES (NULL, '$id', '$_POST[name]', '$_POST[comment]', '$date')") or die(mysql_error());
}
else {
echo "";
}
echo "
</form>
<br />
<hr width='595' size='1' color='#dadada' />";
$query = mysql_query("SELECT * FROM `comment` WHERE `article`='$id'") or die(mysql_error());
while($raw = mysql_fetch_array($query)){
echo "
<tr>
<td class='mainTxt'>От: $raw[username], На: $raw[date]<span class=\"style2\"></span><br>
$raw[comment]</td>
</tr>";
}
?>
<br />
 
Правиш си един файл:
delete.php
Код:
<?php
//Инклудваш си конфигурационния файл
$ip = $_SERVER['REMOTE_ADDR'];
if($ip == 12.34.56.78){ //Пишеш си твоето IP
$id = $_GET['id'];
if($id && !empty($id)){
$delete = mysql_query("DELETE FROM `comments` WHERE `id` = '$id'");
if($delete){
echo "Успешно изтрихте коментара";}
else {
echo "Коментара не беше изтрит";}}
else {
echo "Не сте въвели id";}}
else {
echo "<meta http-equiv='refresh' content='0;index.php'>";}
?>
А за писането през 40 секунди... тук има урок с име Flood защита (или нещо подобно).... погледни го...
 
crazy_pi4 каза:
Правиш си един файл:
delete.php
Код:
<?php
//Инклудваш си конфигурационния файл
$ip = $_SERVER['REMOTE_ADDR'];
if($ip == 12.34.56.78){ //Пишеш си твоето IP
$id = $_GET['id'];
if($id && !empty($id)){
$delete = mysql_query("DELETE FROM `comments` WHERE `id` = '$id'");
if($delete){
echo "Успешно изтрихте коментара";}
else {
echo "Коментара не беше изтрит";}}
else {
echo "Не сте въвели id";}}
else {
echo "<meta http-equiv='refresh' content='0;index.php'>";}
?>
А за писането през 40 секунди... тук има урок с име Flood защита (или нещо подобно).... погледни го...

Сега ще пробвам това за изтриването а това за flood защитата.... Урока съм го пробвал и неможах да го направя затова пуснах темата :)
 
Я виж така... и си направи един празен файл flood.php
Код:
<?php 

$floodfile = "flood.php"; // в този файл се записват IP адресите 
$floodtime = 40; // времето е в секунди 
$ipaddress = getrealip(); // с тази функция взимаме реалното IP 
$addedtime = time(); // времето... 

if(flooder($ipaddress)){ 
echo "<center><font style=\"font-family: verdana; font-size: 11px; color: maroon;\"><b>FLOOD ЗАЩИТА!</b></font><br /><br /><font style=\"font-family: verdana; font-size: 10px; color: maroon;\">Трябва да изчакате $floodtime секунди преди да посетите страницата отново!</font></center>"; 
exit; 
} 
else{ 
$floodfp = fopen($floodfile, "a"); 
fwrite($floodfp, "$addedtime|$ipaddress|\n"); 
fclose($floodfp); 
} 

function flooder($ipaddress){ 
global $floodtime, $floodfile; 

$old_db = file($floodfile); 
$new_db = fopen($floodfile, w); 
$result = FALSE; 
foreach($old_db as $old_db_line){ 
$old_db_arr = explode("|", $old_db_line); 
if(($old_db_arr[0] + $floodtime) > time() ){ 
fwrite($new_db, $old_db_line); 
if($old_db_arr[1] == $ipaddress){ 
$result = TRUE; 
} 
} 
} 
fclose($new_db); 
return $result; 
} 

function getrealip(){ 
if(getenv('HTTP_X_FORWARDED_FOR')){ 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
if(preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ipaddress3)){ 
$ipaddress2 = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10..*/', '/^224..*/', '/^240..*/'); 
$ipaddress = preg_replace($ipaddress2, $ipaddress, $ipaddress3[1]); 
} 
}else{ 
$ipaddress = $_SERVER['REMOTE_ADDR']; 
} 
if($ipaddress == ""){ $ipaddress = "12.34.56.78"; } 
return $ipaddress; 
} 
?>
<tr> 
<td class='mainTxt'> 
<hr width='595' size='1' color='#dadada' /> 
<form action="" method="post"> 
Име:<br /> 
<input type="text" name="name" id="name" size="45"><br /> 
Коментар:<br /> 
<textarea name="comment" cols="45" rows="4" class="textinput" id="m"></textarea><br /> 
<br /> 
<input name="submit" type="submit" value="Изпрати">  
<input name="submit" type="reset" value="Изчисти"> 
<br /> 
<?php 
$id = $_GET['id']; 
if(isset($_POST['submit'])){ 
$date = date("d.m.Y"); 
$sql = mysql_query("INSERT INTO comment (id, article, username, comment, date) VALUES (NULL, '$id', '$_POST[name]', '$_POST[comment]', '$date')") or die(mysql_error()); 
} 
else { 
echo ""; 
} 
echo " 
</form> 
<br /> 
<hr width='595' size='1' color='#dadada' />"; 
$query = mysql_query("SELECT * FROM `comment` WHERE `article`='$id'") or die(mysql_error()); 
while($raw = mysql_fetch_array($query)){ 
echo " 
<tr> 
<td class='mainTxt'>От: $raw[username], На: $raw[date]<span class=\"style2\"></span><br> 
$raw[comment]</td> 
</tr>"; 
} 
?> 
<br />
 
Пробвах ги и 2-те значи това със delete.php нестава нищо. Като отворя самия файл дава грешка на 4-ти ред. Реда където трябва да въведа Ip-то

А колкото до това със времето след което няма да може да се пише коментар. Значи пиша в една новина коментар и влизам в друга обаче и там неми дава да пиша коментар.

И след като напиша коментара веднага излиза съобщението че трябва да се изчакат 40 секунди, скрива и освен формата за писане на коментар а и написаните до сега коментари :roll:
 
Да стана обаче друг проблем... Пише несте избрали ID ? видях ID-то на един коментар и го въведох, добре изписа Коментара е изтрит...
Влизам в новината давам коментари и гледам, коментара си стои..
 
Последното, което ми хрумва е, че не си инклуднал конфигурационния файл... иначе в кода не мога да си открия грешката. Нека някой друг да каже дали съм оплескал нещо...
 
crazy_pi4 каза:
Последното, което ми хрумва е, че не си инклуднал конфигурационния файл... иначе в кода не мога да си открия грешката. Нека някой друг да каже дали съм оплескал нещо...

Еми инклуднал съм го на ли си ми написал във файла да не забравя :) ама пак нестава ... Ами ако не се намери начин ще ги трия от phpmyadmin
 

Back
Горе