Free CGI Perl PHP Script Olive Design CGI

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

一言メッセージ掲示板に暗号化パスワード機能を追加しました。

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

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

ソース bbs04.php

<?
#ログ保存数を設定
$data_max=30;
$page_max=10;
#データファイルを設定
$data_file="log.dat";

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

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

#メイン処理
switch($mode){
  case 'reg':
    reg();
    break;
  case 'delete':
    delete($pass);
    break;
  default:
    html_view();
    break;
}
#新しいコメントが追加されたら
function reg(){
  global $pass,$comment,$data_file,$data_max;
  if(!$comment){error("コメントを入力してください。");}
  if(!$pass){error("パスワードを入力してください。");}
  $PW = crypt(($pass),abc); #パスワードを暗号化する
  $comment= htmlspecialchars ($comment);#タグの無効化
  $data_all = file($data_file);#データファイルを一行づつ読み込み
  $fp = @fopen($data_file,"w") or die("ログファイルが開けません");
  flock($fp,LOCK_EX);
  #新しいコメントをデータとして整形
  $top_no   =explode (",",$data_all[0]); 
  $new_no   =$top_no[0];
  $new_no++;
  $new_data = "$new_no,$comment,$PW\n";
  fwrite($fp,$new_data); #新しいコメントを書き込み
  for ($i=0; $i<$data_max;$i++){
    fwrite($fp,$data_all[$i]);#古いコメント書き込み
  }
  flock($fp,LOCK_UN);
  fclose($fp);
 #メイン画面表示
  html_view();
}

#削除処理
function delete($del_pass){
  global $del_no,$data_file,$data_max;
  if(!$del_no){error("削除NOを入力してください。");}
  if(!$del_pass){error("パスワードを入力してください。");}
  #全角数字を半角に変換
  $del_no = mb_convert_kana($del_no,"n");
  $data_all = file($data_file);#データファイルを一行づつ読み込み
  for ($i=0; $i<$data_max;$i++){
    #カンマで振り分ける
    $pdata = explode (",",$data_all[$i]);
    #改行を削除
     $pdata[2]= str_replace("\n","", $pdata[2]); 
     if($pdata[0] == $del_no){
      $match_pass = crypt(($del_pass),abc); 
      if($pdata[2] != "$match_pass"){
        error("パスワードが違います。");
      }
      if($pdata[2] == "$match_pass"){
        $p_flag=1;
      }		
    }
  }
  if($p_flag ==1){
    $fp = @fopen($data_file,"w")or
die("ログファイルが開けません"); flock($fp,LOCK_EX); for ($i=0; $i<$data_max;$i++){ $pdata = explode (",",$data_all[$i]); #削除ナンバーとコメントナンバー以外 if($pdata[0] != $del_no){ #コメント書き込み直し fwrite($fp,$data_all [$i]); } } flock($fp,LOCK_UN); fclose($fp); } else{ error("削除NOが登録されていません。"); } html_view(); } function html_view(){ global $data_file,$data_no,$data_all,$page_max,$data_max; print <<<HTML <html> <head> <meta http-equiv="Content-Type" content="text/html;
charset=Shift_JIS"> <title>一言メッセージ</title></head> <body> <h4>一言メッセージを書いてください。</h4> <form method="post" action="bbs04.php" > <input type=hidden name=mode value="reg"> <br> 保存コメント数は $data_max です。<br/> 入力 => <input type=text name="comment"> <br/> パスワード<input type="password" name="pass" size=10"> <br/> <input type="submit" value="送信"></form><br/> HTML; #コメントの表示 $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"; } } print <<<HTML <br/> <form method="POST" action="bbs04.php"> 削除番号<input type=text name=del_no size=4> <input type=hidden name=mode value=delete> <br> パスワード<input type="password" name="pass" size=10"> <br/> <input type=submit value=削除></form> HTML; next_back(); print "</body></html>"; exit; } function next_back(){ global $data_no,$data_all,$page_max; if($data_no < count($data_all)){ print "<form method=post action=bbs04.php>\n"; print "<input type=hidden name=data_no value=$data_no>\n"; print "<input type=submit value=次のページ>\n"; print "</form>"; } if($data_no > $page_max ){ $data_no =$data_no-$page_max*2; print "<form method=post action=bbs04.php>\n"; print "<input type=hidden name=data_no value=$data_no>\n"; print "<input type=submit value=前のページ>\n"; print "</form>\n"; } } #エラー処理 function error($mes){ print <<<HTML <html> <head> <meta http-equiv="Content-Type" content="text/html;
charset=Shift_JIS"> <title>error</title></head> <body> <h4>error</h4> <br/> $mes <br/> </body> </html> HTML; exit; } ?>
Perl PHP Free CGI Script OliveDesign CGI

Perl PHP Free CGI Script OliveDesign CGI

プライバシーポリシー / 特定商取引法に基づく表示