link generieren?

hallo,
ich hab folgendes problem…

wie kann ich aus einer .rar-datei die in einem bestimmten ordner aufm space liegt einen link generieren mit dem der download dieser rar-datei nur ein einziges mal möglich ist?

die datei soll aber nach dem download in dem ordner bleiben und nicht gelöscht werden.

Meinst du, dass die Datei pro Benutzer oder insgesamt nur ein Mal gedownloadet werden kann?
Ersteres wäre nämlich nur sehr schwer, wenn nicht, gar nicht durchzuführen.

MfG Icy

ja genau…
ich sende jemandem den link in einer mail zu.
dieser kann beim beim anklicken die datei einmal runterladen.
sobald der link geklickt wurde bzw. der download startet wird dieser link ungültig.
die datei bleibt allerdings an dem selben ort und wird nicht gelöscht.

Du generierst ein zufälliges Token (z. B. $token = md5(mt_rand())) und schreibst dieses zusammen mit dem Pfad der entsprechenden Datei in eine Datenbanktabelle.

Dann generierst und mailst du die Download-URL: z. B. $url = ‚http://example.org/download/?token=‘ . $token;

Im Downloadskript kannst du nun nachsehen, ob das Token in der DB vorhanden ist und falls ja, die entsprechende Datei ausliefern und das Token löschen.

(ungetestet)

[php]<?php

if (!isset($_GET[‚token‘])) {
die(‚Token not set‘);
}

// DB-Verbindung aufbauen

// …

// Datei zum Token ermitteln

$q = „SELECT
filepath
FROM
downloads
WHERE
token = '“ . mysql_real_escape_string($_GET[‚token‘]) . „’
LIMIT
1“;
$res = mysql_query($q);

if (mysql_num_rows($res) == 0) {
die(‚Token invalid‘);
}

$row = mysql_fetch_assoc($res);
$filepath = $row[‚filepath‘];

// Token löschen

$q = „DELETE FROM
downloads
WHERE
token = '“ . mysql_real_escape_string($_GET[‚token‘]) . „’
LIMIT
1“;
$res = mysql_query($q);

// Datei an den Browser schicken

if (file_exists($filepath) && is_file($filepath)) {
// send headers
header(‚Cache-control: private‘);
header(‚Content-Type: application/octet-stream‘);
header('Content-Length: ’ . filesize($filepath));
header(‚Content-Disposition: filename=‘ . basename($filepath));

readfile($filepath);

} else {
die(‚Error: The file ’ . $filepath . ’ does not exist!‘);
}[/php]