PHP の POST データの生データを確認して、VB.net からデータを送信する

  PHP で直接取り出す



最終的な目標は、VB.net のフォームからデータを入力して、リモートのデータベースに対して、PHP を経由して
データを更新します。データのインターフェイスは、key=value 形式の POST データなので、いろいろな方法で
確認できる必要があります。

自分の PHP コードの場合は、簡単なコードを付加すると全てのデータを確実にダンプできますが、
自分が直接触れない WEB 上のインターフェイスは特殊なブラウザのツールを使います。

関連する記事

  VBScript でバッチ mixi ボイス投稿
  VBScript でバッチ twitter 投稿


php://input に関しては以下のページを参照して下さい
PHP: PHP 入出力ストリーム - Manual
( php://input は、POST の生データの読み込みを 許可します )

  
send=%C1%F7%BF%AE&fld1=%A4%A2%A4%A4%A4%A6%A4%A8%A4%AA
  

  
<?
header( "Content-Type: text/html; Charset=euc-jp" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}


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


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

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

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

	$query = "update 社員マスタ set フリガナ = '{$_POST['fld1']}' where 社員コード = '0001'";
	$result = mysql_query($query, $Connect);

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

	// POST された生のデータをファイルへ出力
	$data = file_get_contents("php://input" );
	file_put_contents("./dump.log", $data );

}

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=euc-jp" />
<TITLE>HTML雛形</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}
.column {
	border-style:solid;
	border-width:1px;
	border-color:#000000;
	padding: 4px;
}
</STYLE>
</HEAD>
<BODY>


<FORM
	name="frm"
	method="POST"
	action=""
>
<TABLE
	
	style='
		border-collapse:collapse;
		border-style:solid;
		border-width:1px;
		border-color:#000000;
		width:690px;
	'
>

<TR>
	<TD class="column" colspan=2>
	<INPUT
		type="submit"
		name="send"
		value="送信"
	>
	</TD>
</TR>
<TR>
	<TD class="column">入力フィールド1</TD>
	<TD class="column">
	<INPUT
		type="text"
		name="fld1"
		style='width:400px;'
	>&nbsp;&nbsp;
	</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
  




  ieHTTPHeaders で確認



Jonas Blunck

Ieheader

Ieheader2




  Firefox の Firebug で確認

Firebug

Firebug





  VB.net からデータを POST メソッドで送信

元々のコードは、【POSTでデータを送信する: DOBON.NET】 をそのまま使ってテストしました。

※ System.Web を参照する必要があります
※ 実際は、通信に対するエラー処理が必要です

  
' PHP 側のキャラクタセットと合わせる
Dim enc As System.Text.Encoding = _
 System.Text.Encoding.GetEncoding("euc-jp")

' POST送信する文字列をフォームの入力データから作成
Dim postData As String = _
 "fld1=" + _
  System.Web.HttpUtility.UrlEncode(Me.フリガナ.Text, enc)
' バイト型配列に変換
Dim postDataBytes As Byte() = _
	System.Text.Encoding.ASCII.GetBytes(postData)

' WebRequestの作成
Dim req As System.Net.WebRequest = _
 System.Net.WebRequest.Create("送信したデータを処理する php が存在する URL")

' POSTメソッド
req.Method = "POST"
' POST する為の仕様
req.ContentType = "application/x-www-form-urlencoded"
' POST送信するデータの長さを指定
req.ContentLength = postDataBytes.Length

'データをPOST送信するためのStreamを取得
Dim reqStream As System.IO.Stream = req.GetRequestStream()
'送信するデータを書き込む
reqStream.Write(postDataBytes, 0, postDataBytes.Length)
reqStream.Close()

' *********************************************
' 更新では PHP 側で成功したがどうか単純な出力を仕様として定義
' して使います。それと、データ参照のフォーマット仕様を決めて、データ
' の表示の処理が必要になります
' *********************************************
' サーバーからの応答を受信するためのWebResponseを取得
Dim res As System.Net.WebResponse = req.GetResponse()
' 応答データを受信するためのStreamを取得
Dim resStream As System.IO.Stream = res.GetResponseStream()
' 受信して表示
Dim sr As New System.IO.StreamReader(resStream, enc)
Console.WriteLine(sr.ReadToEnd())

' 閉じる
sr.Close()
  













   SQLの窓    create:2010/05/06  update:2015/09/23   管理者用(要ログイン)





フリーフォントツール

SQLの窓ツール

SQLの窓フリーソフト

写真素材

一般ツールリンク

SQLの窓

フリーソフト

JSライブラリ