Erfolgreicher Download überprüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Erfolgreicher Download überprüfen

    Hallo zusammen,

    Ich hab mal wieder ein kleines Problemchen...

    Folgende Ausgangslage:

    Ein User darf nur bestimmte Files zum Download angezeigt bekommen. Dieses Problem habe ich über eine Zuweisungstabelle in MySql lösen können. Nun gibt es aber zusätzlich die Sitution, dass einige der Files endlos viel gedownloadet werden dürfen, andere aber nur einmal.

    Damit kein direkter Link zu den Files angezeigt wird, löse ich den Sart des Downloads über folgendes JavaScript:
    Code:
    <!-- Download starten -->
    	<body onLoad = "Download();">
    	<script language="JavaScript">
    	<!--
    		function Download() 
    		{
    			if ( allUrls.length == 0 )  
    			{ 
    				newlocation = backupURL;
    			} 
    			else 
    			{
    				x = Math.ceil(Math.random()*allUrls.length); 
    				newlocation = allUrls[x-1] ;
    			}  
    			idl = 1;
    			if (location.search) 
    			{ 
    				idl = -location.search.indexOf("idl=n");
    			}
    			if (idl > 0) 
    			{
    				window.location = newlocation;
    			}
    		}
    	// -->
    	</script>
    	<!-- Hier wird der Downloadpfad übergeben -->
    	<script language="JavaScript">
    	var backupURL = "files/<?php echo $pfad; ?>"; 
    		allUrls = new Array(1);
    		allUrls[0] = 'files/<?php echo $pfad; ?>';
    	</script>
    Das funktioniert grundsätzlich problemlos. Das Script löst einen ganz normalen Download via Downloadmanager des Browser aus. Doch würde ich das, falls überhaupt möglich, lieber via PHP abhandeln, da man sich auf JavaScript je nach Browser und dessen Einstellungen ja nicht wirklich verlassen kann.

    Aber ob nun via PHP oder JavaScript... irgendwie muss ich erfahren, ob der Download überhaupt korrekt ausgeführt wurde, damit ich bei Bedarf das File für einen weiteren Download sperren kann. Dazu muss ich lediglich in der besagten MySql Zuweisungstabelle einen Wert von 0 auf 1 setzen. Jedoch kann ich nur den reinen Start des Downloads nicht als Anhaltspunkt nehmen, da der User ja an mehreren Stellen den Download manuell unterbrechen kann oder vielleicht auch mal die Verbindung abschmiert.

    Ich hoffe, ihr versteht wie ich das meine...

    Für jede Hilfe bin ich dankbar.

    Gruss
    Philipp

  • #2
    vielleicht

    guten abend,

    vielleicht lässt sich dein problem tatsächlcih mit php lösen, bin mir aber nich sicher.. . dein skript sollte grundsätzlich aus 3 teilen bestehen.
    Teil 1 : Prüfung, ob derjenige die File downloaden darf.
    Teil 2 : Wenn ja, mit dem wunderbaren Befehl readfile ( $datei ) und den dazugehörenden Headern die Datei an den User schicken.
    Teil 3 : Als letztes im Skript die Erlaubniss auf 0 setzen. dieser Teil sollte nur ausgeführt werden, wenn readfile() ordentlich beendet hat.

    ich geb keine garantie das es funktioniert, ich bin allerdings davon überzeugt.

    gruß moritz

    Kommentar


    • #3
      Soweit ich weiß, gibt es nicht wirklich eine Möglichkeit, mit PHP zu prüfen, ob ein Download vom User erfolgreich beendet wurde. Sobald du nämlich ein File an schickst (mit readfile z.B.), wird die restliche Verarbeitung vom Webserver übernommen. D.h. dein Script gibt die Datei aus, und der Webserver steuert, wie sie zum User kommt. Und wenn der User den Download nicht gerade dran abbricht, wärend dein Script die Datei noch an den Server übergibt wirst du nicht merken, ob der User die Datei vollständig erhalten hat.

      Evtl. kommst du weiter, indem du dir die Logfiles des Servers anschaust.
      hopka.net!

      Kommentar

      Lädt...
      X