login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hoe controleren of een download gebeurde

Offline Evy77 - 29/08/2007 11:09
Avatar van Evy77Nieuw lid Hallo,

In mijn webapplicatie worden zip-files aangeboden om te downloaden. Deze files mogen slecht 1x gedownload worden, indien een file reeds door een gebruiker gedownload werd is deze niet meer beschikbaar. Hoe kan ik controleren of de file daadwerkelijk werd gedownload en/of de gebruiker niet op annuleren heeft geklikt?

Bedankt

16 antwoorden

Gesponsorde links
Offline marten - 29/08/2007 11:17
Avatar van marten Beheerder dit kan niet. Kort maar krachtig maar het kan gewoon echt niet 
Offline Abbas - 29/08/2007 11:19 (laatste wijziging 29/08/2007 11:20)
Avatar van Abbas Gouden medaille

Crew .NET
Als er op de knop wordt geklikt om de download uit te voeren zet je het IP-adres of de gebruikersnaam samen met de naam/id van die download in een tabel. Zo kan je daarna controleren of die gebruiker een specifieke download al heeft uitgevoerd. Maar als de gebruiker de naam van de ZIP kent kan hij/zij naar die URL gaan en zoizo de file nog downloaden...
Offline marten - 29/08/2007 11:20
Avatar van marten Beheerder Ja maar als hij vervolgens op annuleren klikt ipv downloaden? Dat kan je gewoon niet opvragen. (Dacht / denk dat dat de vraag is)
Offline Evy77 - 29/08/2007 11:28
Avatar van Evy77 Nieuw lid dus er is geen mogelijkheid om een "return value" te krijgen van de browser om te controleren of een download daadwerkelijk werd uitgevoerd?

Kan ik alternatief een refresh uitvoeren van mijn huidige pagina. Nu doet hij dit niet, omdat de browser een popup-venster opent.
Offline Abbas - 29/08/2007 11:32 (laatste wijziging 29/08/2007 11:38)
Avatar van Abbas Gouden medaille

Crew .NET
@marten: Je kan toch zo doen:
Stel dat de URL zoiets is: downloads.php?id=1

Als je dan het id ophaalt en de gebruikersgegevens kan je kijken of de download al gebeurd is. Is dat niet het geval kan je hem downloaden, anders redirect je naar de beginpagina of geef je een foutmelding...
En als je met een ID werkt kan de gebruiker niet direct de locatie weten.

Zoiets:
  1. <?php
  2.  
  3. $user = $_COOKIE["naam"]; //of iets dergelijks
  4.  
  5. if(isset($_GET["id"]) && is_numeric($_GET["id"]))
  6. {
  7. $id = $_GET["id"];
  8. $query = mysql_query("SELECT * FROM downloads WHERE id = '".$id."' AND user = '".$user."' ");
  9. $aantal = mysql_num_rows($query) or die(mysql_error());
  10.  
  11. if($aantal == 0)
  12. {
  13. //gebruiker mag downloaden
  14. }
  15. else
  16. {
  17. //gebruiker mag niet downloaden
  18. }
  19. }
Offline marten - 29/08/2007 11:37 (laatste wijziging 29/08/2007 11:39)
Avatar van marten Beheerder Denk dat ik de vraag anders interpreteer.

Ik klik op een link downloads.php?id=1
Script werkt alles af en ik mag downloaden.
Vervolgens krijg ik van mijn browser Bestand Opslaan of annuleren terug. Als je dan op annuleren klikt, dat begrijp ik uit de vraag.
Offline Evy77 - 29/08/2007 11:43
Avatar van Evy77 Nieuw lid
marten schreef:
Denk dat ik de vraag anders interpreteer.

Ik klik op een link downloads.php?id=1
Script werkt alles af en ik mag downloaden.
Vervolgens krijg ik van mijn browser Bestand Opslaan of annuleren terug. Als je dan op annuleren klikt, dat begrijp ik uit de vraag.


Inderdaad, er mag gedownload worden en dan zou er moeten gedetecteerd worden of de download effectief is gebeurd

Aangezien het mogelijk is om de browser te detecteren, zou het dan ook niet mogelijk zijn om te detecteren wat de browser doet.

:$
Offline Mad_Mike - 29/08/2007 12:36
Avatar van Mad_Mike PHP beginner volgens mij kan dat idd niet.

Zodra de gebruiker het download venster te zien krijgt is het niet te achterhalen of hij daadwerkelijk download.
Offline Wim - 29/08/2007 12:50
Avatar van Wim Crew algemeen zorg dat je toegang hebt tot je logs. controleer of er GET <zipfile> instaat.
Offline Mad_Mike - 29/08/2007 15:10
Avatar van Mad_Mike PHP beginner volgens mij wordt dat ook al in de log weggeschreven wanneer je het bestand aanklikt en 'later' alsnog op annuleren klikt.
Offline Abbas - 29/08/2007 16:04
Avatar van Abbas Gouden medaille

Crew .NET
Zorg er dan voor dat er pas in de log geschreven wordt, pas als er bevestigd wordt!
Offline marten - 29/08/2007 16:25
Avatar van marten Beheerder titjes de browser schrijft in de log. Jij zelf kan dat niet 
Offline TotempaaltJ - 29/08/2007 16:32
Avatar van TotempaaltJ PHP interesse Ik heb wel (ong) een oplossing voor het probleem dat de user later wel gewoon naar de zipfile kan gaan en hem vanaf daar downloaden; HtAccess... (Kweeniet hoe ofsow, moet je zelf maar uitzoeken )
Offline Stijn - 29/08/2007 16:33
Avatar van Stijn PHP expert Op de server moet toch achter te halen zijn of een file gedownload is of niet? Server logs, bestaat zoiets niet?
Offline timmie_loots - 29/08/2007 19:10
Avatar van timmie_loots PHP gevorderde Als je de download serveert met PHP (je verwijst dus naar een bepaald PHP bestand, geeft een id mee, en het bestand kijkt waar het bestand staat (die dir bescherm je) en hij wordt een soort doorgeefluik.

Op die manier krijgt de user nooit geen lucht van de uiteindelijke locatie van het bestand, en voor het versturen zet je gewoon een bepaalde flag (als het gebruikers betreft zet je bij hun record even een 1, als in; gedownload). Op die manier kun je dus voor het versturen ook controleren of het reeds op 1 staat, dan verstuur je het bestand gewoon niet.

Als je niet weet hoe je het bestand door moet geven via PHP, moet je even googlen naar 'force download PHP'. Daar zou je meer informatie moeten kunnen vinden.
Offline Martijn1989 - 30/08/2007 01:56
Avatar van Martijn1989 PHP ver gevorderde @ marten : lol

.htacces + ob_start();  

  1. <?php
  2. header('Content-Type: application/force-download');
  3. header('Content-Type: audio/mpeg');//mime type
  4. header('Content-Disposition: attachment; filename="'. $_GET['file'] .'"');
  5. readfile('http://www.x.com/Geluid/'. $_GET['file']);
  6. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s