PHPの一行掲示板で名前が表示できない
「最初に読むPHP」(クジラ飛行机)でサンプルコードを写したところ、
以下のようなエラーメッセージが表示され、名前を表示することができません。
発生している問題・エラーメッセージ
Notice: Undefined index: nama in C:\xampp\htdocs\simple-bbs.php on line 20
該当のソースコード
php
1<?php 2 3$save_file = dirname(__FILE__)."/bbslog.txt"; 4 5$mode = isset($_GET["mode"]) ? $_GET["mode"] : "show"; 6switch($mode) { 7 case "show" : mode_show(); break; 8 case "write" : mode_write(); break; 9 default : mode_show(); break; 10} 11 12function mode_show() { 13 show_form(); 14 15 $log = load_data(); 16 print_r($log); 17 echo "<ul>"; 18 foreach ($log as $i) { 19 // $name = isset($_POST["name"]) ? htmlspecialchars($i["nama"]) : ''; 20 $name = htmlspecialchars($i["nama"]); 21 $body = htmlspecialchars($i["body"]); 22 echo "<li><b style='coler:red;'>$name</b>: $body</li>\n"; 23 } 24 echo "</ul>"; 25} 26 27function show_form() { 28 echo <<< __FORM__ 29<form> 30■名前:<input type="text" name="name" size="8" /> 31本文:<input type="text" name="body" size="30" /> 32<input type="submit" value="書く" /> 33<input type="hidden" name="mode" value="write" /> 34</form><hr/> 35__FORM__; 36} 37 38function mode_write() { 39 if ($_GET["name"]== "" || $_GET["body"] == "") { 40 echo "名前か本文が空です。入力してください"; 41 exit; 42 } 43 44 $log = load_data(); 45 array_unshift($log, $_GET); 46 save_data($log); 47 $self = $_SERVER['SCRIPT_NAME']; 48 echo "<a href='$self'>書き込みました‼</a>"; 49} 50 51function load_data() { 52 global $save_file; 53 $log = array(); 54 if (file_exists($save_file)) { 55 $txt = file_get_contents($save_file); 56 $log = unserialize($txt); 57 } 58 return $log; 59} 60 61function save_data($log) { 62 global $save_file; 63 $txt = serialize($log); 64 file_put_contents($save_file, $txt); 65}
試したこと
line 20を、コメントアウトしている部分(line 19)に変更するとエラーメッセージ自体は消えるのですが、名前は相変わらず表示されません。
補足情報(FW/ツールのバージョンなど)
・windows10
・XAMPP
PHPのバージョンは5.2.0です。
データはどのような形式になっていますか?コード内ではどこにもnameやbodyといった値に対するキーを指定する場所がないように見受けられます。
回答1件
あなたの回答
tips
プレビュー