2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

PHPによる掲示板の作成(掲示板ソースの公開)!

1. 当サイトで運用していた掲示板のPHPソースです。


(この掲示板ソースについては、転載、改造はご自由にどうぞ!ただし、内容についての責任は当方には有りません。悪しからず。)
1)この掲示板は、PHP3で書いてある。
2)掲示板ログファイルのパス : dat/keijiban.dat
3)保存件数のデフォルト : 20件
4)keijiban.datのパーミッションは 666 に設定。

<?
/****************************************************/
// みっちゃんのPHP掲示板スクリプト Ver1.00
// 改訂版(2001-02-27)
// Program by Michiyoshi Hirono
/****************************************************/
//掲示板ログファイルへのパスを指定
$filepath = “dat/keijiban.dat”;
//保存件数を指定(デフォルトで20件表示)
$limits = “20”;
?>
<HTML LANG=”ja”>
<HEAD>
<TITLE>掲示板PHPバージョン</TITLE>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html;charset=EUC-JP”>
<META NAME=”author” CONTENT=”Michiyoshi Hirono”>
<META HTTP-EQUIV=”CONTENT-STYLE-TYPE” CONTENT=”text/css”>
<LINK REV=”MADE” HREF=”mailto:hoge@hogehoge.com”>
<LINK REL=”CONTENTS” HREF=”index.php3″>
<STYLE TYPE=”text/css”>
<!–
H1 { text-align: center }
/* H1タグを使った見出し語は,中央寄せをする */
BODY { background-image: url(back_w.gif) } 
/* 背景に,back_w.gifを置く */
P { display: block;width: 800px } 
/* Pタグで囲まれた段落は,幅を800ピクセルで表示する */
.errormsg { color: red } 
/* DIVタグのclass属性で“errormsg”を指定したテキストは,グレーで表示する */
.speaker { color: navy }
/* DIVタグのclass属性で“speaker”を指定したテキストは,ネイビー(紺)で表示する */
.title { color: silver; background-color: #666666; font-size: large; font-style: italic }
/* DIVタグのclass属性で“title”を指定したテキストは,文字を銀,背景を濃いグレー,大きなフォント,イタリック体で表示する */
.body { color: gray; font-size: small } 
/* DIVタグのclass属性で“body”を指定したテキストは,文字をグレー,小さいフォントで表示する */
.elements { display: block; margin: 0.5em } 
/* DIVタグのclass属性で“elaments”を指定したテキストは,文字サイズを1/2で表示する */
//–>
</STYLE>
</HEAD>
<BODY bgcolor=”#FFFFCC”>
<H2>Kozupon Dot Comの掲示板PHPバージョン</H2>
<TR bgcolor=”#ccffff”>
<TD width=”10%”><B><a target=”_top” href=”../index.php3″>Back</a></B></TD></TR>
<FORM ACTION=”<?echo $PHP_SELF?>” METHOD=”POST”>
<FIELDSET>
<LEGEND>新規及び返信共用掲示板の入力</LEGEND>
<DIV class=”elements”>
<LABEL FOR=”name” ACCESSKEY=”N”>お名前:</LABEL>
<INPUT TYPE=”TEXT” NAME=”speaker” SIZE=”20″ VALUE=”” TABINDEX=”1″ ID=”name”>
</DIV>
<DIV class=”elements”>
<LABEL FOR=”mail” ACCESSKEY=”T”>Mail:</LABEL>
<INPUT TYPE=”TEXT” NAME=”mail” SIZE=”30″ VALUE=”” TABINDEX=”2″ ID=”mail”>
</DIV>
<DIV class=”elements”>
<LABEL FOR=”title” ACCESSKEY=”T”>タイトル:</LABEL>
<INPUT TYPE=”TEXT” NAME=”title” SIZE=”40″ VALUE=”” TABINDEX=”3″ ID=”title”>
</DIV>
<DIV class=”elements”>
<LABEL FOR=”body” ACCESSKEY=”B”>本文:</LABEL><BR>
<TEXTAREA NAME=”body” ROWS=”5″ COLS=”70″ TABINDEX=”4″ ID=”body”>-&gt;</TEXTAREA>
</DIV>
<DIV class=”elements”>
<LABEL FOR=”url” ACCESSKEY=”T”>URL(http://も書いてね!):</LABEL>
<INPUT TYPE=”TEXT” NAME=”url” SIZE=”40″ VALUE=”” TABINDEX=”5″ ID=”url”>
</DIV>
<DIV class=”elements”>
<INPUT TYPE=”SUBMIT” NAME=”sub” VALUE=”書き込み” TABINDEX=”6″ ACCESSKEY=”W”>
<INPUT TYPE=”RESET” VALUE=”クリア” TABINDEX=”7″ ACCESSKEY=”C”>
</DIV>
</FIELDSET>
</FORM>
<HR>
<?
//ファイルの存在チェック
if (!file_exists($filepath)) {
print(“<DIV class=\”errormsg\”>ファイルがありません。</DIV><BR>\n”);
exit;
}
//書き込みボタンが押されたらファイルに書き込み
if ($sub == “書き込み”) {
//入力の項目チェック
if (!$speaker) {
print(“<DIV class=\”errormsg\”>名前が入力されていません。</DIV><BR>\n”);
exit;
}
if (!$title) {
print(“<DIV class=\”errormsg\”>タイトルが入力されていません。</DIV><BR>\n”);
exit;
}
if (!$body) {
print(“<DIV class=\”errormsg\”>本文が入力されていません。</DIV><BR>\n”);
exit;
}
//現在日付と時間ゲット
$write_time = Date(“Y-m-d ah:i”);
//メールアドレスストア(未入力可)
if (!$mail) :
$msgstr = $speaker.”\t”;
else:
$msgstr .= “<a href = mailto:”.$mail.”>”.$speaker.”</a>”.”\t”;
endif;
//現在日付と時間をストア
$msgstr .= $write_time.”\t”;
//タイトルをストア
$msgstr .= $title.”\t”;
$body = ereg_replace(“[\n\r]”,”<BR>”,$body);
//URLストア(未入力可)
if (!$url) :
$msgstr .= $body.”\n”;
else:
$msgstr .= $body.”\t”;
$msgstr .= “<a href=”.$url.”>”.$url.”</a>”.”\n”;
endif;
//現在のファイル内容をすべて配列に格納
$templog = file($filepath);
//ファイルポインタを書き込みモードでオープン
$fp = fopen($filepath,”w”);
//エラーチェック
if (!$fp) {
print(“<DIV class=\”errormsg\”>ファイル・ポインタのオープンに失敗しました。</DIV><BR>\n”);
exit;
}
fputs($fp,$msgstr);
//配列からファイルに書き戻す
for ($i = 0; $i < $limits-1; $i++) {
fputs($fp,$templog[$i]); 
}
fclose($fp);
}
//ファイルから読み込み
//ファイル・ポインタを開いてHTMLに吐き出し
$fp = @fopen($filepath,”r”);
if ($fp) {
$buf = fgets($fp,4096);
while (!feof($fp)) {
print(“<P class=\”speaker\”>”.strtok($buf,”\t”));
print(“(”.strtok(“\t”).”)</P>\n”);
print(“<P class=\”title\”>”.strtok(“\t”).”</P>\n”);
print(“<P class=\”url\”>”.strtok(“\t”).”</P>\n”);
print(“<P class=\”body\”>”.strtok(“\t”).”</P>\n”);
if (!feof($fp)) {
print(“<HR>\n”);
}
$buf = fgets($fp,4096);
}
fclose($fp);
}
?>
</BODY>
</HTML>

以上

コメント