[ 新規 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWiki/カスタマイズ/ページ編集確認

差分表示


編集前の状態に戻します。
最初の編集時に編集確認画面を表示します。

* [confirm edit]

最初に編集を行う際に確認画面を表示し、編集を行うかどうかの確認を行います。
最近になって増えてきているSPAM書き込みの対応になればと思っています。
確認画面での選択項目は変更可能&表示順はランダムなので、海外からのSPAMに特に有効だと思われます。

また、記名有りのコメントを投稿しても、編集可能状態になります。

** 関連するカスタマイズ

- [[WalWiki/カスタマイズ/クッキーを使用する]]

** 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]


03300