Kozupon.com    
 
 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>

以上

 


 
 
 



Copyright 2005 Kozupon.com.