Bestand verwijderen na downloaden
Omdat ik ISS gebruik als webserver gebruik kan ik geen .htaccess gebruiken, en het bestand dus niet beveiligen met mijn php login script. Daarom zocht ik een script dat ervoor zorgt dat als het bestand is gedownload, het automatisch verwijderd wordt.
Ik heb heel Google al afgezocht maar ik kon niks vinden.
Wie kan mij helpen?
Mathijs
Gewijzigd op 01/01/1970 01:00:00 door Mathijs M
Is het geen optie om het bestand nooit op te slaan en gewoon direct als download aan te bieden?
http://www.sitemasters.be/?pagina=tutorials/tutorials&id=436&cat=4
Zou je mij een simpel voorbeeld kunnen geven van een code?
Mathijs
Gewijzigd op 01/01/1970 01:00:00 door Mathijs M
formulier.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
?>
<head>
<title>Downloaden...</title>
</head>
<body>
Klik hieronder om te downloaden
<FORM METHOD="post" action="zip.php">
<INPUT TYPE="submit" VALUE="Download">
</FORM>
</body>
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
?>
<head>
<title>Downloaden...</title>
</head>
<body>
Klik hieronder om te downloaden
<FORM METHOD="post" action="zip.php">
<INPUT TYPE="submit" VALUE="Download">
</FORM>
</body>
zip.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
require_once("pclzip.lib.php"); // Lees de class in
$zip = new PclZip("website.zip");
if($zip->create("../../../../informatica") == 0)
die("Error : " . $zip->errorInfo(true));
header ( "Location: download.php" );
?>
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
require_once("pclzip.lib.php"); // Lees de class in
$zip = new PclZip("website.zip");
if($zip->create("../../../../informatica") == 0)
die("Error : " . $zip->errorInfo(true));
header ( "Location: download.php" );
?>
download.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
$filename = 'website.zip';
$filename = realpath($filename);
if (!file_exists($filename)) {
die("NO FILE HERE");
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename") or die("File not found.");
header ( "Location: verwijder.php" ); ?>
// Deze 3 regels zijn het enige vereiste om te controleren of er is ingelogd
ob_start();
session_start();
include("../auth.php");
checkAuth();
// Tot hier dus
$filename = 'website.zip';
$filename = realpath($filename);
if (!file_exists($filename)) {
die("NO FILE HERE");
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename") or die("File not found.");
header ( "Location: verwijder.php" ); ?>
verwijderen.php
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
require_once("pclzip.lib.php"); // Lees de class in
$zip = delete(PCLZIP_OPT_BY_NAME,"website.zip");
if($zip->delete() == 0)
die("Error : " . $zip->errorInfo(true));
header ( "Location: ../index.php" );
?>
require_once("pclzip.lib.php"); // Lees de class in
$zip = delete(PCLZIP_OPT_BY_NAME,"website.zip");
if($zip->delete() == 0)
die("Error : " . $zip->errorInfo(true));
header ( "Location: ../index.php" );
?>
Het formuliertje, het zippen en het verwijderen werkt zoals het moet, maar als ik wil downloaden wacht hij niet totdat het downloaden klaar is en downloadt hij dus niets. Wie weet hoe ik dit kan oplossen?
Mathijs
EDIT 05-01-2008 21:18
Download.php gewijzigd
Gewijzigd op 01/01/1970 01:00:00 door Mathijs M
Ik mis in download.php de regel waar je de inhoud van het bestand leest en naar de browser stuurt? Dus bijvoorbeeld de functie readfile()...
Ik heb download.php nu gewijzigd naar de bovenstaande code, maar nu word ik niet doorgestuurd naar verwijderen.php, verder werkt de code wel goed.