Downloadlink "verschlüsselt" anzeigen

wipeout, nur dumme falln drauf rein ;) Firefox gibt dir den direktlink aus.

Stichwort Headermanipulation & readfile();, man sagt damit geht das.

Alternativ kann man sich für jeden download auch einen temporären Ordner erstellen, das File reinschmeissen, den temporären Ordner je nach Dateigröße eine gewisse Zeit lang existieren lassen, und dann wieder löschen...
 
Na ja, als noch nicht fortgeschrittener User ( was ich bin ) ist das oberste ergebniss ausreichend finde ich ;)

Wie würde den so ein script aussehen das einen temporären ordner erstellt etc ?
Und irgendwo muss ja ne original datei liegen oder
 
Also, die Datenbank besteht aus einer id dem namen, der url und der anzahl ( hoffe ich hab nix vergessen nu )

Das Script sieht dazu folgendermassen aus :

PHP:
<?php
$verbindung = mysql_pconnect("$host","$uname", "$pass");
if (!$verbindung)
{
echo"<br><center><b>:::::: Keine Verbindung zur Datenbank ::::::</b></center>";
exit;
}
mysql_select_db("$db");
$auswahl="select * from download";
$sqlanfrage=mysql_query($auswahl) or die ("SQL Anfragen Error");
if ($action==downloaden &&  isset($id))
    {
	$downaus=mysql_query("select * from download where down_id=$id");
	$daten=mysql_fetch_array($downaus);
	$zaehl=$daten['down_anzahl'];
	$zaehl=$zaehl+1;
	$update="UPDATE download SET down_anzahl='$zaehl' where down_id=$id";
	mysql_query($update) or die ("Update nicht erfolgreich");
    print "<meta http-equiv=\"refresh\" content=\"3;URL=$daten[down_url]\">";
	print "<center><font><b>Der Download beginnt automatisch nach 3 Sekunden!<br>Wenn nicht, klicken sie <a href=\"$daten[down_url]\" target=\"_self\">hier</a><br><a href=\"index.php\">zur&uuml;ck</a></b></font></center>";
    mysql_close($verbindung);
    exit;
    }
?>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#00ADAB">
    <td><font class="black"><div align="center">Link</div></font></td>
    <td><font class="black"><div align="center">Name</div></font></td>
    <td><font class="black"><div align="center">Downloadanzahl</div></font></td>
  </tr>
<?php
while($down=mysql_fetch_array($sqlanfrage))
{
?>
  <tr>
    <td><font><div align="center"><a href="index.php?seite=download/downloads&action=downloaden&id=<?php echo $down['down_id'] ?>">Downloaden</a></div></font></td>
    <td><font><div align="center"><?php echo $down['down_name'] ?></div></font></td>
    <td><font><div align="center"><?php echo $down['down_anzahl'] ?></div></font></td>
  </tr>
<?php
}
?>
</table>
<br>

Bittöööööööööö
 
Zuletzt bearbeitet:
Wenn ich das richtig verstanden habe, soll der Link zu der Originaldatei überhaupt nicht zu sehen sein.
In dem aufgeführten Beispiel steht der Link ja im Quelltext und ist daher wohl nicht das Ziel.

Wie oben gesagt wurde, ist eine Headermanupulation und readfile() notwendig um die Dateiquelle wirklich zu verstecken.

Hier mal ein kleines Beispiel über Headers und Readfile.
http://elouai.com/force-download.php

War jetzt das erste was ich bei Google gefunden habe, aber dient nur als Beispiel für den Readfile befehl. Ansonsten php.net/readfile anschauen.

Das mit der Datenbank macht natürlich Sinn und ist in den Beispielen die ich genannt habe nicht eingebaut.

Hier dafür ein Beispiel mit einer Datei als mapping zwischen ID und Filename

http://www.active-4.com/trash/tutorial.html

Gruss
 
wipeout hat gesagt.:
Wie würde den so ein script aussehen das einen temporären ordner erstellt etc ?
Und irgendwo muss ja ne original datei liegen oder

naja, da arbeiteste mit nem codegenerator für den Ordnernamen, mkdir(); copy(); um die originaldatei zu kopieren und im tempordner zu speichern, dann brauchste noch unlink(); zum löschen der datei, rmdir(); zum löschen des Tempordners, Mysql oder Text-datei die die Zeit der erstellung des Ordners, Filegröße & Filename und Ordnernamen speichert.

Das Script erstellt also nen code, erstellt nen ordner, kopiert das file rein, errechnet die ungefähre downloadzeit anhand der Dateigröße bei DSL1000*5, schreibt filename, filegröße, Zeit des Ablaufs des Tempordners und den Code in einer DB ab, und löscht dann beim nächsten Zugriff auf irgendeinen Download den Tempordner, wenn die max. Speicherzeit abgelaufen ist.

Problem: Haste eine Seite, die ein Movie hostet, 200 Leute greifen drauf zu und das Movie iss 200MB groß biste ganz schön am Ar*** :D Eignet sich ausnahmslos nur für kleinere seiten mit kleineren Dateien würd ich sagen... Aber effektiv.


Problem bei der Headermanipulation und readfile(); ist, dass unter Umständen Dateien zerstört werden (können), wenn die Header-Informationen nicht stimmen. Und man sollte NICHT force-download als header verwenden, sondern octet-stream oder wie der kram grad heisst^^ Bei .zip-Files ist das weniger schlimm, bei .exe files habe ich immer alle Downloads zerstört, die .exe liessen sich nach dem download nicht ausführen (das File auf dem Server ist natürlich nicht davon betroffen).
 
Zurück