• 締切済み

PHPで作る掲示板のプログラムについて

これを実行するとページは表示されるのですが、名前や題名、本文に日本語を入力すると 例えば名前に「山田」と入れ送信すると投稿者のところに何も出ません どうすれば解決できますか? <?php $lines = file('bbs2.txt'); if ($_POST['write']) { $items = explode("\t", $lines[0]); $no = $items[0] + 1; $name = htmlspecialchars($_POST['name']); if (!$name) $name = "名無しさん"; $mail = htmlspecialchars($_POST['mail']); $title = htmlspecialchars($_POST['title']); if (!$title) $title = "無題"; $contents = htmlspecialchars($_POST['contents']); $contents = str_replace("\r\n", "<br>", $contents); $contents = str_replace("\r", "<br>", $contents); $contents = str_replace("\n", "<br>", $contents); $delkey = htmlspecialchars($_POST['delkey']); $time = date("Y/m/d H:i:s"); $expire = time() + 3600 * 24 * 30; setcookie("name", $name, $expire); setcookie("mail", $mail, $expire); setcookie("delkey", $delkey, $expire); $data = "$no\t$name\t$mail\t$title\t$contents\t$delkey\t$time\n"; array_unshift($lines, $data); } else { $name = $_COOKIE['name']; $mail = $_COOKIE['mail']; $delkey = $_COOKIE['delkey']; } if ($_POST['delete']) { for ($i = 0; $i < count($lines); $i++) { $items = explode("\t", $lines[$i]); if ($items[0] == $_POST['delno'] && $items[5] == $_POST['delkey2']) { array_splice($lines, $i, 1); } } } if ($_POST['write'] || $_POST['delete']) { $fp = fopen('bbs2.txt', 'w'); foreach($lines as $line) fputs($fp, $line); fclose($fp); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>掲示板2</title> </head> <body> <form method="post" action="bbs2.php"> お名前:<input type="text" name="name" value="<?php print $name ?>"><br> メール:<input type="text" name="mail" value="<?php print $mail ?>"><br> 題 名:<input type="text" name="title"><br> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"><br> <textarea name="contents" cols="60" rows="5"></textarea><br> <input type="submit" name="write" value="送信"> <hr> 記事番号:<input type="text" name="delno">  削除キー: <input type="password" name="delkey2">  <input type="submit" name="delete" value="記事削除"> </form> <hr> <?php foreach($lines as $line) { $line = rtrim($line); $items = explode("\t", $line); print "No.{$items[0]} "; print "<b>{$items[3]}</b> 投稿者:"; if ($items[2]) print "<a href='mailto:{$items[2]}'>"; print $items[1]; if ($items[2]) print "</a>"; print " 投稿時間:{$items[6]}"; print "<p>{$items[4]}</p><hr>\n"; } ?> </body> </html>

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

どっちで回答していいかわからなくなってるんですが・・・ http://okwave.jp/qa/q7560263.html 文字化けしているなら、ブラウザのエンコードを変更して「どの文字セットなら化けないか」を確認してください。 もうひとつの質問への回答でも書きましたが、マルチバイト系の設定が疑わしいです。mbstring.encoding_translationとかが効いてませんか?サーバを設定した人間は内部ではutf-8しか使わないだろうと思って設定したとか(汗 http://www.php.net/manual/ja/mbstring.configuration.php#ini.mbstring.encoding-translation

tnk48
質問者

補足

回答はこちらでお願いします ブラウザのエンコードを変更したところutf-8だと山田と言う部分は正常だったのですが他の部分がおかしくなってしまいます

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

ANo.1です >どのブラウザを使用したか教えてもらえると助かります IE8とFirefoxで確認しています。 bbs2.txtに直接アクセスして内容を確認したら、どうなっていますか?

tnk48
質問者

補足

先ほど改めて書き込みを行ってみたところ、投稿者に「山田」と打ち込み送信すると投稿者:絮援”亜‥蟾道�屐のようになっており、bbs2.txtにアクセスして内容を確認しても山田ではなく文字化けした絮援”亜‥蟾道�屐が入っていました。 何がいけないんでしょうね

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

提示されたソースを手元の環境(WinXP+xampp)で試しましたが、動作します。Undefined IndexのWarningが大量に出るので問題ないとは言えませんが、少なくとも >投稿者のところに何も出ません という現象は確認できませんでした。どういう環境で試されているかを提示してください。またテキストファイル(bbs2.txt)の内容は確認されていますよね。

tnk48
質問者

補足

Win7でサーバは用意されたものを使っています、もしかしたらブラウザの問題かもしれませんね、どのブラウザを使用したか教えてもらえると助かります

関連するQ&A