PHP Download Script: Vor Download HTML ausgeben

ovakek

Cadet 2nd Year
Registriert
Nov. 2009
Beiträge
30
Hi,

ich habe ein Download Script bei welchem ich vor dem Download noch ein wenig HTML Zeugs ausgeben will. Also eine Info was dort gleich geladen wird halt.

Wie stelle ich das am besten an?

Ich habe das Problem, dass ich kein HTML vor dem Download mehr ausgeben kann, weil sonst folgende Meldung kommt:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/meineseite.de/htdocs/public/sets/dl.php:60) in /var/www/meineseite.de/htdocs/public/sets/dl.php on line 62

Hier mein PHP Code.

PHP:
<?php

include('./class/class_mysql.php');
include('./class/mysql_connect.php');

if(isset($_GET['f'])) {

  //qry zum holen der id
  $sql = "SELECT
                     id,
		     link,
                     artist,
                     title
                       FROM
		       sets
                   WHERE
                     id = '".$_GET['f']."';";
  
  $check = new Query($sql);
  
  if($check->error()) {
    echo 'Es traten Fehler auf: <br/>';
    echo $check->getError();
    die();
  } else {
    //qry aufbereiten
    $data = $check->fetch();
    //checken ob id vorhanden
    if($data['id'] != $_GET['f']) {
      echo 'ID nicht vorhanden!';
      } else {
        //id in dateinamen wandeln
        $file = $data['link'];
        
        $filelength = strlen($file);
        $substrlen = $filelength - 22;
        
        $file2 = substr($file, 22, $substrlen);
        
        //html seite mit info generieren
?>         

<!DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="./css/sets.css" />
<title>meineseite.de</title>
</head>
<body>
<h1>meineseite.de - download</h1>

<h2>downloading: <?php  echo $data['artist'].' with '.$data['title']; ?></h2>

</body>
</html>

<?php
        
        //file senden
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachement; filename="'.$file2.'"');
        $send = @readfile($file2);
        

        }
  }
}




?>


Kann mir da jemand behilflich sein?
 
dl2.php erstellen mit dem ganzen Zeugs ohne HTML und auf
dl.php einfach ein redirect machen per

Code:
<script type="text/javascript">
function weiterleitung() {
self.location.href='dl2.php';
}
setTimeout( "weiterleitung()", 1000 );
</script>

HTML Seite bleibt, Downloadpopup erscheint. Win/Win.
 
Also eine Vorschaltseite?
Dann brauchst du entweder zwei php-Scripte, eins zum Downloaden und es, was dir den Donwloadlink generiert.
Code:
vorschalt.php
echo '<a href="http./server.de/download">Link</a>';
Oder du schreibst ein Script, was über den Referer prüft, ob die Vorschaltseite schon angezeigt wurde und dann entsprechend entweder den Download anstößt oder die HTML-Seite anzeigt.
Code:
if($_SERVER["referer"]==$_SELF)
header("Content-type= application/octet-stream");
else
echo "<html>...";
 
Spidy.ch schrieb:
dl2.php erstellen mit dem ganzen Zeugs ohne HTML und auf
dl.php einfach ein redirect machen per

Code:
<script type="text/javascript">
function weiterleitung() {
self.location.href='dl2.php';
}
setTimeout( "weiterleitung()", 1000 );
</script>

HTML Seite bleibt, Downloadpopup erscheint. Win/Win.


Einfach aber effektiv. Vielen Dank, funktioniert einwandfrei :)
 
Zurück
Oben