Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum.
Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden.
Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
php Downloadteller
Een simpele downloadteller die het aantal keren telt dat een bestand gedwonload is. Hierbij worden de counts opgeslagen in text bestanden ipv database.
Als eerste maken we een map aan waarin de downloads staan met de text bestanden waarin het aantal bijgehouden wordt. Voor het gemak noemen we deze map downloads
In deze map zetten we een betand download.php met daarin:
Feedback welkom!
Als eerste maken we een map aan waarin de downloads staan met de text bestanden waarin het aantal bijgehouden wordt. Voor het gemak noemen we deze map downloads
In deze map zetten we een betand download.php met daarin:
<?php
// ophalen bestandsnaam
$Down=$_GET['Down'];
// bestandsnaam met .txt extensie
$filePath = $Down.".txt";
// Als bestand bestaat: lees het aantal, anders waarde 0 toekennen
$count = file_exists($filePath) ? file_get_contents($filePath) : 0;
// Tel 1 erbij op en overschrijf de oude waarde
file_put_contents($filePath, ++$count);
// redirect naar pagina waar de links staan
header('Content-Disposition: attachment; filename="'.$Down.'"');
?>
Buiten deze map maken we een bestand aan waarin de links komen, bijv. link.php met daarin:
<?php
// textbestanden toekennen aan $textfile
$textfile = array(
'downloads/a.zip.txt',
'downloads/b.zip.txt',
'downloads/c.zip.txt'
);
// loop over de array
foreach (array_keys($textfile) as $value) {
?>
<!-- we creeren de link; we gebruiken de namen uit de array en strippen die tot er staat bijv. a.zip, b.zip etc... -->
<!-- bijv: a href="downloads/download.php?Down=a.zip" -->
<a href="downloads/download.php?Down=<?php echo substr($textfile[$value], 10, -4);?>"><br />Download <?php echo substr($textfile[$value], 10, -4);?></a>
<?php
// als txt bestand bestaat
if(file_exists($textfile[$value]))
{
// terug uitlezen en echo inhoud textbestand
$f = fopen($textfile[$value], "r");
echo ' Downloads: '.fgets($f);
fclose($f);
}
} // eind foreach
?>
DEMOFeedback welkom!
Getagd:
Login of Registreer om te reageren.
Reacties
Verder is download.php niet echt veilig
Er staan misschien nog meer files in die dir die ik maakte, maar dan was ik de naam vergeten
Er zijn waarschijnlijk meer lezers die er wel iets ergers mee doen ^^
Je zult daar (als je op deze manier wilt blijven werken...?) een request per entry moeten doen. (zie de html comments)
Hoe je die files filtert uit de lijst die nu automatisch gemaakt wordt....dunnow, maak een rule die past in regel 6 van het voorbeeldje...
Maar nogmaals...txt files i.p.v database....Niet de slimste oplossing.