Hey Aeweber,
Om jouw doel echt goed te behalen moet je wel rekening houden met het feit dat sommige mensen direct zullen linken naar het zip bestand. In dat geval zou het PHP bestand nooit worden uitgevoerd...
Er zijn een aantal mogelijkheden om dat voor elkaar te krijgen, maar ik zal mij eerst beperken tot het script.
Ik ga ervan uit dat je een constructie wilt waarbij je "index.php?did=10" in de browser typt en dan het bestand download. Natuurlijk willen we ook "index.php?did=blaat.zip" in de browser kunnen typen en dan ook downloaden.
De eerste query haalt het bestand uit de database wat gedownload moet worden.
Code:
$query = "SELECT `id`, `filename`, `count` FROM `downloads` WHERE 1 AND (`id`='$did OR `filename`='$did') LIMIT 1'";
Nu kunt je allemaal leuke dingen uitvoeren. Zorg dat voor je de volgende query uitvoert je al hebt gezorgd dat $count eentje hoger was dan toen je begon.
Code:
$query = "UPDATE `downloads` SET `count`='$count' WHERE 1 AND `id`='$did' LIMIT 1";
Dan moet je nu nog gaan zorgen dat het bestand als download wordt aangeboden. Daarvoor hebben we de volgende lieve code:
Code:
$ctype = " application/zip"; // Applicatie type, dit geval zip
$filename = "HAAL_DEZE_UIT_DE_DATABASE"; // Bestandsnaam
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
Dat is het wat betreft de code die je in eerste instantie vroeg. Nu heb je ook nog niets nodig waardoor het bestand niet kan worden gedownload zonder dat het langs de PHP file is geweest. Dat kan op twee manieren:
.htacces
assword
Als je de ZIP in een met .htacces beveiligde map zet dan kan de gebruiker er niet bij. Dit is erg makkelijk te doen, mocht je dat niet vinden op google of op helpmij dan hoor ik het wel, maar er zijn volgens mij genoeg berichten over geschreven. Je kunt het bestand dan alleen nog met de server benaderen(wat het PHP bestand doet), of door een password in te typen in de browser.
.htacces:mod_rewrite
Momenteel is mod_rewrite erg in. Het zorgt ervoor dat je bepaalde URL's die worden ingetypt kunt ombuigen. Wat je in dat geval kunt doen is zorgen dat je alle aanvragen voor een .zip ombuigt naar het PHP bestand en ze dan verwerkt. Ook daar kan ik de code voor geven, al verwacht ik dat die ook al op het forum te vinden is. Mocht je die willen hebben dan hoor ik het wel.
Veel succes.
Wout