PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : alle downloads über ein php leiten


theripper8472
20.04.2002, 20:33:05
bei http://www.gulli.com hab ich gesehen, dass der alle downloads über ein php script leitet.

nun frag ich mich: wie geht das?

ich denke mal, dass ein beliebiger wert an das skript geleitet wird und das script dann entweder die download url oder das gesamte file ausgibt.

wie geht das wirklich und wie realisiere ich das?

ingo
20.04.2002, 23:43:55
das einzige was ich hier seh ist, dass bei einigen seiten einfach die url an eine .html-datei geschickt wird (die unter umständen eine php-datei sein kann) wobei man beim klick zur seite weitergeleitet wird. ich kenn nur zwei möglichkeiten wozu man sowas macht:

entweder (und das halte ich für am wahrscheinlichsten) ist das eine art click-tracking (also wie oft jemand den link angeklickt hat - eine art counter) oder um beim download bei irgendwelchen dateien (hab ich aber keine gesehen) folgendes zu vermeiden:

normalerweise versucht der browser, wenn dieser die datei nicht interpretieren kann, die datei downzuloaden. es gibt aber auch die möglichkeit dass der browser den compilierten ascii code einfach als text anzeigt. um nicht die rechte maustaste und save as.. oder so anwählen zu müssen, wird die datei an eine datei geschickt, die bei einem einfachen klick über die funktion header() die datei zum download "zwingt".

sowohl redirect als auch "erzwungenes" downloaden geht mit der header() funktion.

ich hoff ich hab mich korrekt ausgedrückt.
sonst seh ich keine möglichkeit wieso man sowas machen sollte (ausser vielleicht ein schlechtes log oder so, kann ich mir aber fast nicht vorstellen)

lg, ingo

theripper8472
21.04.2002, 00:09:19
erstmal ne nähere beschreibung:

man klickt auf einen link und dieser link sagt: "download.php?download=getme.zip". wenn man draufklickt, bekommt man getme.zip, egal, wo es sich befindet (auf nem mirror, auf nem anderen server).
der user erfährt nicht, wo die datei eigentlich ist, nur dass er sie hier bekommt.
ich denke "header()" wirds sein, nur wie wende ich das an?
und nen counter für die downloads brauch ich nicht, is mir ja auch egal, was die downloaden

ingo
21.04.2002, 06:49:20
schau dir mal das an:

http://www.php.net/manual/en/function.header.php

es gibts aber einfachere möglichkeiten, die url zu verstecken. unter anderem mit javascript bzw. dhtml (onmouseover, onmouseout).

<a href="http://www.server.com" onmouseover="window.status='datei soundso';return true" onmouseout="window.status=' ';return true">linktext</A>

funkt fast überall..

lg, ingo

gray
21.04.2002, 13:41:21
-

Nev
22.04.2002, 15:31:44
Hi @ll

Du hast alle Orte und Dateien in einer Datenbank bzw. Datei gespeichert.
Die download.php liest diese Datei aus und schickt im Header den Ort mit.
Somit kannst du den Ort dieser Datei verbergen.

Matthias
22.04.2002, 17:17:45
Ein weitere Grund ist das man die Downloads besser Zählen und in eine DB eintragen kann.

Wie oben schon erläutert wird mit headers auf die Datei verwiesen.

Dago
22.04.2002, 17:37:30
<?php

#Der Pfad zur Datei auf dem Server, entweder relativ oder absolut. Ich glaub, http:// geht auch.
$pfad_zur_datei = 'Pfad';

#Der Name der Datei, wie er später auf dem Client-PC erscheinen soll.
$dateiname = 'Dateiname.zip';

#Header-Anweisungen
header('Content-Type: x-type/subtype');
header('Content-Disposition: attachment; filename='.$dateiname);

#Datei wird über PHP ausgelesen und als "attachment" an den Client geschickt,
readfile($pfad_zur_datei);

?>

Mit sowas erfährt der Client niemals, wo sich die Datei wirklich befindet.

PS: Wie funktioniert das PHP-Code-Highlighting hier im Forum eigentlich? :)

ingo
22.04.2002, 18:16:55
siehe titel

Dago
22.04.2002, 18:19:29
Danke!

ingo
22.04.2002, 18:25:45
;-)

theripper8472
22.04.2002, 19:24:03
danke für eure hilfe.

ich teste gleich mal, wie die scripts funktionieren.