前提
phpで1つのファイルでフォームを作成するプログラムを作っているのですが、表示名の下のテキストのところが表示されません
実現したいこと
フォームにメッセージを入力されたら表示する
発生している問題・エラーメッセージ
特にありません
該当のソースコード
php
<?phpfunction h($input) { return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');}function h1($input1) { return htmlspecialchars($input1, ENT_QUOTES, 'UTF-8');}$msgs = array();$text = '';$msgs1 = array();$text = '';try{ $file = new SplFileObject('hogehoge.txt', 'cb+'); $file = new SplFileObject('hogehoge1.txt', 'cb+'); if(isset($_POST['text']) && is_string($_POST['text'])) { $file->ftruncate(0); $file->fwrite($_POST['text']); } else { $text = ''; while (!$file->eof()) { $text .= $file->fgets(); } }/*-------------------------------------------------------------*/ if(isset($_POST['text']) && is_string($_POST['text'])) { $file->ftruncate(0); $file->fwrite($_POST['text']); } else { $text = ''; while (!$file->eof()) { $text .= $file->fgets(); } }} catch (Exception $e) { $m = 'エラー: ' . $e->getMessage(); $msgs[] = '<div style="color:red;">' . h($m) .'</div>'; }/*改行削除$file->setFlags(SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);*/foreach ($file as $line) { if ($line == false) continue; echo "$line<br>", PHP_EOL;}$msg = implode(PHP_EOL, $msgs) . PHP_EOL;?><!DOCTYPE html><head><meta charset="UTF-8" /><title>サンプル</title></head><body><?php echo $msg; ?><form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="post"><form action="<?=basename($_SERVER['SCRIPT_NAME'])?>" method="post"> 表示名 <div><textarea id="t_message" name="text" rows="10" cols="30"><?php echo h($text); ?></textarea></div> 一言メッセージ <div><textarea id="t_message" name="text" rows="10" cols="30"><?php echo h1($text); ?></textarea></div> <div><input type="submit" value="送信" /></div></fieldset></form></body></html> ```html <!DOCTYPE html><head><meta charset="UTF-8" /><title>サンプル</title></head><body><div style="color:red;">エラー: SplFileObject::__construct(hogehoge.txt): failed to open stream: Permission denied</div><form action="サンプル.php" method="post"> <div><textarea name="text"></textarea></div><div><input type="submit" value="送信" /></div> </form></body></html>ソースコード
試したこと
補足情報(FW/ツールのバージョンなど)
・テキストファイルはMeryを使用しています
・表示名のところをできれば一行のテキストエリアにしたいのですがやり方がわからないのでそちらもできれば教えていただきたいです。
0 コメント