download loggen

  • Onderwerp starter Onderwerp starter Xepra
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Xepra

Gebruiker
Lid geworden
10 nov 2007
Berichten
38
bestaat er iets van een code waarmee ik kan zien of iemand op een knop klikt?

als er op een download knop wordt geklikt wil ik dat dat in de database wordt gezet met de naam waaronder ze ingelogd zijn. tijd en datum. en natuurlijk welk bestand.

is er zo iets te maken?

alvast bedank

Xepra
 
Zoiets kun je best maken. Wat je doet is een script maken dat logt dat iemand er naar toe gaat (bijv in een database) en daarna een download-header stuurt en het bestand.

Dit ziet er voor de gebruiker uit alsof hij gewoon het bestand binnenhaalt, maar eigenlijk wordt er eerst een scriptje gedraaid wat de log doet.

Werkt ongeveer zo:

PHP:
// in deze functie log je de download; mag ook gewoon in het script natuurlijk ;)
log_download();

// Geef aan dat het type van dit verzoek een pdf download is (je kunt ook het web wel 
// vinden hoe je andere soorten files verzend
header('Content-type: application/pdf');

// Je kunt het nog een naam geven, dit is de naam waaronder de gebruiker het binnenkrijgt
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// En daarna stuur je de inhoud van de file
readfile('original.pdf');

Een gebruiker ziet dus alleen het bestand gedownload worden, maar het script wordt eerst uitgevoerd en daarin kun je alle logging bouwen die je nodig hebt :)

Succes!
 
ik denk dat ik het wel snap maar mijn niveau is niet zo hoog met php dus ik zal hier even wat posten, zouden jullie even willen kijken of het redelijk klopt?

mijn deel code
<td>

$root is de link voor de map dus bijv. www.bestanddownload.nl/ en dan dus de map en dan de bestand naam die ik uit de database haal en in de variable $bestandlink zet.
<a href="<?php echo $root . 'upload_files/'. $bestandlink; ?>">

de knop:
<img src="images/download.png" border="0" width="92" height="20" />
</a>

maar als ik die log_download(); er in zet kan hij toch niet snappen waar hij het in de database wil zetten. ik heb er ook nog geen tabel voor in mijn database. dus ik kan nog alles maken.

alvast heel erg bedank. ik ben zelf ook nog druk bezig met uitzoeken.

Xepra
 
jah dat kan het is niet ze heel moeilijk.
als iemand op het knopje drukt kan je in php een functie aanroepen die dan de gegevens van de gebruiker en datum enz. in de database zet.
ik heb hier snel een voorbeeldje in elkaar gezet.
PHP:
<?php
function doeInDataBase(){
    //hier komt alle code in te staan om alles in de db te doen.
    echo "test";
}
if (isset ($_GET['action'])){
    doeInDataBase();
}

?>
<a href="test.php?action=actie">knop</a>
als je wil weten hoe je alles in de DB opslaat kijk maar eens op www.w3schools.com

mvg, Michel
 
ik zie nu dat er al andere op je vraag hebben gereageerd :p

mischien kan je er toch wat mee.

suc6
 
Je moet de knop laten verwijzen naar een php file, zodat hij code uit kan voeren.

Daarnaast is log_download() een functie; de bedoeling is dat je daar zelf een script schrijft dat de download daadwerkelijk opslaat.
 
PHP:
<?php
function doeInDataBase(){
$datum = time();
$bestand = $_GET['bestandlink'];
       $query = "INSERT INTO log (geb_naam, datum, bestand)
                      VALUES ('$_SESSION['geb_naam']', '$datum', '$bestand')";
       $sql = mysql_query($query)or die(mysql_error());
    echo "test";
}
if (isset ($_GET['action'])){
    doeInDataBase();
}
 
?>
<a href="test.php?action=actie">knop</a>

maar hoe download hij dan de file zonder nog een keer op iets hoeft te klikken??
 
Met de header() functies, zoals in mijn post beschreven staat. Je laat PHP gewoon tegen de browser zeggen dat hij een file is die gedownload wil worden :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan