SQLの窓

2015年02月14日


PHP による『超簡易掲示板』 / アプリケーションからの POST 検証用



デモページ

2015-02-14 : 更新
コメントを追加して、特殊な文字を無効化しました

2013/01/07 : 更新
Chrome での表示で、\n 埋め込まれているデータを <br /> に変換して、実際に改行して見えるようにしました。

Windows Phone(C#) から使うと、エミュレータ内では取得しにくい長い文字列を LOG 等の目的で出力可能です。

1) Google Chrome から実行すると、『掲示板として動作します』
※ F12 の開発者ツールでデバイスモードにしてから、リセットして UA に適当な文字を入力して再表示すると JSON 表示されます( iPad 等でもいいですが、それではテキスト選択ができません )







2) それ以外のブラウザからだと、表示されるのは JSON です
<?php
// **************************************
// ブラウザの判定をしています
// ( $_SERVER['HTTP_USER_AGENT'] )
// **************************************
$AGENT = "";
if ( strpos( $_SERVER['HTTP_USER_AGENT'], "Chrome") !== false ) {
	$AGENT = "Chrome";
}

// **************************************
// ブラウザが Google Chrome の場合のみ
// 通常の HTML として出力します
// ※ キャラクタセットは UTF-8 です
// **************************************
if ( $AGENT == "Chrome" ) {
	header( "Content-Type: text/html; Charset=utf-8" );
}
else {
	header( "Content-Type: text/plain; Charset=utf-8" );
}

// **************************************
// キャッシュを無効にするヘッダです
// **************************************
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

$log_text = @file_get_contents("./text.log");
// **************************************
// 書き込み処理です
// **************************************
if ( $_POST['send'] != "" && $_POST['text'] != "" ) {
	// **************************************
	// 本文中の改行コードを "\n" という
	// 文字列に変換しています
	// **************************************
	$log_wk = str_replace("\r\n","\\n",$_POST['text']);
	$log_wk = str_replace("\n","\\n", $log_wk );
	$log_wk = str_replace("\r","\\n", $log_wk );

	// **************************************
	// 特殊な文字を無効化します
	// **************************************
	$log_wk = str_replace("&","&amp;",$log_wk);
	$log_wk = str_replace("<","&lt;",$log_wk);
	$log_wk = str_replace(">","&gt;",$log_wk);
	// シングルクォート
	$log_wk = str_replace("'","&#39;",$log_wk);
	// ダブルクォート
	$log_wk = str_replace("\"","&#34;",$log_wk);

	// **************************************
	// 前回データとの境界に改行コードを
	// 設定しています
	// **************************************
	$log_text = $log_wk . "\n" . $log_text;

	file_put_contents("./text.log", $log_text );
	if ( $AGENT == "Chrome" ) {
		// GET メソッドで再表示します
		header( "Location: {$_SERVER["PHP_SELF"]}" );
		exit();
	}
}

// **************************************
// 環境によって必要ありませんが、
// エラー時の設定です
// **************************************
error_reporting(E_ALL ^ E_NOTICE);
ini_set( "display_errors", "1" );

// **************************************
// Chrome 以外では JSON 文字列で返します
// ※ text.log にデータが保存されています
// **************************************
if ( $AGENT != "Chrome" ) {
?>
{
	"item" : [ 
<?php
	$json_data = @file( "./text.log" );

	$cnt = count($json_data);
	for( $i = 0; $i < $cnt; $i++ ) {
		if ( $i != 0 ) {
			print "\t\t,{ \"text\": \"" . chop($json_data[$i]) . "\" }\n";
		}
		else {
			print "\t\t{ \"text\": \"" . chop($json_data[$i]) . "\" }\n";
		}
	}
?>

	]
}
<?
}
else {
	// **************************************
	// 記事の境界を hr 要素で表現します
	// **************************************
	$log_text = str_replace("\n", "<hr style='color:#c0c0c0;'>\n", $log_text );

	// **************************************
	// 本文の改行は br 要素で表現します
	// **************************************
	$log_text = str_replace("\\n", "<br>\n", $log_text );
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=1280,initial-scale=1.0">
</head>

<body>

<form method="POST">
<textarea name="text" style="width:400px;height:100px;"></textarea>
<br>
<input type="submit" name="send" value="送信">
</form>

<?= $log_text ?>
</body>
</html>
<? } ?>

関連する記事

WindowsPhone からの単純なインターネット投稿
コマンドプロンプトから Windows PHP を使って POST 投稿する

関連するオンラインツール

JSON チェック( JSONLint / The JSON Validator )



【PHP + WEBアプリの最新記事】
posted by lightbox at 2015-02-14 11:12 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり