truesoul: Nach Downloaden ein PHP Script ausführen.

Beitrag lesen

Hallo miteinander,

also ich erläuter mal genau was ich vor habe.
Zur Zeit verwende ich :

  
<a href="pfad zur Datei" >Downloaden</a>  

Nunja, wenn der User dann auf Downloaden drückt, soll der Download beginnen, was auch wunderbar klappt. Aber zum gleichen Zeitpunkt soll eine php function aufgerufen werden und einen Datenbankeintrag ändern.
Meine Versuche sind bisher alle gescheitert.

  
<form target="_self" method="post" name="main" action="pfad zur Datei">  
<input type="submit" name="zugestimmt" value="Downloaden">  
</form>		  

und der php teil:

  
if(isset($_POST['zugestimmt'])) {  
updateStatistik(0);  
}  

Ohne action="pfad zur Datei" wird der Script ausgeführt, mit allerdings nicht.

Mit Javascript hatte ich eine Lösung, was allerdings unschön ist/war.
Da habe ich ein Fenster aufgerufen mit dem Script und dieses wieder geschlossen nachdem der script ausgeführt wurde.

Achja zuvor hatte ich meine Pfade zum Download "versteckt":

  
...  
if($file_path != "")  
	{  
		$header_file  = $_GET['filename'];  
		$array = explode(".", $header_file);  
		$type = "";  
		if($array[1] == "exe")  
			$type = "application/exe";  
		elseif($array[1]  == "flv")  
			$type = "application/x-flv";  
		elseif($array[1]  == "rar")  
			$type = "application/x-rar-compressed";  
		  
		$file_real = $file_path.$header_file;  
		header("Pragma: public");  
		header("Expires: 0");  
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
		header("Cache-Control: public", false);  
		header("Content-Description: File Transfer");  
		header("Content-Type: ".$type );  
		header("Accept-Ranges: bytes");  
		header("Content-Disposition: attachment; filename=\"" .$header_file. "\";");  
		header("Content-Transfer-Encoding: binary");  
		header("Content-Length: " . filesize($file_real));  
		// Send file for download  
		if ($stream = fopen($file_real, 'rb')){  
			while(!feof($stream) && connection_status() == 0){  
			//reset time limit for big files  
				set_time_limit(0);  
				print(fread($stream,1024*8));  
				flush();  
			}  
			fclose($stream);  
		}  
		else{  
		// Requested file does not exist (File not found)  
			echo("Requested file does not exist");  
			die();  
		}  
	}  

im gleichen Script konnte ich somit auch den Datenbankeintrag ändern.
Seit einer Woche erhalten ich aber von diesen Script defekte Dateien, allerdings nur wenn es sich um .exe Daten handelt.

Ich hoffe ihr könnt mir bei dem Punkt helfen wie ich ein script ausführe und zum gleichen Zeitpunkt die datei laden kann.