Free CGI Perl PHP Script Olive Design CGI

一言メッセージ掲示板 その3

掲示板に1ページ内で表示するコメント数を設定できる機能をつけてみました。

ファイル名bbs03.phpを作成し、下のソースを貼り付けて設置します。 同じ階層に空のファイルlog.datを作成してパーミションを666にします。

ファイルの文字コードはSHIFT-JISで保存します。

ソース bbs03.php

<?php
#ログ保存数を設定
$data_max=30;
#一ページに表示するコメント数
$page_max=10;
#データファイルを設定
$data_file="log.dat";

$comment=$_POST[comment];
$del_no=$_POST[del_no];
$data_no=$_POST[data_no];

mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");

#新しいコメントが追加されたら
if(!empty ($comment)){
  $comment= htmlspecialchars ($comment);#タグの無効化
  $data_all = file($data_file);#データファイルを一行づつ読み込み
  $fp = fopen($data_file,"w");
  flock($fp,2);
  #新しいコメントをデータとして整形
  $top_no   =explode (",",$data_all[0]); 
  $new_no   =$top_no[0];
  $new_no++;
  $new_data = "$new_no,$comment\n";
  fwrite($fp,$new_data); #新しいコメントを書き込み
  for ($i=0; $i<$data_max;$i++){
    fwrite($fp,$data_all[$i]);#古いコメント書き込み
  }
  flock($fp,3);
  fclose($fp);
  unset ($data_all);
}
elseif(!empty ($del_no)){
  #削除ナンバーが入っていたら
  $del_no = mb_convert_kana($del_no,"n");#全角数字を半角に変換
  $data_all = file($data_file);#データファイルを一行づつ読み込み
  $fp = fopen($data_file,"w");
  flock($fp,2);
    for ($i=0; $i<$data_max;$i++){
      $pdata = explode (",",$data_all[$i]); 
      if($pdata[0] != $del_no){#削除ナンバーとコメントナンバー以外
        fwrite($fp,$data_all[$i]);#コメント書き込み直し
      }
    }
  flock($fp,3);
  fclose($fp);
  unset ($data_all);
}
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=Shift_JIS"> <title>一言メッセージ</title></head> <body> <h4>一言メッセージを書いてください。</h4> <form method="post" action="bbs03.php" ><br/> 保存コメント数は<? echo "$data_max"; ?>です。<br/> 入力 => <input type=text name="comment"> <input type="submit" value="送信"><br/> <?php #コメントの表示 $data_all = file($data_file); if(empty($data_no)){ $data_no=0; } for( $i = 0; $i < $page_max ;$i++,$data_no++){ if(!empty($data_all[$data_no])){ $pdata = explode (",",$data_all[$data_no]); echo "$pdata[0] =>$pdata[1]<br/>\n" ; } } ?> <form method="POST" action="bbs03.php"> <br/> 削除番号<input type=text name=del_no size=4><br/> <input type=submit value=削除></form> <?php #改ページ処理 if($data_no < count($data_all)){ echo "<form method=post action=bbs03.php>\n"; echo "<input type=hidden name=data_no value=$data_no>\n"; echo "<input type=submit value=次のページ>\n"; echo "</form>"; } if($data_no > $page_max ){ $data_no =$data_no-$page_max*2; echo "<form method=post action=bbs03.php>\n"; echo "<input type=hidden name=data_no value=$data_no>\n"; echo "<input type=submit value=前のページ>\n"; echo "</form>\n"; } ?> </body> </html>
Perl PHP Free CGI Script OliveDesign CGI

Perl PHP Free CGI Script OliveDesign CGI

OliveDesign CGIプライバシーポリシー