Einzelnen Beitrag anzeigen
Alt 19.01.2011, 13:02   #1 (permalink)
sofl
Overclocker
 
Benutzerbild von sofl
 

Registriert seit: 20.10.2005
Beiträge: 380

sofl wird schon bald berühmt werden

Standard [PHP] Header Problem

Hallo liebe Community.

Ich habe folgendes Problem...

...derzeit programmiere ich eine Serververwaltungswebsite in unserem Intranet. Dazu verwende ich php,html und ajax. Auf der Seite sind verschiedene Server angezeigt welche man über eine Remotedesktopverbindung erreichen/steuern kann. Falls ein Server aus der Liste dies unterstützt, soll hinter dem Servernamen eine Verlinkung zu einem dynamischen .rdp file stehen. (Mit anderen Worten eine Art Konfigurationsscript welche verschiedene Parameter für die Remotedesktopverbindung enthält).

All dies funktioniert auch bereits, allerdings kommt im IE beim Aufruf der generierten rdp der Downloaddialog. Wenn man allerdings eine statische rdp datei in der Adressleiste angibt, wird diese direkt ausgeführt. Bzw. gibt es beim ersten statischen Aufruf eine Checkbox "Diesen Typ immer öffnen"..o.ä.

Ich möchste nun das sich die dynamische rdp genauso wie die statische verhält. Ich habe das ganze auch schon im Opera probiert, da funktioniert es einwandfrei.

Hier mein derzeitiges PHP-Script

PHP-Code:
<?php
if($_GET['show'] == 'full')
{
    
$outtype=array( 'fname'        => 'rdp_full.rdp',
                    
'mode'      => 'screen mode id:i:2',
                    
'width'        => 'desktopwidth:i:1600' ,
                    
'height'    => 'desktopheight:i:1200');
}
else
{
    
$outtype=array( 'fname'        => 'rdp_window.rdp',
                    
'mode'      => 'screen mode id:i:1',
                    
'width'        => 'desktopwidth:i:1024' ,
                    
'height'    => 'desktopheight:i:768');
}

//header("Content-type: application/x-ms-application"); 
//header("Content-type: application/octet-stream"); 
header("Content-type: text/plain"); 
//header("Content-type: application/x-rdp");
//header("Content-type: application/rdp");
//header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=".$outtype['fname']); 
header('Cache-Control: no-cache, no-store, must-revalidate');
header("Pragma: no-cache");
//header("Content-Description: Download");
//header("Expires: Fri, 01 Jan 2010 05:00:00 GMT");

$out=$outtype['mode']."\n";
$out.=$outtype['width']."\n";
$out.=$outtype['height']."\n";
$out.="session bpp:i:16\n";
$out.="winposstr:s:2,3,544,139,1344,739\n";
$out.="full address:s:".$_GET['tarip']."\n";
$out.="compression:i:1\n";
$out.="keyboardhook:i:2\n";
$out.="audiomode:i:2\n";
$out.="redirectdrives:i:0\n";
$out.="redirectprinters:i:1\n";
$out.="redirectcomports:i:0\n";
$out.="redirectsmartcards:i:0\n";
$out.="displayconnectionbar:i:1\n";
$out.="autoreconnection enabled:i:1\n";
$out.="username:s:".$_GET['admin']."\n";
$out.="alternate shell:s:\n";
$out.="shell working directory:s:\n";
$out.="disable wallpaper:i:1\n";
$out.="disable full window drag:i:0\n";
$out.="disable menu anims:i:0\n";
$out.="disable themes:i:0\n";
$out.="disable cursor setting:i:0\n";
$out.="bitmapcachepersistenable:i:1\n";
$out.="allow desktop composition:i:0\n";
$out.="allow font smoothing:i:0\n";
$out.="redirectclipboard:i:1\n";
$out.="redirectposdevices:i:0\n";
$out.="authentication level:i:0\n";
$out.="prompt for credentials:i:0\n";
$out.="negotiate security layer:i:1\n";
$out.="remoteapplicationmode:i:0\n";
$out.="gatewayhostname:s:\n";
$out.="gatewayusagemethod:i:4\n";
$out.="gatewaycredentialssource:i:4\n";
$out.="gatewayprofileusagemethod:i:0\n";
$out.="promptcredentialonce:i:1\n";
$out.="drivestoredirect:s:C:;\n";

//header("Content-Length: ".strlen($out));
echo $out;
?>
Wie man unschwer erkennen kann, habe ich ein wenig mit den Headern rumexperimentiert. Im Internet habe ich gelesen, dass man den MIME Type für die rdp Dateien via IIS eintragen, und dann im Header angeben muss. Mir wäre allerdings eine andere Lösung vorerst lieber.

Hat jemand eine Lösung oder zumindest einen Ansatz? Danke.

LG sofl
sofl ist offline   Mit Zitat antworten