#author("2021-05-18T01:19:08+09:00","","")
#author("2021-05-18T01:31:23+09:00","","")
**[[質問箱/5413]] [#medbcb59]
|RIGHT:70|LEFT:410|c
|~カテゴリ|その他|
|~サマリ|入力済みテキストと重複しているものをはじきたい|
|~バージョン||
|~投稿者|[[たけし]]|
|~状態|質問|
|~投稿日|&new{2021-05-12 (水) 01:23:40};|
***質問 [#o7fa4dab]
コメント機能等でメンバー募集の告知スペースを作ったところ、利己的な人が連投しログを流したり自分をより多く表示させようとするズルが横行して困っています。
ログの中に同じテキスト(判定は入力されたIDナンバーに当たる数桁の英数字)がある場合に、新たに追加できなくする方法はありませんでしょうか?

最低限の入力内容は
・IDナンバー
それ以外に出来ればコメントやユーザー名程度も入力できれば目的を達することが出来そうな気がします。

ページ数が増えますがTrackerを使って(ページ名をID)できないかと思いましたが、重複する場合ページ名+1~が追加されていくだけで連投ページが乱立するのが目に見えています。

検索はしてみたのですが、検索が下手なのか目的を実現できそうなものは見つけられず行き詰っています。
お知恵をお貸しください。

***回答 [#pa9df47b]
- pcomment.inc.php内(foreach ($data as $line) { って感じの箇所)で既存のデータをざーっと確認する処理があるっぽいので、そこで新しいデータと比較して被ったら何々~みたいな処理を追加できるんじゃないでしょうか。 -- [[ぬぺぺ]] &new{2021-05-16 (日) 20:12:16};
- プラグインでそういうのがあるかは不明です…。 -- [[ぬぺぺ]] &new{2021-05-16 (日) 20:12:33};
- Pluginではじくとか、JavaScriptではじくようなことは無理やりできなくもないですが、「編集」は防げないので基本的にPukiWikiのようなWikiシステムは悪意を持った攻撃者には弱いです。(正規の手順で書き換えられてしまう) 以下は「お名前」と一致する文字列が本文に含まれていたら投稿ストップするコードです。 -- [[umorigu]] &new{2021-05-18 (火) 01:14:31};
 (function(){
  function handleCommentPlugin(form, namePrevious) {
  function handleCommentPlugin(form) {
    form.addEventListener('submit', function(evt) {
      var name = form.name && form.name.value;
      if (name) {
        var body = document.getElementById('body');
        if (body.textContent.indexOf(name) >= 0) {
        var links = body.querySelectorAll('a');
        var found = false;
        links.forEach(function(a) {
          if (a.textContent.indexOf(name) >= 0) {
            found = true;
          }
        });
        if (found) {
          alert('User ' + name + ' already commented.');
          evt.preventDefault();
          return;
        }
      }
    }, false);
  }
  function nameCheckOnLoad() {
    if (!document.querySelectorAll) return;
    var elements = document.querySelectorAll('input[type=hidden][name=plugin][value=comment],input[type=hidden][name=plugin][value=pcomment]');
    for (var i = 0; i < elements.length; i++) {
      var form = elements[i].parentElement.parentElement;
      handleCommentPlugin(form);
    }
  }
  window.addEventListener &&
    window.addEventListener('load', nameCheckOnLoad);
 })();


#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.058 sec.

OSDN