KENT-WEB サポートコーナー 過去ログ [ 0447 ]


記事No: 10984
投稿日: 2012/09/23(Sun) 23:56:17
タイトルJoyful.cgi 3.7のレス数制限方法
ID情報: yukia
投稿者: yukia
URLhttp://125.0.181.3/users/tours2/joyful/

Joyful.cgi 3.7を使わせて頂いております。

目下構築中です。
現在、親記事に対し、レスを無限に付けることができてしまう仕様(標準の状態)になっています。
この状態ですと、ページ内の親記事の表示数を制限していても、特定の親記事に対し、画像付のレスを沢山投稿されることで、そのページが非常に重くなってしまうと思います。
私としては、レス記事にも画像を添付できる状態のまま利用したいのです。

そこで、親記事に対して付けられるレスの数を制限できればと思い、過去ログを検索したところ
http://www.kent-web.com/support/old/62/0058.html
この記事を発見したのですが、joyful.cgiは、この記事当時から大きく改良が繰り返されており、恥ずかしながら私のスキルでは現在のバージョンに応用することが困難でしたので、改めて質問させて頂きました。

Joyful.cgi 3.7で、親記事に対するレスの投稿数を(5件までとか)制限できるようにする記述をご教示賜りたく存じます。
何卒よろしくお願いいたします。


記事No: 10990
投稿日: 2012/09/26(Wed) 02:25:25
タイトルRe: Joyful.cgi 3.7のレス数制限方法
ID情報: chat
投稿者: ひらり

こんにちは。
過去ログをよく見てみると、今とそんなに変わってないですよ〜。
なので、過去ログとまったく同じ方法でのやり方を書いてみます。

まずinit.cgiを開き、設定項目のところにどこでもいいから
以下を追加してください。

# 返信数の制限
$cf{res_limit} = 5;


そうしたらregist.cgiを開き、117行目付近に
トップソートあり というのがあると思いますが、
以下と見比べながら、
##←←←←←(追加)
と書いてある行を追加していってください。



# レス記事:トップソートあり
} elsif ($in{reno} && $cf{topsort}) {
my $i=1; ##←←←←←(追加)
my ($flg,$match,@tmp);
while (<DAT>) {
my ($no2,$reno2,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ex2,$w2,$h2,$chk) = split(/<>/);

# 親記事あり
if ($in{reno} == $no2) {
if ($reno2) { $flg = 1; last; }
$match = 1;
push(@data,$_);

# レス記事あり
} elsif ($in{reno} == $reno2) {
push(@data,$_);
$i++; ##←←←←←(追加)
# 親記事の直下に置く
} elsif ($match == 1 && $in{reno} != $reno2) {
if ($i > $cf{res_limit}) {last;} ##←←←←←(追加)
$match = 2;
push(@data,"$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$ext<>$w<>$h<>0<>\n");
push(@tmp,$_);

} else {
push(@tmp,$_);
}
}
if ($flg || !$match) {
close(DAT);
&error("不正な返信要求です");
}
if ($i > $cf{res_limit}) { &error("書き込みありがとうございます<BR><BR>申\し訳ありませんが返信は$cf{res_limit}件までです"); } ##←←←←←(追加)
# 最初のレス記事のケース
if ($match == 1) {
push(@data,"$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$ext<>$w<>$h<>0<>\n");
}
# レス記事1式をトップへ
push(@data,@tmp);
unshift(@data,"$no<>$addr<>$time<>\n");

# レス記事:トップソートなし
} else {
my $i=1; ##←←←←←(追加)
my ($flg,$match);
while (<DAT>) {
my ($no2,$reno2,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$col,$ex2,$w2,$h2,$chk) = split(/<>/);

if ($match == 0 && $in{reno} == $no2) {
if ($reno2) { $flg = 1; last; }
$match = 1;

} elsif ($match == 1 && $in{reno} != $reno2) {
if ($i > $cf{res_limit}) {last;} ##←←←←←(追加)
$match = 2;
push(@data,"$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$ext<>$w<>$h<>0<>\n");
}
push(@data,$_);
$i++ if ($in{'reno'} eq $reno2); ##←←←←←(追加)
}
if ($flg || !$match) {
close(DAT);
&error("不正な返信要求です");
}
if ($i > $cf{res_limit}) { &error("書き込みありがとうございます<BR><BR>申\し訳ありませんが返信は$cf{res_limit}件までです"); } ##←←←←←(追加)
if ($match == 1) {
push(@data,"$no<>$in{reno}<>$date<>$in{name}<>$in{email}<>$in{sub}<>$in{comment}<>$in{url}<>$host<>$crypt<>$in{color}<>$ext<>$w<>$h<>0<>\n");
}
unshift(@data,"$no<>$addr<>$time<>\n");
}


> Joyful.cgi 3.7を使わせて頂いております。
>
> 目下構築中です。
> 現在、親記事に対し、レスを無限に付けることができてしまう仕様(標準の状態)になっています。
> この状態ですと、ページ内の親記事の表示数を制限していても、特定の親記事に対し、画像付のレスを沢山投稿されることで、そのページが非常に重くなってしまうと思います。
> 私としては、レス記事にも画像を添付できる状態のまま利用したいのです。
>
> そこで、親記事に対して付けられるレスの数を制限できればと思い、過去ログを検索したところ
> http://www.kent-web.com/support/old/62/0058.html
> この記事を発見したのですが、joyful.cgiは、この記事当時から大きく改良が繰り返されており、恥ずかしながら私のスキルでは現在のバージョンに応用することが困難でしたので、改めて質問させて頂きました。
>
> Joyful.cgi 3.7で、親記事に対するレスの投稿数を(5件までとか)制限できるようにする記述をご教示賜りたく存じます。
> 何卒よろしくお願いいたします。


記事No: 10994
投稿日: 2012/09/26(Wed) 15:03:01
タイトルRe^2: Joyful.cgi 3.7のレス数制限方法
ID情報: yukia
投稿者: yukia

ひらり様、ありがとうございます!

joyful.cgiにヒントがあるのではないかと、ずっとそればかり追っていたこともあり、regist.cgiとは全く気がつきませんでした。
丁寧なソースも頂き、大変助かりました。
本当にありがとうございました!


[検索ページ] [掲示板]