一言メッセージ掲示板 その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
|
