# php header auf iis6



## PeteProgram (17. April 2008)

Hallo,

ich habe folgendes Problem, auf einem IIS6 läuft eine php 5.2.x Anwendung, die unter anderem eine Excel Export enthält. Das ganze funktioniert testweise auf meinem Rechner und mit IE7. 

Der Kunde besteht aber leider, wie sich jetzt rausstellte, auf seinen IE6 und da funktioniert das ganze nicht, anstelle des Filenames kommt da immer "scriptname.php" an und der Rechner öffnet das ganze mit einem Texteditor anstelle mit Excel (ist installiert)

Jetzt teste ich das bei mir lokal mit einem aktuellen xampp und siehe da t es auch mit dem IE6. 

Jetzt stellt sich bei mir Verwirrung ein. Ich gucke vorsichtshalber in die headers mit Firebug -> der IIS scheint alles ordentlich zu versenden. -> Noch mehr Verwirrung.

folgende content-types und dispositions Headers habe ich (natürlich nicht alle auf einmal sondern in allen möglichen Kombinationen) probiert, ebenso den filenamen z.B. als export_data(2007).csv bzw. export_data(2007).xls


```
header("Content-type: application/csv");
header("Content-type: application/msexcel;" );
header("Content-type: application/vnd-ms-excel");
header("Content-type: application/octet-stream");
 
header("Disposition: attachment; filename=$fileName");
header("Content-Disposition: attachment; filename=$fileName");
header("Content-Disposition: inline; filename=$fileName");
```
 
Könnt ihr mir helfen?

Mich verwirrt, dass auch der filename nicht ordentlich ankommt...


----------



## kalle123456 (17. April 2008)

Hallo,

hast du mal auf der Maschine, wo es nicht läuft den Cache geleert und den Browser neugestartet?Hilft manchmal...

Gruss


----------



## PeteProgram (17. April 2008)

hilft nix
no-cache is an, und im Browser extra nochmal immer version aus dem netz runterladen - d.h. der lädt das teil eh immer live runter.


----------



## kalle123456 (17. April 2008)

prüfe dann mal bitte die installierten Browser addons, das könnte auch eine mögliche Fehlerquelle sein.

Gruss


----------



## Gumbo (18. April 2008)

Probier mal Folgendes:
	
	
	



```
function encodeValue( $val )
{
	if( preg_match('/[^\x21\x23-\x27\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E]/', $val) ) {
		$val = '"'.preg_replace('/[\x0D\x22\x5C]/', '\\\$0', $val).'"';
	}
	return $val;
}

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.encodeValue($fileName));
```


----------

