Hilfe bei Header()-Funktion

danielwe1

Grünschnabel
Hallo,


ich möchte Ziel speichern unter erzwingen, habe dazu gefunden, das es mit der Header()-Funktion möglich ist, bekomme es aber nicht hin.


PHP:
 function startdownload($id)
 {
   connect();
   $file = "";
   $standardurl = "http://------/";

   $downloads = "";
   $abfrage = "SELECT * FROM files WHERE `ID` = '".$id."' LIMIT 1";
   $ergebnis = mysql_query($abfrage);
   while($row = mysql_fetch_object($ergebnis))
    {
    $name = $row->name;
    $filename = $row->filename;
    $description = $row->description;
    $rating = $row->rating;
    $ratingcount = $row->ratingcount;
    $downloads = $row->downloads;
    }

    $ipadress = $_SERVER['REMOTE_ADDR'];
    $abfrage = "SELECT * FROM bannedIP WHERE `fileID`='".$id."'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    $time = $row->downloadTime;
    $timer = time();
    if(($ipadress == $row->downloadIP) && ($timer <= ($time+20)))
      $match = 1;
    }
    if($match==1)
    {
    echo "<i>Sie haben schon gedownloaded!</i>";
    }
    else
    {
   $downloadsneu = $downloads+1;

   $date = time();

   $aendern = "UPDATE `files` Set `downloads` = '".$downloadsneu."' WHERE `ID` = '".$id."'";
   $update = mysql_query($aendern);
   $eintrag = "INSERT INTO `bannedIP` (ID, fileID, downloadTime, downloadIP) VALUES (NULL,'".$id."','".$date."','".$ipadress."')";
   $eintragen = mysql_query($eintrag);

   $file = $standardurl . $filename;
   echo "Ihr Download startet in 3 Sekunden<br />";
   echo "<meta http-equiv=\"refresh\" content=\"3; URL=".$file."\">";
    }
   close();
 }


In die function meines Scripts gehört es denke ich. Könnt ihr mir helfen wie ich es einbinde? Vielen Dank im vorraus.




Mit freundlichen Grüßen




Daniel Werner
 
Das Script... $standardurl etwas geändert

PHP:
<?php
function startdownload($id)
 {
   connect();
   $file = "";
   $standardurl = "http://------/download.php?path="; // der Pfad zur download.php

   $downloads = "";
   $abfrage = "SELECT * FROM files WHERE `ID` = '".$id."' LIMIT 1";
   $ergebnis = mysql_query($abfrage);
   while($row = mysql_fetch_object($ergebnis))
    {
    $name = $row->name;
    $filename = $row->filename;
    $description = $row->description;
    $rating = $row->rating;
    $ratingcount = $row->ratingcount;
    $downloads = $row->downloads;
    }

    $ipadress = $_SERVER['REMOTE_ADDR'];
    $abfrage = "SELECT * FROM bannedIP WHERE `fileID`='".$id."'";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
    $time = $row->downloadTime;
    $timer = time();
    if(($ipadress == $row->downloadIP) && ($timer <= ($time+20)))
      $match = 1;
    }
    if($match==1)
    {
    echo "<i>Sie haben schon gedownloaded!</i>";
    }
    else
    {
   $downloadsneu = $downloads+1;

   $date = time();

   $aendern = "UPDATE `files` Set `downloads` = '".$downloadsneu."' WHERE `ID` = '".$id."'";
   $update = mysql_query($aendern);
   $eintrag = "INSERT INTO `bannedIP` (ID, fileID, downloadTime, downloadIP) VALUES (NULL,'".$id."','".$date."','".$ipadress."')";
   $eintragen = mysql_query($eintrag);

   $file = $standardurl . $filename;
   echo "Ihr Download startet in 3 Sekunden<br />";
   echo "<meta http-equiv=\"refresh\" content=\"3; URL=".$file."\">";
    }
   close();
 }  ?>

dann musst du eine Extra Datei anlegen, hier download.php, die aus dem Web erreichbar ist:

PHP:
<?php
// Datei: download.php - START -

// downloading a file
$filename = $_GET['path'];

// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// browser must download file from server instead of cache

// force download dialog
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

// use the Content-Disposition header to supply a recommended filename and
// force the browser to display the save dialog.
header("Content-Disposition: attachment; filename=".basename($filename).";");

/*
The Content-transfer-encoding header should be binary, since the file will be read
directly from the disk and the raw bytes passed to the downloading computer.
The Content-length header is useful to set for downloads. The browser will be able to
show a progress meter as a file downloads. The content-lenght can be determines by
filesize function returns the size of a file.
*/
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));

@readfile($filename);
exit(0);

// Datei: download.php - ENDE -
?>

have fun
 
Ich habe die Datei, heißt download.php und funktoiniert einwandfrei, bis auf das ziel speichern unter. Ich habe nur die Startdownload function gepostet, weil man nur die braucht, zum anpassen.
 
Zurück