Fehler bei Download-Script

pb_sergio

Mitglied
Hallo Leute

ich habe ein Problem mit meinem Download-Script.
Der Benutzer soll sich auf der Seite export.php eine Dateiendung und einen Dateinamen aussuchen und dann auf speichern klicken. Die gleiche Seite wird wieder aufgerufen und eine Funktion erzeugt mir auf dem Server eine Datei die zum Download automatisch angeboten werden soll. Das Erzeugen der Datei funktioniert auch und die entsprechenden Daten sind drin. Öffnet sich jedoch das Downloadfenster von IE/Mozilla und ich wähle "speichern" aus dann ist es so, dass die Datei mit dem HTML-Code überschrieben wird.
Wie kann ich das verhindern und wieso geschieht das denn.

Hier mein Code:

Code:
 <?php
include("exportfunction.php");
$kontakt=unserialize(base64_decode($knr));
if(isset($save))
{
if(isset($dateiname)&&$dateiname!="")
{
if(isset($format)&&$format!="0")
{
	$path=makeFileContent($kontakt,$dateiname,$format);
	 header("Content-type: octet/stream");
	 header("Content-Disposition: attachment; filename=".$dateiname.".".$format."");
	 header("Content-Length: ".filesize($datei));
	 header("Pragma: no-cache");
	 header("Expires: 0");
	 readfile($path);
	 //exit;
}
else
{
	 $fehler="Sie haben kein Dateiformat ausgewählt.";
}
}
else
{
$fehler="Sie haben keinen Dateinamen angegeben";
}
}
foreach($kontakt as $a)
{
echo $a;
}
?>
<html>
<head>
<title>Export von Daten</title>
<meta name="author" content="m-bruder">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<link rel="stylesheet" type="text/css" href="../layout.css">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<div class="ueberschrift">Exportieren der selektierten Daten.</div>
<br>
<table cellspacing="0" cellpadding="0" width="70" >
<tr>
<td class="bereich" colspan="5" bgcolor="#C0C0C0">Toolbar </td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><a class="toolbar" href="../index.php"><img src="../pic/abbruch.jpg" alt="abbrechen" border="0"></td>
</tr>
<tr>
<td class="bereich" colspan="5" bgcolor="#C0C0C0">&nbsp;</td>
</tr>
</table>
<br>
<form action="export.php?dateiname=<?=$dateiname?>&knr=<?=$knr?>" method="POST" target="">
<table cellspacing="0" cellpadding="0" border="0" >
<tr>
<td colspan="3" bgcolor="#c0c0c0" class="bereich">Bitte wählen Sie ein Format aus</td>
</tr>
<tr>
<td colspan="3">&nbsp;</td>
</tr>
<tr>
<td class="schrift">Format:</td>
<td>
<select name="format" size="1">
<option value="0">Bitte wählen
<option value="csv">*.csv (MS-Excel)
		 <option value="tab">*.txt (Tab-getrennt)
		 <option value="txt">*.txt (Text-Datei)
</select>
</td>
<td> </td>
</tr>
<tr>
<td class="schrift">Dateiname:</td>
<td>
<input type="Text" name="dateiname" value="<?=$dateiname?>" size="30" maxlength="">
</td>
<td> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="right"><input type="reset"></td>
<td><input type="Submit" name="save" value="Speichern"></td>
</tr>
</table>
</form>
<div class="fehler"><?=$fehler?></div>
</body>
</html>


Wäre für ein paar gute Ideen dankbar!

cu
pb_sergio
 
Du hast die entsprechende Passage bereits erwähnt, jedoch auskommentiert:
PHP:
<?php

	include 'exportfunction.php';

	$kontakt = unserialize(base64_decode($_GET['knr']));
	if( isset($_POST['save']) ) {
		if( isset($_POST['dateiname']) && $_POST['dateiname'] != '' ) {
			if( isset($_POST['format']) && $_POST['format'] != '0' ) {
				$path = makeFileContent($kontakt, $_POST['dateiname'], $_POST['format']);
				header('Content-Type: application/octet-stream');
				header('Content-Disposition: attachment; filename="'.addslashes($_POST['dateiname']).'.'.addslashes($_POST['format']).'"');
				header('Content-Length: '.filesize($path));
				header('Pragma: no-cache');
				header('Expires: 0');
				readfile($path);
				exit;
			} else {
				$fehler = 'Sie haben kein Dateiformat ausgewählt!';
			}
		} else {
			$fehler = 'Sie haben keinen Dateinamen angegeben!';
		}
	}
	foreach($kontakt as $a) {
		echo $a;
	}

?>
 
Zurück