Dennis: Linkklick-Erkennung auf externem Server

Beitrag lesen

Hi Marian,

header("Location: $filepath\n");

Auch hier ist es natürlich so, dass man die Datei auch direkt runterladen könnte.

Zudem würde ich das PHP Script auf den Server setzen, auf dem auch die Download-Dateien liegen, denn so ist ein „weiterreichen” der Dateien problemlos möglich. Das geht so: Das PHP Script liest die Datei die downgeloadet werden soll ein, packt die korrekten Header davor und gibt den Datei Inhalt wieder aus.

So könnte das ungefähr gehen:

// Wir gehen davon aus, in $file steht der Pfad zu  
// einer real auf dem Server existierenden Datei  
// $file darf keine URL sein, sondern eben ein Dateipfad  
  
// Content-Type feststellen (geht erst ab PHP 4.3.0  
$content_type = mime_content_type($file);  
// Dateigröße  
$filesize     = filesize($file);  
  
// Datei öffnen und sperren  
if(!($fp = fopen($file, "r") AND flock($fp, LOCK_EX)))  
{  
    die("Fatal Error: Could not open and lock the requested file.");  
}  
  
// Datei auslesen und wieder schließen  
$content = fread($fp, $filesize);  
fclose($fp);  
  
// Header senden  
header("Content-type: $content_type"); // Dateityp  
header("Content-disposition: attachment; filename=".basename($file)); // Dateiname  
header("Content-length: ".$filesize); // Dateigröße  
  
// und Datei ausgeben  
echo $content;  
  
// Script beenden  
exit;

Das habe ich gerade eben mal zusammengestellt - zwar auch getestet heißt aber nicht, dass es in allen Fällen einwandfrei funktioniert ;-)

Um die Funktion mime_content_type() auch in PHP < 4.3.0 nutzen zu können, braucht man eine macig.mime Datei und diese Funktion.

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)