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.
<?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>
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>.";
<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
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");
}
?>