簡易掲示板作成!PHPテキストファイルでの書き込みと読み出し方法

このQ&Aのポイント
  • 簡易掲示板の作成方法として、PHPのテキストファイルを利用した書き込みと読み出しのサンプルを紹介します。フォームに名前とコメントを入力し、送信ボタンを押すことで書き込みが行われます。
  • ただし、フォームに何も入力せずに送信ボタンを押すと、名前の部分のみがファイルに書き込まれてしまい、コメントの内容が空になってしまう問題が発生します。
  • 初心者でも理解しやすい修正方法としては、書き込み前に入力内容が空であるかをチェックし、空であれば書き込みを行わないようにすることです。具体的な実装方法は、条件分岐を利用してフォームの入力内容のチェックを行い、不備があれば処理を終了させるようにします。
回答を見る
  • ベストアンサー

PHPのテキストファイルを使った簡素な掲示板

テキストファイルを使って 簡単な掲示板での書き込み、読み出しのサンプルを練習しています。 書き込み、書き出しは何とかできるようなのですが フォームに何も記入していない状態で送信ボタンを押したり 再読み込みをすると 「さん」の部分だけファイルに書き込まれ、 そして出力されてしまいます。 ------------------------------------------------------------- <div class="obi">このページに関するコメントをどうぞ</div> <div id="form"> <form method="post" action=""> <p><input type="text" name="name">【名前】</br> <textarea name="kakikomi" cols="60" rows="5"></textarea></br> <input type="submit" value="送信"></p> </form> </div> <?php $data = file_get_contents("keiji.txt"); $name = htmlspecialchars(@$_POST["name"]); $kakikomi = htmlspecialchars(@$_POST["kakikomi"]); if(isset($name)){ $name = "$name さん"; $data = '<strong>'.$name.'</strong>&nbsp&nbsp'.$kakikomi.'<hr><p>'.$data.'</p>'; file_put_contents("keiji.txt", $data); echo "<p>$data</p>"; }else{ exit; } ------------------------------------------------------------- フォームに何も記入しなかった場合 テキストファイルになにも書き込みされないようにするには どこを修正したらよいのでしょうか? 難しい構文ではなく初心者でも分かりやすい方法があれば お教えください。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>フォームに何も記入しなかった場合 >テキストファイルになにも書き込みされないようにするには 値が空文字列でないかどうかチェックする if (($name !== '')and($kakikomi !== '')) { // データ書き込みの処理 } else { // 空だったので書き込まなかったというメッセージ } 下記のような流れにしておくのがいいと思います。 $errmsg = array(); if ($name === '') { $errmsg[] = '名前が入力されていません'; } if ($kakikomi === '') { $errmsg[] = '書き込みが入力されていません'; } if (count($errmsg) === 0) { // データを処理 } else { print '<div class="errmsg">' . implode('<br>', $errmsg) . '</div>; } (蛇足) この書き込み処理って $data = '<strong>'.$name.'</strong>&nbsp&nbsp'.$kakikomi.'<hr><p>'.$data.'</p>'; 更新するたびに、p要素が深くなっていきますよね?大丈夫なんですか?

okdayook
質問者

お礼

アドバイスどおりにやっているのですが なかなか上手くいきません。 というよりも少し間CSSの勉強をしていたら PHPの文法をかなり忘れていて また最初から勉強し直ししないといけいみたいです・・・ とにかくありがとうございました。

okdayook
質問者

補足

教えていただいた方法ではできなかったのですが なんとか別の方法で思った結果がでました。 ただどうしてこういう結果が得られるという 構文自体を理解できていないので また最初から勉強します。

関連するQ&A

  • スマホ用PHP掲示板

    PHPで掲示板を簡易的に作ったのですが スマートフォン(iPhone)にも対応したく思います。 端末用にコーティングするにはどのような記述をしたら良いでしょうか。 【ソース】 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ <html> <head><title>TEST</title></head> <body> <p>掲示板</p> <form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?>"> <input type="text" name="personal_name"><br><br> <textarea name="contents" rows="8" cols="40"> </textarea><br><br> <input type="submit" name="btn1" value="投稿する"> </form> <?php if($_SERVER["REQUEST_METHOD"] == "POST"){ writeData(); } readData(); function readData(){ $keijban_file = 'keijiban.txt'; $fp = fopen($keijban_file, 'rb'); if ($fp){ if (flock($fp, LOCK_SH)){ while (!feof($fp)) { $buffer = fgets($fp); print($buffer); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました'); } } fclose($fp); } function writeData(){ $personal_name = $_POST['personal_name']; $contents = $_POST['contents']; $contents = nl2br($contents); $data = "<hr>¥r¥n"; $data = $data."<p>投稿者:".$personal_name."</p>¥r¥n"; $data = $data."<p>内容:</p>¥r¥n"; $data = $data."<p>".$contents."</p>¥r¥n"; $keijban_file = 'keijiban.txt'; $fp = fopen($keijban_file, 'ab'); if ($fp){ if (flock($fp, LOCK_EX)){ if (fwrite($fp, $data) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました'); } } fclose($fp); } ?> </body> </html> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ ご教示の程宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 入力フォームとファイル添付を同時に実行したい。

    PHPもhtmlもはじめたばかりの超初心者です。 入力フォームの文字と添付ファイルを同時にPOSTしたいの ですがjavascriptを使わないと無理でしょうか? ******************************** <html> <head> <title>TESTフォーム</title> </head> <body> <form action="test.php" method="post"> 名前:<br> <input type="text" name="name" size="30" value=""><br> <P> &nbsp;&nbsp;&nbsp;ジャンル:<br>  <input type="radio" name="bunrui" value="abc">あ  <input type="radio" name="bunrui" value="bbb">い  <input type="radio" name="bunrui" value="sss">う </P> &nbsp;&nbsp;&nbsp;内容:<br> <textarea name="comment" cols="50" rows="5"></textarea><br> <P> 添付:<input type="file" name="file1"> <P> <input type="submit" value="投稿する"> </form> </body> </html> ******************************** 添付の部分をどうやってtest.phpに渡せばよいかわかりません。 <form action="test2.php" method="post"> 添付:<input type="file" name="file1"> と付け加えても無駄というところまでは調べております。 個別に書いたphpで添付したファイルをsambaサーバーに保存 、入力フォームをtxtにしてsambaへ保存するところまではできました。 ただ同時実行だとどう書けばよいか悩んでおります。 こういうレベルは質問してはいけないんですかねえ・・・ どなたか教えていただけると幸いです。

  • PHPで作る掲示板について

    これを実行するとページは表示されるのですが、名前や題名、本文に日本語を入力すると 例えば名前に「山田」と入れ送信すると投稿者のところに何も出ません どうすれば解決できますか?環境はWin7でサーバは用意されたものを使用しているので 設定等の必要はありません。 画像は上が送信前、下が送信後です <?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>

    • 締切済み
    • PHP
  • 複数のプログラムを1ページで行えますか?

    PHP始めたばかりです。 下記の事で困っています。 単体ではうまく動くのに二つ並べると動作しません。 どうしたら複数のプログラムを1ページで行えますか? どこかに番号を付けて同じにならないようにするのかなとは思いますが分かりません。 ご教示お願い致します。 <?php $file = 'txt/a0001.txt'; if ($_POST['button_save']) { //POSTされたときは書き込み処理をする $fp = @fopen($file, 'w'); if ($fp == false) { print "このファイルには書き込みできません。<br>\n"; } else { $contents = htmlspecialchars($_POST['textBox_contents']); fwrite($fp, $contents); fclose($fp); print "書き込み完了しました。<br>\n"; } } $text = file_get_contents($file); $text = htmlspecialchars($text); ?> <textarea name="textBox_contents" cols="40" rows="2"><?php echo($text); ?></textarea> <br/> <input type="submit" name="button_save" value="保存"> </form> <p> <p> <?php $file = 'txt/b0001.txt'; if ($_POST['button_save']) { //POSTされたときは書き込み処理をする $fp = @fopen($file, 'w'); if ($fp == false) { print "このファイルには書き込みできません。<br>\n"; } else { $contents = htmlspecialchars($_POST['textBox_contents']); fwrite($fp, $contents); fclose($fp); print "書き込み完了しました。<br>\n"; } } $text = file_get_contents($file); $text = htmlspecialchars($text); ?> <textarea name="textBox_contents" cols="40" rows="2"><?php echo($text); ?></textarea> <br/> <input type="submit" name="button_save" value="保存"> </form>

    • ベストアンサー
    • PHP
  • メールフォームのPHPについて質問です。

    以下のようなメールフォームを作ったのですが何故か値の受け渡しが上手くいきません。 以前どこかのサイトを参考にして作ったもので別で自分の作ったサイトでは問題なく受け渡しができたのですが、なぜか今回はできません。 自分が作って成功したサイトをそのままサーバーにアップロードしても出来ないのがよくわからないのです。 どうすれば受け渡しがうまくいくのでしょうか? どなたか知恵を分けていただきたいです。何卒よろしくお願いいたします。 ▼ここからinquiry.html▼ <div id="main_inquiry"> <div id="box_inquiry"> <h1>お問い合わせ</h1> <div id="form"> <form method="POST" action="inquiry_check.php"> <p class="form">お名前</p> <p class="text"><input type="text" name="name" size="50"><br></p> <p class="form">電話番号</p> <p class="text"><input type="text" name="tel" size="50"><br></p> <p class="form">Eメール</p> <p class="text"><input type="text" name="email" size="50"></p><br> <p class="form">備考</p> <p class="text"><textarea name="bikou" cols="50" rows="10"></textarea></p> </div> <!---------form-END------------------------------> <div id="submit"> <input type="submit" value="確認" class="submit"> <input type="reset" value="リセット" class="reset"> </div> <form method="POST" action="inquiry_check.php"> </div> ▲inquiry.html終了▲ ▼ここからinquiry_check.php▼ <div id="box_check"> <h1 class="headding11">問い合わせチェック</h1> <?php $name=htmlspecialchars($_POST["name"]);// if ($name == ""){ $show_name = "<font color='#000'><strong>名前が入力されていません</font></strong>"; $err_flg = 1; } else { $show_name = $name; } $tel=htmlspecialchars($_POST["tel"]);// if ($tel == ""){ $show_tel = "<font color='#000'><strong>電話番号が入力されていません</font></strong>"; $err_flg = 1; } else { $show_tel = $tel; } $email=htmlspecialchars($_POST["email"]);// if ($email == ""){ $show_email = "<font color='#000'><strong>e-mailが入力されていません</font></strong>"; $err_flg = 1; } else { $show_email = $email; } $bikou=htmlspecialchars($_POST["bikou"]);// if ($bikou == ""){ $show_bikou = "<font color='#000'><strong>備考が入力されていません</font></strong>"; $err_flg = 1; } else { $show_bikou = $bikou; } if ($err_flg == 1){ $show_form = ""; } else { $show_form = " <input name='name' type='hidden' value='". $name ."'> <input name='tel' type='hidden' value='". $tel ."'> <input name='email' type='hidden' value='". $email ."'> <input name='bikou' type='hidden' value='". $bikou ."'> <input name='submit' type='submit' value='送信' class='soushin'> "; } ?> <form name="mailform" method="post" action="inquiry_finish.php"> <P align="center"><b class="kakunin">お客様情報確認</b></P> <table class="check" width="685px" border="0" cellspacing="1" cellpadding="5"> <tr> <td bgcolor="#EBEBEB" width="200"> 氏名</td> <td width="540"><? echo $show_name ?></td> </tr> <tr> <td bgcolor="#EBEBEB"> 電話番号<font color="#FFFFFF">  </font></td> <td><? echo $show_tel ?></td> </tr> <tr> <td bgcolor="#EBEBEB"> 電子メール</td> <td ><? echo $show_email ?></td> </tr>  <tr> <td bgcolor="#EBEBEB"> お問い合わせ内容</td> <td ><? echo $show_bikou ?></td> </tr> </table> <div align=""> <? echo $show_form ?> <input name="submit" type="button" value="戻る" class="mouse" onClick="history.back()"> </div> </div> <div id="side_menu_check"> </div> </div> <div id="footer"> </div> ▲inquiry_check.php終了▲

    • ベストアンサー
    • PHP
  • phpの掲示板で新しい順に表示したい

    php初心者です。 phpで掲示板を作っています。 新しい順に表示したいのですが、やり方がわかりません。 古い順に表示するやり方はわかるのですが、どうやったらよいでしょうか。 古い順のソースです <html> <head> <title>一行掲示板</title> </head> <body> <h2>一行掲示板</h2> 書き込む内容を入力してください。<hr color="black"> <form name="form" action="./sample01.php" method="POST"> タイトル      <input type=text name="title" action="./sample01.php" size="30" method="POST"><br><br> 名前          <input type=text name="namae" action="./sample01.php" size="30" method="POST"><br><br> メッセージ  <textarea name="body" rows="5" cols="50"></textarea> <input name="write" type="submit" value="書込"> <input name="write" type="reset" value="リセット"><hr> </form> <?php $data = file("../php/test1.txt"); for($i=0; $i<sizeof($data); $i++){ print "タイトル.${i}:<br>\n名前.${i}:<br>\n記事NO.${i}:${data[$i]}<br>\n<hr>"; } ?> <br> <a href="../phpcollect/index.html">トップページへ</a> </body> </html> どうかわかる方おりましたらご教授お願いします。

    • 締切済み
    • PHP
  • 「同一phpページ内に一言掲示板」の作り方。

    PHP勉強中の初心者です。 bbs.phpに投稿フォームと投稿内容を表示するページ、bbs2.phpにはエラー処理&投稿完了メッセージと、別々に作る方法は下記で一応出来たのですが、これらを一つの.phpに纏めるにはどうすればいいのでしょうか? bbs2.phpの方に逐一入っている、 exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); とかのエラーメッセージの表示は、全てformタグの前後辺りに移して、です。 試行錯誤してみましたが、変なエラーばっかり出てしまいます。 うまい方法がありましたら、変数・関数の追加や削除は自由です。 どうかご教授の方、よろしくお願いします。 【bbs.txt(例)】 <strong>名前:</strong>テスト2&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんばんは&emsp;<strong>時間:</strong>09月19日 20時02分 <strong>名前:</strong>テスト1&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんにちは&emsp;<strong>時間:</strong>09月19日 13時48分 【bbs.php】 <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <form action="bbs2.php" method="post"> 名前:<input size="15" type="text" name="name" value="">&emsp;コメント:<input size="30" type="text" name="comment">&emsp;<input type="submit" value="送信">&nbsp;<input type="reset"> </form> <hr> <?php $lines = file('bbs.txt'); foreach ($lines as $l) { print "</p>" . $l . "</p>\n"; } ?> <hr> 【bbs2.php】 <?php if (mb_strlen($_POST['name']) === 0 && mb_strlen($_POST['comment']) === 0) { exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['name']) !== TRUE || mb_strlen($_POST['name']) === 0) { exit('名前を入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['comment']) !== TRUE || mb_strlen($_POST['comment']) === 0) { exit('コメントを入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20 && mb_strlen($_POST['comment']) > 100) { exit('名前(20文字以内)とコメント(100文字以内)が両方文字数制限を超えています。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20) { exit('名前は20文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['comment']) > 100) { exit('コメントは100文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (preg_match('/http/', $_POST['comment']) > '0' ) { exit('スパム対策により、URL付きのコメントは投稿できません。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } $name = htmlspecialchars($_POST['name']).'&thinsp;<font size="2">さん</font>'; $comment = htmlspecialchars($_POST['comment']); $now = date('m月d日 H時i分'); $post_data = "<strong>名前:</strong>$name&emsp;<strong>コメント:</strong>$comment&emsp;<strong>時間:</strong>$now\n"; $read_data = file_get_contents('bbs.txt'); file_put_contents('bbs.txt',$post_data . $read_data); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <p>コメントを投稿しました。</p> <p><a href="bbs.php">一覧へ戻る</a></p> </body> </html>

    • ベストアンサー
    • PHP
  • 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>

    • 締切済み
    • PHP
  • PHP 掲示板について

    ファイル名:bbs.html 掲示板タグを一を記載します。 <html> <head> <title>ミニ掲示板</title> </head> <div class="menu"> l<a href="~~~">~~~</a> l<a href="~~~">~~~</a> </div> <body> <p>※記事削除は、製作者へメールをクリックし、用件には【掲示板 記事削除の件】内容には、【記事削除キーを入力し、送信してください。】<br> ミニ掲示板(<a href="bb.html">リロード</a>)<hr> <form method="post" action="bbs.php"> <input type="hidden" name="mode" value="write"> 名前:<input type="text" name="name" size="20"><br> メールアドレス:<input type="text" name="name" size="40"><br> 用件:<input type="text" name="name" size="20"><br> 記事削除キー:<INPUT size="20" type="password" value="" name="pass"> <p> 内容:<br> <textarea name="message" rows="5" cols="30"></textarea><br> <input type="submit" value=" 投稿する "> </form> <hr> 【投稿する】を押すとbbs.phpに繋がるのですが、【投稿する】を押したら、bbs.htmlの【最初の場面】の下に自動的に入るようにしたいのですが。! どうすればよいのでしょうか。? ♪宜しくお願いいたします。♪【(ーー;)】

    • ベストアンサー
    • PHP
  • PHPの掲示板について

    下記のソースコードを実行したところページは表示されるのですが 記事を書き込み画像を添付して送信することができませんでした。 どのように修正すればいいでしょうか <?php $con = pg_connect("dbname=postgres user=postgres password=postgres"); if ($_POST['write']) { $name = get_form($_POST['name']); if (strlen($name) > 100) exit(); if (!$name) $name = "名無しさん"; $title = get_form($_POST['title']); if (strlen($title) > 100) exit(); if (!$title) $title = "無題"; $contents = get_form($_POST['contents']); if (strlen($contents) > 500) exit(); if (!$contents) error("本文を入力してください"); $delkey = get_form($_POST['delkey']); $expire = time() + 3600 * 24 * 30; setcookie("name", $name, $expire); setcookie("delkey", $delkey, $expire); $tname = $_FILES['image']['tmp_name']; if ($tname) { if (!is_uploaded_file($tname)) error("不正なアップロード"); $type = $_FILES['image']['type']; if ($type != "image/jpeg" && $type != "image/pjpeg") { error("JPEG形式ではありません"); } $rs = pg_query($con, "select last_value from pgbbs3_no_seq"); $no = pg_fetch_result($rs, 0, 0) + 1; $path = "image/$no.jpg"; move_uploaded_file($tname, $path); $path_t = "image/{$no}_t.jpg"; list($sw, $sh) = getimagesize($path); $dw = 128; $dh = $dw * $sh / $sw; $src = imagecreatefromjpeg($path); $dst = imagecreatetruecolor($dw, $dh); imagecopyresized($dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh); imagejpeg($dst, $path_t); } pg_query($con, "insert into pgbbs3(name,title,contents,delkey) values('$name','$title','$contents','$delkey')"); } else { $name = $_COOKIE['name']; $delkey = $_COOKIE['delkey']; } if ($_POST['delete']) { $no = get_form($_POST['no']); $delkey = get_form($_POST['delkey']); $rs = pg_query($con, "delete from pgbbs3 where no=$no and delkey='$delkey'"); if (pg_affected_rows($rs) == 0) error("記事削除に失敗しました"); } // フォームの文字列を取得する function get_form($str) { $str = pg_escape_string(htmlspecialchars($str)); $str = ereg_replace("\n|\r|\r\n", "<br>", $str); return $str; } // エラー表示して終了 function error($msg) { print "<p><font color='red'>$msg</font></p>\n"; exit(); } ?> <!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>画像アップロード掲示板</title> </head> <body> <p>JPEGファイルのみアップロードできます。</p> <form method="post" action="pgbbs3.php" enctype="multipart/form-data"> お名前:<input type="text" name="name" value="<?php print $name ?>"><br> 題 名:<input type="text" name="title"><br> <input type="hidden" name="max_file_size" value="30000"> 画像:<input type="file" name="image"><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="送信"> </form> <hr> <form method="post" action="pgbbs3.php"> 記事番号:<input type="text" name="no"> 削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"> <input type="submit" name="delete" value="記事削除"> </form> <?php $rs = pg_query($con, "select * from pgbbs3 order by no desc"); while ($row = pg_fetch_array($rs)) { $time = substr($row['time'], 0, 19); $no = $row['no']; print "<hr>No.{$no} <strong>{$row['title']}</strong>"; print " 投稿者:{$row['name']} 投稿日時:$time"; $fn = "image/{$no}.jpg"; $fn_t = "image/{$no}_t.jpg"; if (file_exists($fn)) print "<br><br><a href='$fn'><img src='$fn_t' border='0'></a>"; print "<br><br>{$row['contents']}\n"; } pg_close($con); ?> </body> </html>

    • 締切済み
    • PHP

専門家に質問してみよう