Toplist script
Auteur: Maarten - 01 november 2004 - 23:30 - Gekeurd door: Dennisvb - Hits: 9401 - Aantal punten: 1.57 (7 stemmen)
Met dit scripts kan je een sites in een lijst zetten, en erop stemmen. Je kan een keer stemmen op een site in 24 uur. Dit wordt gecontroleerd via het IP-adres.
Bij het toevoegen van de site wordt gecontroleerd of het wel degelijk een URL is met het scriptje van FangorN.
Alle commentaar, kritiek, beledigingen en eventuele complimenten zijn welkom.
Ik heb het script getest en bij mij werkt het perfect. Mocht je problemen ondervinden, PM, mail of post een nota, ik help je dan.
03/11/2004: Bugje in out.php opgelost
|
Code: |
Query:
CREATE TABLE `toplist_stemmen` (
`ip` varchar(255) NOT NULL default '',
`datum` varchar(255) NOT NULL default ''
) TYPE=MyISAM;
CREATE TABLE `toplist` (
`id` tinyint(11) NOT NULL auto_increment,
`titel` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`votes` tinyint(11) NOT NULL default '0',
`beschrijving` text NOT NULL,
`clicks` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `titel` (`titel`),
UNIQUE KEY `url` (`url`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
CREATE TABLE `toplist_stemmen` ( `ip` varchar(255) NOT NULL default '', `datum` varchar(255) NOT NULL default '' ) TYPE=MyISAM; CREATE TABLE `toplist` ( `id` tinyint(11) NOT NULL auto_increment, `titel` varchar(255) NOT NULL default '', `url` varchar(255) NOT NULL default '', `votes` tinyint(11) NOT NULL default '0', `beschrijving` text NOT NULL, `clicks` varchar(255) NOT NULL default '', UNIQUE KEY `titel` (`titel` ),) TYPE=MyISAM AUTO_INCREMENT=3 ;
add.php
<?php
include("config.php");
/* Dit is de URL-controle van FangorN:
http://www.sitemasters.be/index.php?pagina=scripts/scripts&cat=10&id=79
*/
function control_url($in) {
$start_url = "(http(s)?\:\/\/)?"; // start URL
$punten = "([\w_-]{2,}\.)+"; // een of meer delen met een . aan het einde
$laatste_deel = "([\w_-]{2,})"; // laatste deel bevat geen punt
$user = "((\/)(\~)[\w_-]+)?((\/)[\w_-]+)*"; // evt subdirectories - evt met user ~
$eind = "((\/)|(\/)[\w_-]+\.[\w]{2,})?"; // evt eindigend op een slash of slash+file+extensie
$qstring1 = "((\?[\w_-]+\=([^\#]+)){0,1}"; // querystring - eerste argument (?a=b)
$qstring2 = "(\&[\w_-]+\=([^\#]+))*)?"; // querystring - volgende argumenten (&c=d)
$bkmrk = "(#[\w_-]+)?"; // bookmark
$exp = "/^".$start_url.$punten.$laatste_deel.$user.$eind.$qstring1.$qstring2.$bkmrk."$/i";
return preg_match($exp, $in);
}
// Einde controle-functie
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Site toevoegen</title>
</head>
<body>
<p>Voeg een site toe:</p>
<?php if(!isset($_POST['Submit'])) { ?>
<form name="form1" method="post" action="">
<p>
Titel:<br>
<input name="titel" type="text" id="titel" size="50">
</p>
<p>
Url:<br>
<input name="url" type="text" id="url" value="http://" size="50">
</p>
<p>
Beschrijving:<br>
<textarea name="desc" cols="50" rows="10" id="desc">
</textarea>
</p>
<p>
<input type="submit" name="Submit" value="Site toevoegen">
</p>
</form>
<?php } else {
if(!trim($_POST['titel'])) {
$error = "Vul een titel in!<br>";
}
if(!control_url($_POST['url'])) {
$error .= "Vul een geldige URL in!<br>";
}
if(!trim($_POST['desc'])) {
$error .= "Vul een beschrijving in<br>";
}
if(!$error) { // geen errors, voer uit
$controle = mysql_query("SELECT * FROM toplist WHERE url='".$_POST['url']."'");
if(mysql_num_rows($controle) == 0) {
$desc = nl2br($_POST['desc']);
mysql_query("INSERT INTO toplist (titel, url, votes, beschrijving, clicks) VALUES ('".$_POST['titel']."','".$_POST['url']."',0,'".$desc."',0)");
echo "Site opgenomen in database.";
} else {
echo "De URL <b>".$_GET['url']."</b> bestaat al in de database. <a href=\"JavaScript: history.go(-1)\">Ga terug</a>";
}
} else { // wel errors
echo "De url kon niet worden toegevoegd vangewe de onderstaande fout(en):<br><font color=\"#FF0000\"><strong>".$error."</strong></font><a href=\"JavaScript: history.go(-1)\">Ga terug en verbeter de fouten</a>.";
}
}?>
</body>
</html>
<?php include("config.php"); /* Dit is de URL-controle van FangorN: http://www.sitemasters.be/index.php?pagina=scripts/scripts&cat=10&id=79 */ function control_url($in) { $start_url = "(http(s)?\:\/\/)?"; // start URL $punten = "([\w_-]{2,}\.)+"; // een of meer delen met een . aan het einde $laatste_deel = "([\w_-]{2,})"; // laatste deel bevat geen punt $user = "((\/)(\~)[\w_-]+)?((\/)[\w_-]+)*"; // evt subdirectories - evt met user ~ $eind = "((\/)|(\/)[\w_-]+\.[\w]{2,})?"; // evt eindigend op een slash of slash+file+extensie $qstring1 = "((\?[\w_-]+\=([^\#]+)){0,1}"; // querystring - eerste argument (?a=b) $qstring2 = "(\&[\w_-]+\=([^\#]+))*)?"; // querystring - volgende argumenten (&c=d) $bkmrk = "(#[\w_-]+)?"; // bookmark $exp = "/^".$start_url.$punten.$laatste_deel.$user.$eind.$qstring1.$qstring2.$bkmrk."$/i"; } // Einde controle-functie ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Site toevoegen</title> </head> <body> <p>Voeg een site toe:</p> <?php if(!isset($_POST['Submit'])) { ?> <form name="form1" method="post" action=""> <p> Titel:<br> <input name="titel" type="text" id="titel" size="50"> </p> <p> Url:<br> <input name="url" type="text" id="url" value="http://" size="50"> </p> <p> Beschrijving:<br> <textarea name="desc" cols="50" rows="10" id="desc"> </textarea> </p> <p> <input type="submit" name="Submit" value="Site toevoegen"> </p> </form> <?php } else { if(!trim($_POST['titel'])) { $error = "Vul een titel in!<br>"; } if(!control_url($_POST['url'])) { $error .= "Vul een geldige URL in!<br>"; } if(!trim($_POST['desc'])) { $error .= "Vul een beschrijving in<br>"; } if(!$error) { // geen errors, voer uit $controle = mysql_query("SELECT * FROM toplist WHERE url='".$_POST['url']."'"); $desc = nl2br($_POST['desc']); mysql_query("INSERT INTO toplist (titel, url, votes, beschrijving, clicks) VALUES ('".$_POST['titel']."','".$_POST['url']."',0,'".$desc."',0)"); echo "Site opgenomen in database."; } else { echo "De URL <b>".$_GET['url']."</b> bestaat al in de database. <a href=\"JavaScript: history.go(-1)\">Ga terug</a>"; } } else { // wel errors echo "De url kon niet worden toegevoegd vangewe de onderstaande fout(en):<br><font color=\"#FF0000\"><strong>".$error."</strong></font><a href=\"JavaScript: history.go(-1)\">Ga terug en verbeter de fouten</a>."; } }?> </body> </html>
config.php
<?php
$dbnaam = "db";
$dbuser = "user";
$dbpass = "pass";
$dbhost = "localhost";
$max = 10; // hoeveel sites er per pagina komen
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbnaam);
// Blijf hier best af als je niet snapt wat het is.
$aantal = mysql_num_rows(mysql_query("SELECT * FROM toplist"));
if(!$limf) {
$limf = $aantal;
}
if(!$liml) {
$liml = $aantal - $perpage;
}
if(!$nav) {
$nav = 1;
}
$nav = (!isset($_GET['nav'])) ? 1 : $_GET['nav'];
$start = ($max * $nav) - $max;
$get = mysql_query("SELECT * FROM toplist ORDER BY votes DESC LIMIT ".$start.", " .$max.""); // Query samenstellen
?>
<?php $dbnaam = "db"; $dbuser = "user"; $dbpass = "pass"; $dbhost = "localhost"; $max = 10; // hoeveel sites er per pagina komen // Blijf hier best af als je niet snapt wat het is. if(!$limf) { $limf = $aantal; } if(!$liml) { $liml = $aantal - $perpage; } if(!$nav) { $nav = 1; } $nav = (!isset($_GET['nav'])) ? 1 : $_GET['nav']; $start = ($max * $nav) - $max; $get = mysql_query("SELECT * FROM toplist ORDER BY votes DESC LIMIT ".$start.", " .$max.""); // Query samenstellen ?>
index.php
<?php
include("config.php");
if(!isset($_GET['pagina'])) { $_GET['pagina'] = "lijst"; }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Toplist Script</title>
<style type="text/css">
<!--
.tblt {color: #FFFFFF; font-weight: bold; text-align:center; }
-->
</style>
</head>
<body <?php
if($_GET['error'] == "sidr") { ?>
onLoad="JavaScript: alert('Ongeldige Site-id. Kan niet stemmen.');"
<?php
} elseif($_GET['error'] == "oidr") { ?>
onLoad="JavaScript: alert('Ongeldige Site-id. Kan niet met website verbinden.');"
<?php } elseif($_GET['error'] == "alv") { ?>
onLoad="JavaScript: alert('Kan niet stemmen omdat je al hebt gestemt deze dag. Je kan om de 24 uur stemmen op een site.');"
<?php } elseif($_GET['vote']) {
$bezocht_site = mysql_result(mysql_query("SELECT url FROM toplist WHERE id='".$_GET['vote']."'"),0);
$bezocht_stemmen = mysql_result(mysql_query("SELECT votes FROM toplist WHERE id='".$_GET['vote']."'"),0);
?>
onLoad="JavaScript: alert('Je stem voor <?=$bezocht_site?> is opgenomen.\nMomenteel heeft deze site <?=$bezocht_stemmen?> stemmen.');"<?php } ?>>
<?php if(!$_GET['pagina'] == "lijst") { ?>
<div align="center">
<table width="798" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#000000">
<td width="38" class="tblt">#</td>
<td width="598" align="center" class="tblt">Website</td>
<td width="162" class="tblt">Votes</td>
</tr>
<tr>
<td colspan="3"></td>
</tr>
<?php
if(isset($_GET['nav'])) {
$positie = $max*$_GET['nav'];
$positie = $positie - $max;
$positie = $positie + 1;
} else {
$positie = 1;
}
while($sitez = mysql_fetch_array($get)) { ?>
<tr>
<td rowspan="2"><div align="center">
<?php
echo $positie;
$positie++;
?></div></td>
<td><a href="out.php?site=<?=$sitez['id']?>" target="_blank"><?=$sitez['titel'] ?></a> [<?=$sitez['clicks']?> views] [ <a href="vote.php?siteid=<?=$sitez['id']?>">Stem</a> ] </td>
<td rowspan="2"><div align="center"><?=$sitez['votes'] ?></div></td>
</tr>
<tr>
<td><i><?=$sitez['beschrijving'] ?></i></td>
</tr><?php } ?>
<tr align="center">
<td colspan="3"><?
$rijen= mysql_result(mysql_query("SELECT COUNT(id) FROM toplist ORDER BY id"),0);
$paginas = ceil($rijen/ $max);
if ($nav > 1) {
$vorige = $nav - 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $vorige . "\"><<</a> ";
}
for ($i = 1; $i <= $paginas; $i++) {
if ($page == $i) {
if ($i == $paginas) {
echo "<b>" . $i . "</b> ";
} else {
echo "<b>" . $i . "</b> ";
}
} else {
if ($i == $paginas) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $i . "\">" . $i . "</a> ";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $i . "\">" . $i . "</a>, ";
}
}
}
if ($page < $paginas) {
$volgende = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $volgende . "\">>></a>";
}
?> </td>
</tr>
</table>
<p><a href="index.php?pagina=howto">Hoe stemmen?</a></p>
<?php } elseif($_GET['pagina'] == "howto") { ?>
<p>Hoe stemmen? </p>
<p>Je zorgt gewoon dat iedereeen die ingeschreven is de url ontvangt die je krijgt bij het toevoegen. Je kan het ook simpel afleiden door te linken naar http://sitenaam.com/vote.php?siteid=1 (vervang de siteid natuurlijk)
<?php } else {
header("Location: index.php"); }?>
</p>
<p><em><strong>Copyright MurfyMedia Webdesign</strong></em></p>
</div>
</body>
</html>
<?php include("config.php"); if(!isset($_GET['pagina'])) { $_GET['pagina'] = "lijst"; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Toplist Script</title> <style type="text/css"> <!-- .tblt {color: #FFFFFF; font-weight: bold; text-align:center; } --> </style> </head> <body <?php if($_GET['error'] == "sidr") { ?> onLoad="JavaScript: alert('Ongeldige Site-id. Kan niet stemmen.');" <?php } elseif($_GET['error'] == "oidr") { ?> onLoad="JavaScript: alert('Ongeldige Site-id. Kan niet met website verbinden.');" <?php } elseif($_GET['error'] == "alv") { ?> onLoad="JavaScript: alert('Kan niet stemmen omdat je al hebt gestemt deze dag. Je kan om de 24 uur stemmen op een site.');" <?php } elseif($_GET['vote']) { ?> onLoad="JavaScript: alert('Je stem voor <?=$bezocht_site?> is opgenomen.\nMomenteel heeft deze site <?=$bezocht_stemmen?> stemmen.');"<?php } ?>> <?php if(!$_GET['pagina'] == "lijst") { ?> <div align="center"> <table width="798" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#000000"> <td width="38" class="tblt">#</td> <td width="598" align="center" class="tblt">Website</td> <td width="162" class="tblt">Votes</td> </tr> <tr> <td colspan="3"></td> </tr> <?php if(isset($_GET['nav'])) { $positie = $max*$_GET['nav']; $positie = $positie - $max; $positie = $positie + 1; } else { $positie = 1; } <tr> <td rowspan="2"><div align="center"> <?php $positie++; ?></div></td> <td><a href="out.php?site=<?=$sitez['id']?>" target="_blank"><?=$sitez['titel'] ?></a> [<?=$sitez['clicks']?> views] [ <a href="vote.php?siteid=<?=$sitez['id']?>">Stem</a> ] </td> <td rowspan="2"><div align="center"><?=$sitez['votes'] ?></div></td> </tr> <tr> <td><i><?=$sitez['beschrijving'] ?></i></td> </tr><?php } ?> <tr align="center"> <td colspan="3"><? $paginas = ceil($rijen/ $max); if ($nav > 1) { $vorige = $nav - 1; echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $vorige . "\"><<</a> "; } for ($i = 1; $i <= $paginas; $i++) { if ($page == $i) { if ($i == $paginas) { echo "<b>" . $i . "</b> "; } else { echo "<b>" . $i . "</b> "; } } else { if ($i == $paginas) { echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $i . "\">" . $i . "</a> "; } else { echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $i . "\">" . $i . "</a>, "; } } } if ($page < $paginas) { $volgende = $page + 1; echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?nav=" . $volgende . "\">>></a>"; } ?> </td> </tr> </table> <p><a href="index.php?pagina=howto">Hoe stemmen?</a></p> <?php } elseif($_GET['pagina'] == "howto") { ?> <p>Hoe stemmen? </p> <p>Je zorgt gewoon dat iedereeen die ingeschreven is de url ontvangt die je krijgt bij het toevoegen. Je kan het ook simpel afleiden door te linken naar http://sitenaam.com/vote.php?siteid=1 (vervang de siteid natuurlijk) <?php } else { header("Location: index.php"); }?> </p> <p><em><strong>Copyright MurfyMedia Webdesign</strong></em></p> </div> </body> </html>
out.php
<?php include("config.php");
$clickq = mysql_query("SELECT clicks FROM toplist WHERE id=".$_GET['site']."");
$check = mysql_num_rows(clickq);
if($check != 0) {
$clicks = mysql_result($clickq,0);
$clicks = $clicks + 1;
mysql_query("UPDATE toplist SET clicks='".$clicks."' WHERE id='".$_GET['site']."'");
$url = mysql_result(mysql_query("SELECT url FROM toplist WHERE id='".$_GET['site']."'"),0);
header("Location: ".$url);
} else {
header("Location: index.php?error=oidr");
} ?>
<?php include("config.php"); $clickq = mysql_query("SELECT clicks FROM toplist WHERE id=".$_GET['site'].""); if($check != 0) { $clicks = $clicks + 1; mysql_query("UPDATE toplist SET clicks='".$clicks."' WHERE id='".$_GET['site']."'"); } else { header("Location: index.php?error=oidr"); } ?>
vote.php
<?php
include("config.php");
$nu = time(); // Huidig datum vastleggen
$nu = $nu-86400; // 24 uur aftrekken
mysql_query("DELETE FROM toplist_stemmen WHERE datum >='".$nu."'"); // ff checken of er al adressen vervallen zijn
$checkvote = mysql_query("SELECT * FROM toplist_stemmen WHERE datum >='".$nu."'"); // zit het in de db?
if(mysql_num_rows($checkvote) == 0) { // Nee dus
$getvotes = mysql_query("SELECT votes FROM toplist WHERE id='".$_GET['siteid']."'"); // aantal stemmen
if(mysql_num_rows($getvotes) !=0) {
$votes = mysql_result($getvotes,0); // Huidig aantal stemmen
$votes = $votes + 1; // Eentje bijtellen
mysql_query("UPDATE toplist SET votes='".$votes."' WHERE id='".$_GET['siteid']."'"); // Stem opnemen
$ipadres = $_SERVER['REMOTE_ADDR']; // Ip
$datum = time(); // Datum
$ipin = mysql_num_rows(mysql_query("SELECT * FROM toplist_stemmen WHERE ip='".$ip."'")); // Kijk of ip er nog in zit
if($ipin == 1) { // Ja, dus gebruiken we UPDATE
mysql_query("UPDATE toplist_stemmen SET datum='".$nu."'");
} else {
mysql_query("INSERT INTO toplist_stemmen (ip,datum) VALUES ('".$ipadres."','".$datum."')"); // Nee, dus maken we een nieuwe invoer met INSERT
}
header("Location: index.php?vote=".$_GET['siteid']."");
} else {
header("Location: index.php?error=sidr");
}
} else {
header("Location: index.php?error=alv");
}
?>
<?php include("config.php"); $nu = time(); // Huidig datum vastleggen $nu = $nu-86400; // 24 uur aftrekken mysql_query("DELETE FROM toplist_stemmen WHERE datum >='".$nu."'"); // ff checken of er al adressen vervallen zijn $checkvote = mysql_query("SELECT * FROM toplist_stemmen WHERE datum >='".$nu."'"); // zit het in de db? $getvotes = mysql_query("SELECT votes FROM toplist WHERE id='".$_GET['siteid']."'"); // aantal stemmen $votes = mysql_result($getvotes,0); // Huidig aantal stemmen $votes = $votes + 1; // Eentje bijtellen mysql_query("UPDATE toplist SET votes='".$votes."' WHERE id='".$_GET['siteid']."'"); // Stem opnemen $ipadres = $_SERVER['REMOTE_ADDR']; // Ip $datum = time(); // Datum if($ipin == 1) { // Ja, dus gebruiken we UPDATE mysql_query("UPDATE toplist_stemmen SET datum='".$nu."'"); } else { mysql_query("INSERT INTO toplist_stemmen (ip,datum) VALUES ('".$ipadres."','".$datum."')"); // Nee, dus maken we een nieuwe invoer met INSERT } header("Location: index.php?vote=".$_GET['siteid'].""); } else { header("Location: index.php?error=sidr"); } } else { header("Location: index.php?error=alv"); } ?>
Download code (.txt)
|
|
|
Stemmen |
Niet ingelogd. |
|