PHP+VBScript : WEB上のDBをローカルPCから更新する

  WEB側のコード : PHP



実際の処理に、画面は必要ありませんが、PHP 側のテストをする為に GET メソッドで呼び出された
時のみ画面を表示するようにしています。

※ 正しく処理された場合は、 ok とのみ返します

  
<?
header( "Content-Type: text/html; Charset=euc-jp" );
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("'", "''", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

$Server = 'サーバー';
$DbName = 'データベース';
$User = 'ユーザー';
$Password = 'パスワード';

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

	// 接続
	$Connect = @mysql_connect( $Server, $User, $Password );
	if ( !$Connect ) {
		print "接続エラーです";
		exit();
	}

	// DB選択
	mysql_select_db( $DbName, $Connect );

	$Query = "insert into `社員マスタ` (`社員コード`,`氏名`)";
	$Query .= " values('{$_POST['code']}','{$_POST['name']}')";

	// 実行
	$ret = mysql_query($Query, $Connect);
	if ( !$ret ) {
		print "エラーが発生しました\n";
		print mysql_error() . "\n";
	}
	else {
		print "ok";
	}

	// 接続解除
	mysql_close($Connect);

}
else {
?>
<html>
<body>
<form method="post">
<input type="text" name="code">
<input type="text" name="name">
<input type="submit" name="send">
</form>
</body>
</html>
<?
}
?>
  

EUC-JP で渡す事を前提としているので、5c の変換処理はありませんが、
シングルクォートが含まれていた場合は二重のシングルクォートに変換し、
ダブルクォートは元へ戻しています






  PC( Windows 側 ) のコード : VBScript



サーバー側へは多くのデータの更新を想定しているので、POST メソッドを使用しています。

メモリ上で SHIFT_JIS のデータを EUC-JP に変換して、さらに URLエンコードされた文字列
に変換した文字列を使って、EUC-JP のクライアント画面から送信したのと同じ処理になるよう
にしています。

サーバー側に負荷をかけないように、Sleep を更新と更新の間にはさんでいますが、通信の
エラーの処理は実装していません


Basic 認証を行いたい場合は、以下のヘッダを追加します

※ dXNlcjpwYXNzd29yZA== は、user:password をBASE64 で変換した文字列です

  
' Basic 認証
Call objHTTP.setRequestHeader("Authorization", "Basic dXNlcjpwYXNzd29yZA==")
  

  
' ***********************************************************
' ( 連続実行を想定しているので、クライアント用オブジェクト )
' ***********************************************************
Set objHTTP = Wscript.CreateObject("MSXML2.XMLHTTP")
' ***********************************************************
' キャラクタセット変換用
' ***********************************************************
Set Stream = Wscript.CreateObject("ADODB.Stream")
Set Stream2 = Wscript.CreateObject("ADODB.Stream")
' ***********************************************************
' URLエンコード用
' ***********************************************************
Set StreamBin = Wscript.CreateObject("ADODB.Stream")

Call objHTTP.Open("POST","サーバー側のURL",False)
Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
strData = "code=9002&name=" & EUC_URLEncode("日本語表示1")
Call objHTTP.SetRequestHeader("Content-Length",Len(strData))
Call objHTTP.Send(strData)

Wscript.Sleep(1)

Call objHTTP.Open("POST","サーバー側のURL",False)
Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
strData = "code=9003&name=" & EUC_URLEncode("日本語表示2")
Call objHTTP.SetRequestHeader("Content-Length",Len(strData))
Call objHTTP.Send(strData)

Wscript.Echo objHTTP.responseText

' ***********************************************************
' SHIFT_JIS を EUC-JP に変換して URLエンコード
' ***********************************************************
Function EUC_URLEncode(str)

	Stream.Open
	Stream.Charset = "shift_jis"
	' shift_jis で入力文字を書き込む
	Stream.WriteText str
	' コピーの為にデータポインタを先頭にセット
	Stream.Position = 0
 
	Stream2.Open
	Stream2.Charset = "euc-jp"
	' shift_jis を euc-jp に変換
	Stream.CopyTo Stream2
	Stream.Close

	' コピーの為にデータポインタを先頭にセット
	Stream2.Position = 0

	' バイナリで開く
	StreamBin.Open
 	StreamBin.Type = 1

	' テキストをバイナリに変換
	Stream2.CopyTo StreamBin
	Stream2.Close

	' 読み込みの為にデータポインタを先頭にセット
	StreamBin.Position = 0

	Buffer = ""
	Do while not StreamBin.EOS
		LineBuffer = StreamBin.Read(16)
 
		For i = 1 to LenB( LineBuffer )
			CWork = MidB(LineBuffer,i,1)
			Cwork = AscB(Cwork)
			Cwork = Hex(Cwork)
			Cwork = Ucase(Cwork)
			if Len(Cwork) = 1 then
				Buffer = Buffer & "%0" & Cwork
			else
				Buffer = Buffer & "%" & Cwork
			end if
		Next
 
	Loop

	StreamBin.Close

	EUC_URLEncode = Buffer

End Function
  












  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ