Authentication




Cancel OK
B!コメントする  2013-12-20 16:41:00 by old

POSTやGETをリアルタイムで見たい

WebのデータというのはGETだったりPOSTだったりソケットにストリームだったりするわけですけど
POSTやらGETがどう渡っているのか?ちゃんと引き渡せているのか?を確認しないといけないとき
とりあえず

vardump( $POST );
exit;

みたいに見ることがある。
これでもいいんだけど、いちいち処理がとまってしまうことやその都度exitを付けたり変えたりしないといけなくなって面倒。
できればPOSTした値がリアルタイムで見れればとってもラクなのにな~と思い簡易なPOST/GET監視スクリプトを作ってみた。

まず適当な名前のphpファイルを作成し、中身に以下を突っ込む
仮にauditcatcher.phpとする

/*
* ログ保存場所
*/
$audit
log = "auditlog.dat";
/*
* 取得タイプ
* 0 = POST Only
* 1 = Get Only
* 2 = POST GET All
*/
$audit
type = "2";


$oldoutput = "";
$post
output = "";
$getoutput = "";
$date = new DateTime();
$date
str = $date->format('Y/m/d H:i:s');

/
* 過去ログ取得
*/
// ログファイル作成
if( !file_exists($audit_log) )
{
touch($audit_log);
}
$old_output = file_get_contents($audit_log);

/

* POST値取得
/
if( $audittype == 0 || $audittype == 2 )
{
foreach( $POST as $postkey => $postval )
{
$post
output .= $datestr . " [" . $postkey . "] " . $post_val . "\n";
}
}
/

* GET値取得
/
if( $audittype == 1 || $audittype == 2 )
{
foreach( $GET as $getkey => $getval )
{
$get
output .= $datestr . " (" . $getkey . ") " . $get_val . "\n";
}
}

/

* ログ記録
* 値 + 過去ログ
*/
file_put_contents($audit_log, $post_output.$get_output.$old_output);


POSTもしくはGETをリアルタイムに見たいところにこのaudit_catcher.phpをincludeするなりする。
そうするとPOSTやGETが来ると内容をログに出力します。
需要はないと思うけど一応POSTだけとかGETだけとか両方の出力も選択できるようにしてみました。

次にそのログを監視します。
これはJavaScript先生にx秒置きに取得してもらうというシンプルなものです。
仮にaudit_viewer.htmlとして中身に以下を突っ込みます。

<html lang="ja">
<head>
<title>Audit Catcher!!</title>
<meta charset="utf-8">
</head>
<body>

<script>

window.onload = get_log();

function getTextFile (fname)
{
var text = null;
var ajax = new XMLHttpRequest();
with (ajax)
{
onload =
function () { readyState == 4 && status == 200 && (text = responseText); };

open('GET', fname, false);
send(null);
};
return text;
}
function get_log()
{
log = (getTextFile('audit_log.dat'));
document.write(log.replace(/\n/g, "<br />"));

setTimeout(function()
{
location.reload();
}, 5000);
}

</script>

</body>
</html>


この中身を簡単にいうとaudit_log.datというファイルを5秒(5000ミリ秒)おきに取ってきて表示するというシンプルなものです。

POSTやGETを見たいファイルにaudit_catcher.phpをincludeさせ
audit_viewer.htmlで自動的にキャッチ内容を更新表示。


需要はないかもしれないけどちょっとだけテストがラクになった気がします。
もしかしたらこういうの既にあるのかもしれないけど…


PHP  

  • コメント
  • コメントはまだありません