- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-05-16T20:12:50+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) {
form.addEventListener('submit', function(evt) {
var name = form.name && form.name.value;
if (name) {
var body = document.getElementById('body');
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