Scripts

Referall (uitgebreider)

Dit referall systeem is te gebruiken bij een online-spel, waar de deelnemers punten moeten verzamelen door referalls naar de site te verwijzen, zoals bij "Kings Of Chaos" en "Criminals". Verwacht wordt dat in de database een tabel staat met de gebruikers, en dat de credits ook in die tabel staan. Verder moeten de gebruikers een ID hebben (kolomnaam 'id'), dat numeriek en uniek is. De naam van de 'credits' kolom kan worden aangegeven in het script. Naast de bestaande tabel komt een controle tabel (naam zelf te kiezen), die per IP-adres bijhoud wanneer het laatste bezoek was. (om eenvoudige 'F5' acties te voorkomen. Voorbeeld niet beschikbaar.

referall-uitgebreider
--- SQL voor controle tabel ---

CREATE TABLE `controle_tabel` (
`adres` VARCHAR( 16 ) NOT NULL ,
`tijd` BIGINT UNSIGNED NOT NULL ,
INDEX ( `adres` )
) TYPE = MYISAM ;

--- Referall.php ---

<?php

/* Bedoeling van dit bestand is een referall systeem zoals bij 'Kings of Chaos' of 'Criminals'. */

// Vul hier de database gegevens in:
$db_server = 'localhost';
$db_gebruiker = 'gebruiker';
$db_wachtwoord = 'wachtwoord';
$db_naam = 'naam';

// Andere instelbare variabelen:
// Tabellen (gebruikers tabel, controle tabel)
$gebruikers_tabel = 'gebruikers';
$controle_tabel = 'controle';
// Aantal credits van 1 bezoek: (heel getal)
$credits = '1';
// Kolomnaam voor credits: (alleen letters)
$credits_kolom = 'credits';
// Per hoeveel uur mag 1 ip_adres gebruikt worden:
$timeout = '24';

//
// Hieronder niets meer aanpassen:
//

$ip_adres = $_SERVER['REMOTE_ADDR'];

if ( isset($_GET['id']) && is_numeric($_GET['id']) )
{
	$gebruikers_id = $_GET['id'];
}
else
{
	die('Ongeldige ID, bewerking gestopt');
}

$server = @mysql_connect($db_server,$db_gebruiker,$db_wachtwoord);
@mysql_select_db($db_naam,$server) or die('Verbinding met de database mislukt');
unset($db_server,$db_gebruiker,$db_wachtwoord,$db_naam);

// Is dit ip_adres lang genoeg niet gebruikt?
$sql = "SELECT tijd FROM {$controle_tabel} WHERE adres = '{$ip_adres}';";
$tmp = mysql_query($sql) or die("Fout met de database (lezen)");
if ( mysql_num_rows($tmp) == 1 )
{
	// Bezoeker is eerder langs geweest, vergelijk de tijden
	$tmp = mysql_fetch_array($tmp);
	$laatste_bezoek = $tmp['tijd'];
	$huidige_tijd = mktime();
	$minimaal_verschil = $timeout * 3600;
	$verschil = $huidige_tijd - $laatste_bezoek;
	if ( $verschil < $minimaal_verschil )
	{
		// Niet lang genoeg gewacht
		die('U bent kort geleden nog hier geweest, uw bezoek wordt niet geteld');
	}
	else
	{
		// Voer huidige tijd in in de database
		$sql = "UPDATE {$controle_tabel} SET tijd = '{$huidige_tijd}' WHERE adres = '{$ip_adres}';";
		mysql_query($sql) or die ("Fout met de database (update)");
	}
}
else
{
	// Bezoeker is hier voor het eerst
	$sql = "INSERT INTO {$controle_tabel} (adres, tijd) VALUES ('{$ip_adres}', '{$huidige_tijd}');";
	mysql_query($sql) or die ("Fout met de database (invoegen)");
}

// Als we hier zijn aangekomen, mogen de credits worden toegekend
$sql = "UPDATE {$gebruikers_tabel} SET {$credits_kolom} = {$credits_kolom} + {$credits} WHERE id = '{$gebruikers_id}';";
mysql_query($sql) or die('Fout met de database (update)');

echo "Uw bezoek is geregistreerd, en de gebruiker heeft zijn/haar credits hiervoor ontvangen.";
?>

Reacties

0
Nog geen reacties.