[Help] Лента за гласуване

6efa

New Member
Joined
Jun 25, 2009
Messages
213
Reaction score
3
Става дума за лента, която се показва над останалия текст в сайта приканваща потребителя да гласува за вашият сайт в бгтоп, бг100 и т.н. При гласуване ip адреса на потребителя се записва в базата данни и 24 часа или колкото сте посочили в конфигурационият файл няма да му се появява. стига съм бърборил ето ви демо за да придобиете малко представа:


Ето и кодовете:

mysql.sql

Code:
CREATE TABLE `bgtop` ( 
`ip` varchar(33) default NULL, 
`ctime` varchar(33) default NULL 
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

conf.php

Code:
<? 
$server = "localhost"; 
$dbuser = "username"; 
$dbpass = "password"; 
$dbname = "vote"; 
$dbtable = "bgtop"; 
$db_conn = mysql_connect($server, $dbuser, $dbpass); 
@mysql_select_db($dbname, $db_conn) or die(mysql_error()); 
$ip = $_SERVER["REMOTE_ADDR"]; 
$link = "http://bgtop.net/in.php/123456789"; // тук посочи твоя линк. 
$time = time(); 
$vtime = "86400"; // това е времето в секунди, за което ще може да се гласува. в случая е 24 часа. 
$dtime = "345600"; // времето, след което ще се изтриват ненужните записи. в случая е 4 дни(72 часа) 
function show() { 
echo '<a href="vote.php"><div style="width: 100%; height: 22px; position: absolute; top: 0px; left: 0px; z-index: 100; background-color: #ddd; text-align: center; font-size: 15px;">Натисни тук за да гласуваш за сайта :)</div></a>'; 
} 
?>

index.php
Code:
<? 
include("conf.php"); 
$sql = mysql_query("SELECT ctime FROM $dbtable WHERE ip=\"$ip\""); 
if($row = mysql_fetch_array($sql)) { 
$calc = $row['ctime'] + $vtime; 
if ($calc < $time) { show(); } 
} 
else { show(); } 
?>

vote.php
Code:
<? 
ob_start(); 
include("conf.php"); 
$sql = mysql_query("SELECT ctime FROM $dbtable WHERE ip=\"$ip\""); 
if($row = mysql_fetch_array($sql)) { 
$calc = $row['ctime'] + $vtime; 
if ($calc > $time) { echo "Можете да гласувате само по веднъж за 24 часа!"; } 
else { 
$sqlQ = mysql_query("UPDATE $dbtable SET ctime = \"$time\" WHERE ip=\"$ip\""); 
header("location: $link"); 
} 
} 
else { 
$sql = mysql_query("INSERT into `$dbtable`(`ip`,`ctime`) VALUES ('$ip','$time')"); 
header("location: $link"); 
} 
?>

del.php
Code:
<? 
include("conf.php"); 
$calc = $time - $dtime; 
$total = mysql_result(mysql_query("SELECT COUNT(ip) FROM $dbtable WHERE ctime < \"$calc\""), 0); 
$i = 0; 
while($i < $total) { 
$sql = mysql_query("DELETE from $dbtable WHERE ctime < \"$calc\""); 
$i++; 
} 
echo "Ненужните записи са изтрити успешно!"; 
?>

От време на време стартирайте del.php, което ще изтрие ненужните записи в базата данни.



Това ми е първи урок, моля ви не бъдете много критични, все пак съм още аматьор :)