Download Limiter
ik ben op dit moment bezig om een website voor een vriend/collega te maken. hij is bezig met muziekmixen en wil die graag delen op het net, maar het probleem is dat hij niet zoveel dataverkeer heeft.
daarom zat ik te denken aan een download limiter.
bijv, als een bestand vandaag 10x is gedownload dat er dan bijv. een melding word weergeven in de trant van 'morgen weer een dag'.
ik hoop dat jullie een beetje snappen wat ik zoek en ik hoop dat jullie mij een zetje in de goeie richting kunnen geven.
alvast bedankt!
alle nummers in een db zetten en daarbij een apart veld met het aantal downloads voor vandaag.
maar dan is het toch eigenlijk een soort counter?
Je tabel:
Nummer: Downloads:
Blabla Remix 2
en dan in je script dus
UPDATE tabel SET downloads=downloads+1 WHERE nummer = "Blabla Remix"
En dan zou je ergens nog kunnen zetten als het 12 uur is , dat ie Downloads weer op 0 zet.
SELECT COUNT(id) AS aantal
FROM tabel
WHERE datum = CURDATE()
te doen om het aantal downloads van vandaag op te halen.
dan heb ik eigenlijk nog steeds alleen een teller, ik wil zeg maar nadat het bestand bijv. 10x is gedownload dat je dan niet meer kan downloaden die dag en dat de volgende dag je weer kan downloaden...
@ Aftertoucher: Dat kan dus op die manier. Jij haalt het getal van downloads op uit je db en controleert dat.
als getal lager is dan 10: Download
als getal is 10 of hoger: Morgen kan je weer downloaden
Turmin:
@Jan, dat is inderdaad nog beter, maar wordt je database wel voller.
Dit soort databases kunnen met gemak miljoenen records aan. Dus dat regeltje meer of minder zal niet veel uit maken ;-)
Turmin:
@ Aftertoucher: Dat kan dus op die manier. Jij haalt het getal van downloads op uit je db en controleert dat.
als getal lager is dan 10: Download
als getal is 10 of hoger: Morgen kan je weer downloaden
als getal lager is dan 10: Download
als getal is 10 of hoger: Morgen kan je weer downloaden
kan je daar een voorbeeldje van geven? ik ben er niet zo handig in...
Quote:
kan je daar een voorbeeldje van geven? ik ben er niet zo handig in...
Ik heb even snel iets in elkaar gezet. Het kan vast beter, maar het werkt. Het reset gedeelte zit erin voor het testen, dat zal je er beter even uit kunnen halen als je het gebruikt :P
Voorbeeld:
http://phphulp.turmin.com/downloads.php
Source:
http://phphulp.turmin.com/downloads.phps
SQL:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
CREATE TABLE `downloads` (
`nummer` varchar(255) NOT NULL,
`aantal` tinyint(4) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `downloads` VALUES ('Remix1', 0);
INSERT INTO `downloads` VALUES ('Remix2', 0);
`nummer` varchar(255) NOT NULL,
`aantal` tinyint(4) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `downloads` VALUES ('Remix1', 0);
INSERT INTO `downloads` VALUES ('Remix2', 0);
Edit:
Hier zit dus niks met datum in. Dan zou je nog even een veld moeten maken en vullen met NOW() maar nou geen meer tijd voor. Misschien morgenavond of dat iemand anders het af kan maken.
Hier zit dus niks met datum in. Dan zou je nog even een veld moeten maken en vullen met NOW() maar nou geen meer tijd voor. Misschien morgenavond of dat iemand anders het af kan maken.
Gewijzigd op 01/01/1970 01:00:00 door Michael -
Quote:
Dit soort databases kunnen met gemak miljoenen records aan.
Nouja. Niet echt met gemak, maar het zal vast wel kunnen :)
Turmin:
Ik heb even snel iets in elkaar gezet. Het kan vast beter, maar het werkt. Het reset gedeelte zit erin voor het testen, dat zal je er beter even uit kunnen halen als je het gebruikt :P
Voorbeeld:
http://phphulp.turmin.com/downloads.php
Source:
http://phphulp.turmin.com/downloads.phps
SQL:
Quote:
kan je daar een voorbeeldje van geven? ik ben er niet zo handig in...
Ik heb even snel iets in elkaar gezet. Het kan vast beter, maar het werkt. Het reset gedeelte zit erin voor het testen, dat zal je er beter even uit kunnen halen als je het gebruikt :P
Voorbeeld:
http://phphulp.turmin.com/downloads.php
Source:
http://phphulp.turmin.com/downloads.phps
SQL:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
CREATE TABLE `downloads` (
`nummer` varchar(255) NOT NULL,
`aantal` tinyint(4) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `downloads` VALUES ('Remix1', 0);
INSERT INTO `downloads` VALUES ('Remix2', 0);
`nummer` varchar(255) NOT NULL,
`aantal` tinyint(4) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `downloads` VALUES ('Remix1', 0);
INSERT INTO `downloads` VALUES ('Remix2', 0);
Edit:
Hier zit dus niks met datum in. Dan zou je nog even een veld moeten maken en vullen met NOW() maar nou geen meer tijd voor. Misschien morgenavond of dat iemand anders het af kan maken.
Hier zit dus niks met datum in. Dan zou je nog even een veld moeten maken en vullen met NOW() maar nou geen meer tijd voor. Misschien morgenavond of dat iemand anders het af kan maken.
dus als ik het goed begrijp zijn die values: de naam van het bestand dat gedownload word en de standaard waarde
dus als ik een nummer wil toevoegen moet ik die INSERT nog een keer uitvoeren met dfe juiste bestandsnaam?
ontzettend bedankt!:D
en die 10 per dag zou dan iets zij van als het 12 uur is dat ie dan auto-reset doet.
Gewijzigd op 01/01/1970 01:00:00 door Aftertoucher
Ja dit zijn de nummers die jij wilt toevoegen aan de database. Je kan het zo doen, je kan ook een phpscriptje met velden maken om het in je database te zetten.
Ik zat even over na te denken hoe je dat het makkelijkst kan doen, wissen als het 12uur, maar zonder cronjobs zal het denk ik niet goed gaan. Ik zal even de datum velden erin zetten zodat ie toch elke dag weer op 0 staat. Een ongeblikje geduld...
ik heb alle tijd :D super!
Maar op de zelfde pagina nu de update te vinden:
Source:
http://phphulp.turmin.com/downloads.phps
(hier vind je ook de tabel voor je database)
Voorbeeld (maar deze blijft het zelfde):
http://phphulp.turmin.com/downloads.php
Als je vragen hebt dan hoor ik het wel!
Edit:
Ik ga er wel vanuit dat je weet hoe je een database connectie maakt, deze komt dan in config.php
Ik ga er wel vanuit dat je weet hoe je een database connectie maakt, deze komt dan in config.php
Gewijzigd op 01/01/1970 01:00:00 door Michael -
nog 1 klein vraagje (A) als ik nu het bestand remix2.mp3 op me server zou zetten moet ik dan ?nummer=Remix2.mp3 aanroepen?
edit 2 vraagjes eigenlijk :P
ik heb nu een form gemaakt voor het toevoegen aan de database, wat moet ik dan nu bij action invullen?
Gewijzigd op 01/01/1970 01:00:00 door Aftertoucher
Je kunt het dus met insert er zo in zetten:
INSERT INTO `downloads` VALUES ('', '2006-09-01', 'Remix2', 1);
Dan moet je het vanuit je phpmyadmin dus doen.
Je kunt ook een klein admin paginaatje maken waarmee je het nummer in je database zet (makkelijker dan steeds naar je phpmyadmin).
Als je de tabel al hebt gekopierd, ff opnieuw doen :P
Ik was de auto_increment vergeten, sorry.
Als je dan een download link naar je mp3 wilt maken hoef je er geen .mp3 achter te zetten (of heb je meerdere extensies? .wma .mp3 etc?). Ik denk wel dat je nog even een header moet toevoegen om zo de download te laten starten. Ik zal zo nog even kijken haha.
Maar wat nou als mensen gewoon even snuffelen op je server en dan ergens het bestandje vinden?
je kan ook je mp3 op je server een andere naam geven dan de naam die wordt gedownload. Weinig kans dat iemand em dan vind. En dan alsnog, waarom zou ie em dan heel vaak gaan downloaden.