ik wil graag een script maken waardoor elke ip-adres maar 10 keer per dag mag downloaden..alleen ik weet niet zo goed hoe...moet ik het met cookies doen?..of met een database?

Alvast bedankt
Het gebruik van een database ligt voor de hand, cookies kan iemand zelf weggooien.

Wat weet je van databases en welke database heb je tot je beschikking?
Tel het aantal downloads bij de dag, is dit 10 of hoger geef een melding dat het limiet van de dag is bereikt, klaar.
ik heb tot zover gekregen dat het controleert op downloads...alleen ik weet niet hoe ik het van de laatste 24 uur moet controlleren...ik dacht iets met INTERVAL..

<?php
$now = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
$sql1 = mysql_query("SELECT * FROM downloads where ip='".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
	if(mysql_num_rows($sql1) == "0"){		
		mysql_query("INSERT INTO downloads SET ip = '".$_SERVER['REMOTE_ADDR']."', 
		date='".$now->format('Y-m-d H:i:s')."', downloads= '1' ") or die(mysql_error());
		// download bestand
	}else{
		while($data1 = mysql_fetch_object($sql1)) {
			if($data1->downloads < "9"){
				$down=$data1->downloads+1;
				mysql_query("UPDATE downloads SET downloads= '".$down."',date='".$now->format('Y-m-d H:i:s')."' where ip = '".$_SERVER['REMOTE_ADDR']."' ") or die(mysql_error());
				// download bestand
			}else{
				// download limiet bereikt
			}
		}
	}
?>
ik heb het al..:D
$now = new DateTime('now', new DateTimeZone('Europe/Amsterdam'));
$sql2 = mysql_query("SELECT * FROM downloads where ip='".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
$sql1 = mysql_query("SELECT * FROM downloads where ip='".$_SERVER['REMOTE_ADDR']."' AND date >= NOW() - INTERVAL 1 DAY") or die(mysql_error());
	if(mysql_num_rows($sql1) == "0"){
		if(mysql_num_rows($sql2) == "0"){		
			mysql_query("INSERT INTO downloads SET ip = '".$_SERVER['REMOTE_ADDR']."', 
		date='".$now->format('Y-m-d H:i:s')."', downloads= '1' ") or die(mysql_error());
		}else{
			mysql_query("UPDATE downloads SET downloads= '1',
			date='".$now->format('Y-m-d H:i:s')."' where ip = '".$_SERVER['REMOTE_ADDR']."' ")
			 or die(mysql_error());
		}
		// download bestand
	}else{
		while($data1 = mysql_fetch_object($sql1)) {
			if($data1->downloads < "9"){
				$down=$data1->downloads+1;
				mysql_query("UPDATE downloads SET downloads= '".$down."',date='".$now->format('Y-m-d H:i:s')."' where ip = '".$_SERVER['REMOTE_ADDR']."' ") or die(mysql_error());
				// download bestand
			}else{
				// download limiet bereikt
			}
		}
	}

Maar misschien kan het simpeler...

Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Offtopic: Waarom zo vreselijk moeilijk doen in PHP met de datumtijd wanneer je in SQL gewoon over de functie NOW() beschikt?


SELECT NOW();


Uiteraard kun je die ook in INSERT, UPDATE en DELETE-queries gebruiken, net wat jij leuk/handig vindt. PHP komt daar niet aan te pas, nergens voor nodig.
Offtopic: Waarom zo vreselijk moeilijk doen in PHP met de datumtijd wanneer je in SQL gewoon over de functie NOW() beschikt?


Als ik dat gebruik komt er een hele andere tijd..
Met php date is het ook zo..
Geen idee waarom
afg schreef op 30.01.2009 13:08
Offtopic: Waarom zo vreselijk moeilijk doen in PHP met de datumtijd wanneer je in SQL gewoon over de functie NOW() beschikt?


Als ik dat gebruik komt er een hele andere tijd..
Met php date is het ook zo..
Geen idee waarom

Je houd het bij in de db dus gebruik je maar mooi de db functie.

Reageren