デモページ 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("&","&",$log_wk); $log_wk = str_replace("<","<",$log_wk); $log_wk = str_replace(">",">",$log_wk); // シングルクォート $log_wk = str_replace("'","'",$log_wk); // ダブルクォート $log_wk = str_replace("\"",""",$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> <? } ?>
関連する記事 コマンドプロンプトから Windows PHP を使って POST 投稿する 関連するオンラインツール JSON チェック( JSONLint / The JSON Validator )
タグ:PHP WEBアプリケーション
|
【PHP + WEBアプリの最新記事】
- PHP : $.ajax でアップロード( 画像限定 ) / ファイルアップロード ver.3
- PHP : 選択した画像の表示 / ファイルアップロード ver.2
- PHP : ファイルアップロード ver.1
- 超簡易掲示板 ( JSON ) : PHP / CSS でスマホ用レスポンシブ対応
- PHP : 曲線が必要ならば ImageMagick ( 但し使えるかどうかはサーバー次第 )
- GD で画像縮小。『1) 単純縮小、2) 幅にあわす 3) 高さにあわす 4) 任意の幅と高さ』をその他の処理も含めてクラスでまとめ( class GD )
- PHP : 超簡易ログ
- PHP + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- Windows で Laravel を試す際、PHP の Windows バージョンが 5.6.30 なので、Laravel 5.2 をインストールします
- Laravel を試す為に Windows に Composer をインストール
- スマホ対応、サーバインデックス表示パッケージ( jQuery + Bootstrap(css) + mmenu + PHP )
- 超簡易掲示板 : 保存タイプは CSV
- PHP : 既存 GD 関連ライブラリで、背景をグラデーション(2)
- PHP : 既存 GD 関連ライブラリで、背景をグラデーション
- PHP : 入力値のデバッグ
- PHP : ImageMagick : 背景が透過する画像を作成
- PHP雛型(2会話DB更新処理) : MySQL、XMLHttpRequest、XML、JSON、Canvas
- PHP をテストする為の初心者用フォーム