最初の編集時に編集確認画面を表示します。
[confirm edit]
最初に編集を行う際に確認画面を表示し、編集を行うかどうかの確認を行います。
最近になって増えてきているSPAM書き込みの対応になればと思っています。
確認画面での選択項目は変更可能&表示順はランダムなので、海外からのSPAMに特に有効だと思われます。
また、記名有りのコメントを投稿しても、編集可能状態になります。
関連するカスタマイズ
resource.txtへの追加
confirmmsg | 編集を行いますか?初回編集時のみ、Cookieにデータを保存する必要があります。 |
confirmyes | 編集を行います。 |
confirmno | 編集を行いません。 |
confirmno には : で区切って複数の選択肢を記述する事が出来ます。
例)
confirmno=編集を行いません。:考え中です。:やっぱりやめます。
@cookie_listへの追加
myconfirmを追加します。
my @cookie_list = ('mypassword','myname','myindexlooks','mycss','myconfirm'); # yakty add [use cookie]
check_confirm()追加
# yakty add [confirm edit] start sub check_confirm { if($form{myname} ne ""){ &set_cookie('myconfirm', $resource{confirmyes}); return 0; } elsif($form{myconfirm} eq $resource{confirmyes}){ return 0; } else { &print_confirmform; return 1; } } # yakty add [confirm edit] end
print_confirmform()追加
# yakty add [confirm edit] start sub print_confirmform { my $page = $form{mypage}; &print_header($page); print <<"EOD"; <form action="$url_cgi" method="post" class="confirm"> <p> $resource{confirmmsg} <br> EOD foreach my $k (keys %form){ next if($k eq 'myconfirm'); print qq(<input type="hidden" name="@{[ &escape($k) ]}" value="@{[ &escape($form{$k}) ]}">\n); } my @result = ($resource{confirmyes}, split(/:/, $resource{confirmno})); while(@result){ my $r = splice(@result, int(rand(scalar(@result))), 1); my $er = &escape($r); print qq(<input type="radio" name="myconfirm" value="$er">$er<br>\n); } print <<"EOD"; <input type="submit"> </p> </form> EOD &print_footer($page); } # yakty add [confirm edit] end
do_comment()内の変更
最初の方の適当な箇所に下記の処理を追加。
return if(&check_confirm()); # yakty add [confirm edit]
do_edit()内の変更
最初の方の適当な箇所に下記の処理を追加。
return if(&check_confirm()); # yakty add [confirm edit]