コメント |
@DIV
main.php から呼び出された場合は、ローカルで実行する為の VBScript
のコードを作って、header( "Location: $flname" ); でリダイレクトして、
ダウンロードさせます。
この時、セッション ID を埋め込んでおいて、Msxml2.ServerXMLHTTP.3.0 で
直接自分自身と通信して、選択したディレクトリ情報をセッションに保存します
@END
@DIV
<?
mb_language( "ja" );
mb_internal_encoding("UTF-8");
if ( $_GET['sessionget'] == 'y' ) {
ini_set("session.use_trans_sid", "1");
ini_set("session.use_cookies", "0");
session_start();
$_SESSION['dir'] = str_replace("\\\\","\\", $_GET['dir']);
$_SESSION['dir'] = mb_convert_encoding( $_SESSION['dir'], "SHIFT_JIS", "UTF-8" );
print "OK" . $_SESSION['dir'];
}
else {
session_start();
$sid = session_id();
$str = <<<VBS
' **********************************************************
' オブジェクト作成
' **********************************************************
Set Shell = CreateObject( "Shell.Application" )
Set obj = Shell.BrowseForFolder( 0, strTitle, 11, 0 )
if obj is nothing then
Wscript.Quit
end if
if not obj.Self.IsFileSystem then
MsgBox( "ファイルシステムではありません" )
Wscript.Quit
end if
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set js = sc.CodeObject
strUrl = "http://{$_GET['domain']}{$_SERVER['PHP_SELF']}"
strUrl = strUrl & "?PHPSESSID={$sid}&sessionget=y&dir=" & js.encodeURI(obj.Self.Path)
Set objSrvHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
on error resume next
Call objSrvHTTP.Open("GET", strUrl, False )
if Err.Number <> 0 then
MsgBox( "HTTP エラーです" )
Wscript.Quit
end if
on error goto 0
objSrvHTTP.Send
VBS;
$flname = "getdir" . session_id() . ".vbs";
file_put_contents($flname,$str);
header( "Location: $flname" );
}
?>
@END
|