前提
phpで1つのファイルでフォームを作成するプログラムを作っているのですが、表示名の下のテキストのところが表示されません
実現したいこと
フォームにメッセージを入力したら表示する
発生している問題・エラーメッセージ
特にありません
該当のソースコード
php
1<?php 2function h($input) { 3 return htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); 4} 5 6$msgs = array(); 7$text = ''; 8 9 10try{ 11 $file = new SplFileObject('hogehoge.txt', 'cb+'); 12 13 if(isset($_POST['text']) && is_string($_POST['text'])) { //初回起動時に非表示 14 $file->ftruncate(0); 15 $file->fwrite($_POST['text']); 16 } else { 17 $text = ''; 18 while (!$file->eof()) { 19 $text .= $file->fgets(); 20 } 21 } 22 23} catch (Exception $e) { 24 25 $m = 'エラー: ' . $e->getMessage(); 26 $msgs[] = '<div style="color:red;">' . h($m) .'</div>'; 27 28} 29 30/*表示*/ 31foreach ($file as $line) { 32 if ($line == false) continue; 33 echo "$line<br>", PHP_EOL; 34} 35 36$msg = implode(PHP_EOL, $msgs) . PHP_EOL; 37?> 38<!DOCTYPE html> 39<head> 40<meta charset="UTF-8" /> 41<title>サンプル</title> 42</head> 43<body> 44<?php echo $msg; ?> 45<form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="post"> 46 47 48表示名 49<div><input type="text" name="text" rows="10" cols="30"><br> 50<?php echo h($text); ?> 51</div> 52 53一言メッセージ 54<div><textarea id="t_message" name="text1" rows="10" cols="30"> 55<?php echo h($text); ?></textarea> 56</div> 57 58<div><input type="submit" value="送信" /></div> 59</form> 60</body> 61</html> 62 63ソースコード
試したこと
・現在表示名の出力はできているのですが、一言メッセージの出力ができないです。
補足情報(FW/ツールのバージョンなど)
・テキストファイルはMeryを使用しています
・字が汚くて申し訳ないのですが出力したい形式はこんな感じです。
表示名は一行、一言メッセージは複数行入力可能なフォームです。送信を押すと表示名の上に入力した結果が表示されるようにしたいです。
・ページの更新をした後送信したメッセージを消したいのですが何かやり方はありますか?
回答1件
あなたの回答
tips
プレビュー