トップページphp
982コメント390KB

スクリプト改造工房 Part3

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/02(水) 21:59ID:nr93n3do
「こういうふうにスクリプトを改造したいけどやりかたわかんないよー」
という人がいましたらここで聞いてください。
ひょっとしたらアドバイス出来るかもしれません。

前スレ
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=958370869
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=986986227
#板移動に伴い「CGI改造工房」→「スクリプト改造工房」に改名

なお、質問するときは
1)そのスクリプトのある場所(URL必須、拡張子".txt"でアップすればなお良し)
2)どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
を必ず明記しよう。
0002名無しさん@お腹いっぱい。2001/05/03(木) 03:10ID:???
http://tako.2ch.net/test/read.cgi?bbs=perl&key=986986227&st=22&to=22&nofirst=true
$goukei=$ten01+$ten02
PRINT'合計点は$goukeiです';
じゃだめかい?
0003名無しさん@お腹いっぱい。2001/05/03(木) 03:11ID:???
http://tako.2ch.net/test/read.cgi?bbs=perl&key=986986227&st=100&to=100&nofirst=true
だった
00042001/05/03(木) 03:14ID:???
http://tako.2ch.net/test/read.cgi?bbs=perl&key=981947727&st=100&to=100&nofirst=true
だった。。。。
0005名無しさん@お腹いっぱい。2001/05/03(木) 04:05ID:???
>>2-4
うーん、これだけの情報じゃ全然わかりませんよ。
その改造中のスクリプトの拡張子を".txt"に変えて
どこかにアップして、ここにURLを書いてください。
0006むぎ茶      2001/05/03(木) 06:28ID:???
> $goukei=$ten01+$ten02
> PRINT'合計点は$goukeiです';
> じゃだめかい?


だめに決まってんじゃん(n


┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
┃mugicha@360.cc  ┃
┗━━━━━━━━━┛
むぎちゃんねる
http://aho0baka.virtualave.net/bbs/bbs.cgi
メイリングリスト
http://www.freeml.com/ml_info.php?ml=bitvalley
0007向こうの912001/05/03(木) 11:00ID:65INSVJM
$goukei=$ten01+$ten02;
print'合計点は$goukeiです';
じゃだめかい?

↑ではダメでした。。
0008名無しさん@お腹いっぱい。2001/05/03(木) 16:22ID:VShMkoDc
>>7
シングルクォートをとってみるのはいかがなものか、、、
0009名無しさん@お腹いっぱい。2001/05/03(木) 16:28ID:???
↑Internal Server Errorになりますが
0010T女の竹田2001/05/03(木) 16:32ID:???
>>7
マジレスしちゃうけど、シングルクォートをダブルクォートにするといいよ。
0011T女の竹田2001/05/03(木) 18:25ID:SrCJlQfA
前スレ42のスクリプトだけど、43さんのその一の方法でやってみたら
うまくいったよ。
変更点は、451行の
@plines = <PD>;を
$pline = <PD>; に。
454-458行の
foreach $reline (@plines) {
    ($a,$b,$c,$d,$e) = split(/\,/,$reline);
$poi = "$a"*10 + "$b"*50 + "$c"*30 - "$d"*20 - "$e"*30 ;
$pnin = $a+$b+$c+$d+$e ;
}
のところを、
($a,$b,$c,$d,$e) = split(/\,/,$pline);
に。
0012T女の竹田2001/05/03(木) 18:30ID:???
↑ごめん。ちょっとまぎらわしかったかも。
下二行は変更なしだから、
($a,$b,$c,$d,$e) = split(/\,/,$pline);
$poi = "$a"*10 + "$b"*50 + "$c"*30 - "$d"*20 - "$e"*30 ;
$pnin = $a+$b+$c+$d+$e ;
に変更ってことね。

あと、463行の
print "<br>投票数 $pnin\n";
の後ろに
print "<br>内訳:とても良い $b 良い $c 普通 $a 良くない $d 最悪 $e\n";
を追加。
0013T女の竹田2001/05/03(木) 19:09ID:???
1380行と1386行の、@plines = <FD>;も、同じように
$pline = <FD>;
に変更。1395行の
foreach $pline (@plines) {

1397行の
}
を削除。
それと、1396行の($a,$b,$c,$d,$e) = split(/\,/,$pline);の次に、
$a=$a+0;$b=$b+0;$c=$c+0;$d=$d+0;$e=$e+0;
を追加。
1404行のunshift(@new,$value);を削除。
1407行のprint FD @new;を、
print FD $value;
に変更。
0014T女の竹田2001/05/03(木) 19:15ID:???
1398-1402行の、if ($FORM{'points'}=10) { $a++ ;}等は、=を==に変えて
if ($FORM{'points'}==10) { $a++ ;}
というふうに5行全部変えてね。

だいたいこれで全部だけど…
Netfirmsではなぜか環境変数の
$ENV{'REMOTE_HOST'}が空みたいだから、
スクリプトの中に
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }
ってところが何か所かあるけど、ぜんぶ後ろに
$host or $host=$addr;
を付け加えて。このままだとちゃんと動かないよ。
0015T女の竹田2001/05/03(木) 19:43ID:???
あ、あと一個。
378行の
chop($host);
を削除して。
0016名無しさん@お腹いっぱい。2001/05/03(木) 20:49ID:???
http://tako.2ch.net/test/read.cgi?bbs=perl&key=981947727&st=91&to=91&nofirst=true
>@ten01 = ('','1','2','3','4','5');
>@ten02 = ('','1','2','3','4','5');
これ、@ten01=(1..5);
とするといいよ。数字をクォートで囲むと文字列扱いになるから。
001722世紀を目指す名無しさん2001/05/04(金) 22:11ID:DYf6StlI
http://www.haide.net/~seirei/team.txt
これで、報告処理の所を片方が登録したらでは処理ではなく、
2人が報告しないと、処理をしないようにしたいのですが。

具体的に言うとこんな感じです。
1人が報告→ログに記録される。
もう1人が報告→ポイント換算などの処理をする。

いろいろ試したのですが、ダメでした。
よろしくおねがいします
0018名無しさん@お腹いっぱい。2001/05/04(金) 23:23ID:aohLIYsg
>>17
「勝者-敗者」を一時的に記録する未決ファイルを作るとよいのでは。
報告処理は以下のようになる。
・未決ファイルを参照し、今回の「勝者-敗者」にマッチするデータが
 あれば、それを削除し、ポイント記録処理をおこなう。
・未決ファイルにまだデータがなければ、「勝者-敗者」データを
 未決ファイルに追加する。
0019@創作文芸板2001/05/05(土) 17:06ID:sQgyaM9Y
>>11-15 T女の竹田さま
 出来ました! 本当にどうもありがとうございます。
 http://2chmoji.netfirms.com/cgi-bin/antho.cgi
 クレジットにお名前入れても良いですか?
0020向こうの912001/05/05(土) 22:52ID:gKS1guvg
>>16
@ten01=(1..5);とやってもダメでした・・・
0021T女の竹田2001/05/05(土) 23:01ID:???
>>19 @創作文芸板さま
動きましたか(^-^) よかった。

クレジットは、入れない方が…(^-^;) ちょっといじっただけなので。
ただ、変更点に関しての責任者という意味で、スクリプトのコメント
部分に、変更日時・変更箇所と併せて
「by T女の竹田@Webプログラミング板」とでも書いておいてください。

また改造したい所や分からない所などあったら、いつでも聞いて
くださいね。
0022名無しさん@お腹いっぱい。2001/05/05(土) 23:18ID:???
>>20
@ten=(1,2,3,4,5);
これならどうだ! +2するのをお忘れなく!
0023向こうの912001/05/05(土) 23:39ID:gKS1guvg
>>22
それでもダメでした。
私の書き方が間違ってるのかもしれないので
http://members.nbci.com/ixlbzo/petit.txt
↑に書きかけのスクリプトを上げておきました。
0024774_Surver_Error2001/05/06(日) 01:44ID:???
>>23
@ten01 = ("","1","2","3","4","5","6","7","8","9","10");
@ten02 = ("","1","2","3","4","5","6","7","8","9","10");
$goukei = $ten01 + $ten02;
ダブルクォーテーションで囲むと文字扱いになるから、まず外さないと駄目だと思うんだけど。
というか@ten01=
foreach(0 .. $#ten01) {
print "<option value=\"$ten01[$_]\">$ten01[$_]\n</option>"; }
こうする意味がないぞー。ここは普通に<select>でvalueを数字にセットしてnameをten01にすべきじゃないの??
0025@創作文芸板 2001/05/08(火) 00:23ID:???
>>21
了解しました。本当にありがとうございました。
できるかぎり自分で努力した上で、つまったらまた聞きに来ます。
0026ななしっこ2001/05/13(日) 07:46ID:MvIacDdA
チャットのログ部分に 参加者とロムが表示されるようにしたいのですけど・・
こんなふうにしたいんです。↓
http://members2.tsukaeru.net/chibiske/chatking/konnano.html
スクリプトはこちらにおいてあります。↓ (.txtにしてあります。)
http://members2.tsukaeru.net/chibiske/chatking
宜しくお願いします。
0027ぷれ2001/05/14(月) 00:13ID:nW.8An4c
http://www.net-easy.com/bbs/oneline.html
http://perl.gizo.net/download/bbs/oneline_cgi.txt

掲示板の発言をランダムに設定件数だけ表示させたいんですが。
改造宜しくお願いします。

また、発言をランダムソートできるスクリプトがあれば紹介してください。
0028名無しさん@お腹いっぱい。2001/05/14(月) 21:13ID:???
>>27
とりあえず配列をランダムに並び替える方法
http://www.din.or.jp/~ohzaki/perl.htm#ArrayRandom

改造はしんどいんで俺はパス
0029名無しさん@お腹いっぱい。2001/05/14(月) 22:17ID:EOc017bI
http://www4.tkcity.net/~elmo/
↑脱走犬エルモさんのpetit board荒らし対策機能つきのやつに
http://dx.sakura.ne.jp/~fbrand/fifnel/
のfifnelさんの2ch型スレッド表示機能&さげ機能をつけたいのですが、
どのようにすればいいのでしょうか・・・。
回答お願いいたします。
0030名無しさん@お腹いっぱい。2001/05/15(火) 10:32ID:???
>>29
ソースどっかにアプしてよ
0031292001/05/15(火) 22:07ID:gjtLxID6
エルモさんのスクリプト(荒らし対策)
http://www4.tkcity.net/~elmo/accessory/petit213.zip

fifnelさんのスクリプト(2ch風)
http://dx.sakura.ne.jp/~fbrand/fifnel/app/yybbs_2ch_12.lzh

なお、手が加えてあるのはpetit.cgiだけだそうです。
0032名無しさん@お腹いっぱい。2001/05/15(火) 22:16ID:???
>>29
・・落として解凍しろと?
そんなあなたは優しい人を待ちなさい。
0033272001/05/15(火) 23:09ID:/aLV95x6
http://www.net-easy.com/bbs/oneline.html
http://perl.gizo.net/download/bbs/oneline_cgi.txt

>掲示板の発言をランダムに設定件数だけ表示させたいんですが。
>改造宜しくお願いします。

>とりあえず配列をランダムに並び替える方法
http://www.din.or.jp/~ohzaki/perl.htm#ArrayRandom

分からないです。。。誰かお願いします。
0034名無しさん@お腹いっぱい。2001/05/16(水) 00:19ID:1AgH6foc
>>33
ソースにリンクが張ってあったので、ちょっと見てみたよ。
ログを@DATAに読み込んだ直後に、ランダムな並べ替えを
すればいいような。。。 変更場所わかる?
0035332001/05/16(水) 18:31ID:gyp5F88c

分かりません詳しく教えてもらえないでしょうか?
0036342001/05/16(水) 20:10ID:aLcMWg8.
>>35
うーん、まだその段階かあ。今は自力改造は無理っぽいから、
http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069&st=2&to=2
このへんのリンク先を参考に、いろいろ勉強してみてください。
0037332001/05/16(水) 20:59ID:BRyBMYmA
あっさりできました。

http://www.din.or.jp/~ohzaki/perl.htm#ArrayRandomを参考にしたら。
どうも。
0038どらみ2001/05/17(木) 00:10ID:QVLw6.Fk
ealis bbsを2ちゃんねる風にTOPにスレッド項目
(ex [12]Perlを語ろう<12>)などを表示する場合
どう改造すればいいのでしょうか?誰か教えて下さい♪

http://kano.vis.ne.jp/erial/ealis/index.html
0039名無しさん@お腹いっぱい。2001/05/17(木) 00:40ID:srfZahY6
>>38
ここ>>32を読んでどうするか考えてみれ
0040名無しさん@お腹いっぱい。2001/05/17(木) 10:25ID:???
[ルール追加]

圧縮されているスクリプトは解凍してからアップしよう。
0041どらみ2001/05/17(木) 14:55ID:WAoXbitY
あ、すまなんだ。

ealis cgi http://wakayama.cool.ne.jp/kome15/ealis.cgi.txt
ealis sub cgi http://wakayama.cool.ne.jp/kome15/ealis_sub.cgi.txt
ealis log cgi http://wakayama.cool.ne.jp/kome15/ealis_log.cgi.txt
ealis_wri.cgi http://wakayama.cool.ne.jp/kome15/ealis_wri.cgi.txt
ealis_cfg.pl http://wakayama.cool.ne.jp/kome15/ealis_cfg.pl.txt
ealis_let-std.pl http://wakayama.cool.ne.jp/kome15/ealis_let-std.pl.txt
あとは、ealis.log は空テキスト jcode.pl だけ。
EUCコードのCGIです。
ealis cgiのthreadモードをうまく改変すれば、
元のノーマルモードでなんとかなりそうなんですが、
素人のためわかりません。ほんとご迷惑おかけします。
0042どらみ2001/05/17(木) 15:01ID:WAoXbitY
ealis_let-std.pl だけHTML表示されちゃうみたいなのでソースみてください。
0043名無しさん@お腹いっぱい。2001/05/17(木) 18:53ID:???
>>41
printが汚いなー。
「print "\t<meta http-equiv=\"content-type\" content=\"text/html; charset=euc-jp\">\n";」
改造を拒んでいるように見えるぞ俺には(;´Д`)

2ch風にしたいならそういうスクリプトを探したらどうだ?
デザインを変えれば雰囲気なんて全然違うものになるぞ。
0044名無しさん@お腹いっぱい2001/05/19(土) 01:32ID:???
age
0045名無しさん@お腹いっぱい。2001/05/19(土) 07:24ID:???
>>43
汚いってのはヒアドキュメントじゃないからか?
0046どらみ@℃素人2001/05/20(日) 01:34ID:lWdYhoMA
なんとか下記のようにスレッド表示を別枠にしたんだけど、
やっぱりダメね。
&mode_thread2を付け足して、CGI読んでもスレッド表示きちんとでるんだけど
メインがズレてる。(笑)
たぶん、スレッドとメインが二つとも起動してズレテルと思うの・・・。
どうしたらいいんでしょう?
だれかあたしに愛の手をくださいぃ・・・

#■ 2ちゃんねる風スレッド表示モード-----------------------------------------------------------------
sub mode_thread2
{ print "\n<div id=\"msglist\"><ul>\n";
local($i,$showed_oya,$rescount,$parent,$flag);
while($line = <IN>){
if(substr($line,0,1) eq '*'){
if($start < $i){
$showed_oya++;
if($showed_oya > $show){ $flag = 1; last; }
&print_each2($parent);
$rescount = 0;
}
$i++;
$parent = $line;
}else{
if($start < $i){ $rescount++; }
}
}
($flag) || &print_each2($parent);
print "</ul></div>\n\n<div align=center>";
}
sub print_each2# $line,[0thread/1lapse]
{
my($seri,$num,$date,$name,$email,$subj,$com,$url,$ipaddr,$pwd,$color)= split("\t",$_[0]);

($subj) || ($subj = ((substr($seri,0,1) eq '-') ? ' (response) ' : '(無題)') );
# thread
if(!$_[1]){
print "\t<strong><a href=\"$INI{'scriptmain'}?#$showed_oya\">[$num]</strong><strong>$subj</strong> ($rescount)</a> \n";
}
}
#------------------------------------------------------------------------------------------
これを書いて、あとは、49行目に&sub_thread2;付け加える。
&header(undef,1);
&print_postform;
($start == 0) || &pager(undef);&mode_thread2;
&print_running(0);
&pager(undef);
}
0047sage職人登場!2001/05/20(日) 11:42ID:???
ネカマ口調UZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!
0048名無しさん@お腹いっぱい。2001/05/21(月) 22:25ID:eSTD4vuI
http://www.mytools.net/cgitools/vote7.html
で、コメントなどの横にIPではなくホストを表示させたいのですが…
いじる場所はわかったものの、ホスト表示はどうすればいいのかわかりません。
0049名無しさん@お腹いっぱい。2001/05/22(火) 02:01ID:???
>>48
ソースは見てないのですが、下のような定石があります。
$ip = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('C4',split(/\./,$ip)),2);
0050名無しさん@お腹いっぱい。2001/05/22(火) 18:00ID:R570F1/A
http://www.apple.com/webobjects/

5出たよ
0051プログラ厨房2001/05/24(木) 04:00ID:Mt8OOjsQ
すごい初心者の質問なんですけれどすみません。

http://www.rescue.ne.jp/cgi/2shot4/2shot.txt
の2チャットプログラムに
http://storm.prohosting.com/kyouju/
のような
〔Aについて〕〔Bについて〕〔Cについて〕〔Dについて〕
という項目を付け加えたいのだけれど
上手くいきません。

どうやってもエラーがでてしまいます。
よろしくお願いいたします。
0052名無しさん@お腹いっぱい。2001/05/24(木) 05:45ID:???
>>51
項目の用途がよくわかりませんが・・・。
594〜595行目の$bodyとEOFの間に
<p>
<a href="〜">〔Aについて〕</a>
<a href="〜">〔Bについて〕</a>
<a href="〜">〔Cについて〕</a>
<a href="〜">〔Dについて〕</a>
</p>
0053プログラ厨房2001/05/24(木) 20:20ID:Mt8OOjsQ
>>52さん。

それだとInternal Server Errorが出てしまうんです。
普通の文字だけだといけるんですが、
<p> </p>などのタグをつけると
エラーが出てしまいます。

これってどういうことが考えられるのでしょうか?
0054まさか・・・2001/05/24(木) 21:39ID:???
\"
0055名無しさん@お腹いっぱい。2001/05/24(木) 21:49ID:???
print <<EOF;
$body
<p>
</p>EOF
0056名無しさん@お腹いっぱい。2001/05/27(日) 07:50ID:2FWqadiI
cosmo navi
http://www.kent-web.com/data/navi.html

で複数のログを検索させることは出来ますか?
0057むぎ茶      2001/05/27(日) 08:21ID:???




あほ。


┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
┃mugicha@360.cc  ┃
┗━━━━━━━━━┛
むぎちゃんねる
http://aho0baka.virtualave.net/bbs/bbs.cgi
メイリングリスト
http://www.freeml.com/ml_info.php?ml=bitvalley
0058名無し2001/05/27(日) 22:56ID:???
だな
0059名無しさん2001/05/28(月) 15:25ID:???
教えてちゃんですいませんが、「CGI ROOM」の「高機能検索専用
データーベース1.43」を使っています。(アドレスは http://cgiroom.nu/
これのスクリプト内にフロー制御構文を付け加えたいのですが、
どこに構文を書き加えればいいのかわからないです。
適当に書いてみたらエラーはでないけど、反映はされませんでした。

入れたい構文は↓
if($data[4]==1){
print'1R';
}else{
print'その他';
}
な感じです。
アドバイスよろしくお願いします。
0060...................................2001/06/09(土) 03:40ID:UrQQ6rVw
.
0061名無しさん@お腹いっぱい。2001/06/09(土) 03:56ID:???
>>59
付け加えたいところに付け加えればいいよ どこよ
0062名無しさん@お腹いっぱい。2001/06/09(土) 19:52ID:fpk.4if.
ここってもうアドバイスしてないんですか?
0063名無しさん@お腹いっぱい。2001/06/09(土) 19:55ID:nMJw0AMU
「chaBo」という伝言板をひとつのプログラムだけで
複数のログを使えるようにしたいのですが、どうすればよいですか?
アドバイス下さい。よろしくおねがいします。

http://www.kemokemo.com/products/chabo/index.html
0064名無しさん@お腹いっぱい。2001/06/09(土) 20:00ID:???
.=
0065名無しさん@お腹いっぱい。2001/06/09(土) 20:58ID:???
>>62
まだやってるよ。でも全員ものぐさなので
ソースを見るのに手間がかかりそうだと無視。
そうでない親切な人もいるが出現率は低し。
0066名無しさん@お腹いっぱい。2001/06/10(日) 00:28ID:???
>複数のログを使えるようにしたいのですが
ここがよくわからん
人にわかってもらう説明をするのが吉
0067名無しさん@お腹いっぱい。2001/06/10(日) 03:05ID:wIreiASQ
しょぼいソースのcgiscriptがおおいから
いっそのこと最初から自分で作ったほうがいいんじゃないの?
0068名無しさん@お腹いっぱい。2001/06/10(日) 04:47ID:VLepH.gU
$comment = &post_decode;
if($comment eq ""){$comment = "あいうえお"};

これって$commentの欄に何も記入しなければ、
あいうえおって表示されますよね。
これをランダムに"あいうえお"の他に"かきくけこ""さしすせそ"って
表示させるにはどうしたらいいんでしょうか?
0069名無しさん@お腹いっぱい。2001/06/10(日) 05:40ID:???
>>68

$comment=&post_decode();
if($comment eq ''){
  srand();
  @commentDef=('あいうえお','かきくけこ','さしすせそ');
  $comment=@commentDef[int(rand($#commentDef+1))];
}
0070名無しさん@お腹いっぱい。2001/06/10(日) 15:28ID:hNgApf/.
>>69さん
ありがとうございます。
それから、もう一つお聞きしたいんですが
>>68の"あいうえお"のfontの色を変えるにはどうしたらいいんでしょうか?
0071名無しさん@お腹いっぱい。2001/06/10(日) 15:47ID:???
>>70

$comment = "あいうえお";

$comment = '<font color="red">あいうえお</font>';
0072名無しさん@お腹いっぱい。2001/06/10(日) 16:12ID:hNgApf/.
>>71さん
ああ、やっぱりそうすればいいんですよね
なんかCGIだと<と>が&lt;、&gt;になってしまい
タグそのままが表示されちゃうんです。。
どうしたらいいかわかりませんか?すみません、、、
0073722001/06/10(日) 16:28ID:???
ありゃタグ禁止してるからでした
すみません、、
0074名無しさん@お腹いっぱい。2001/06/10(日) 19:40ID:hNgApf/.
$comment = &post_decode;
if($comment eq "あ"){$comment = '<font color="red">あいうえお</font>'};
$comment=~s/>/>/g;
$comment=~s/</</g;
これだと、$commentに"あ"と入れても<font>タグは弾かれちゃいますよね
上記のように特定の文字を入れたときのみタグを許すことってできないですか?
0075名無しさん@お腹いっぱい。2001/06/10(日) 19:42ID:???
$comment = &post_decode;
$comment=~s/&gt;/>/g;
$comment=~s/&lt;/</g;
if($comment eq "あ"){$comment = '<font color="red">あいうえお</font>'};

タグのエスケープを先にすればいいだろ。無能か?
0076名無しさん2001/06/10(日) 22:22ID:MvSHCY4o
すみませんが、ここのCGIをhtmlに表示する方法がわかりません。
http://cgi-jp.virtualave.net/bookmark/index.html

こんな感じにしたいのですが・・・
http://inchiki.com/main.cgi
0077名無しさん@お腹いっぱい。2001/06/11(月) 18:47ID:BtETe8tI
はじめまして、いきなりぶしつけで失礼かもしれませんが
誰か教えて下さい。↓下記サイトの画像掲示板を使っているのですが、
http://www2u.biglobe.ne.jp/~k-saka/img_get/#upload_bbs03

投稿された元記事に「レス」をつけると、元記事が最新(先頭)へ
あがって来ます。様は、2ちゃんねる板で言う「あげ」です。
この「あげ機能」を殺したいのです。
元記事にレスをつけても「あげ」にならない様にするには、この
スクリプトの何処をどのように改造すればいいのでしょうか?
お手数をお掛けいたしますが、どうか教えていただけたら幸いです。

↓スクリプトURL(テキストでアップしてあります)
http://www.dream-fact.com/bbs_cgi.txt

宜しくお願い致します!m(__)m
0078名無しさん@お腹いっぱい。2001/06/11(月) 20:55ID:???
うー見づらいソース…これでダメだったら別の人に頼んでくれ。
848行目の辺りをこんな感じに変えて。

$new_line_data = "$res_date,$res_img,$res_1,$res_2,$res_3,$res_4,$new_res_line,$res_agent,$res_addr,$res_host";
push (@new_lines,$new_line_data);
}
}
@DATA = @new_lines;
&data_save;
}
0079772001/06/11(月) 21:40ID:tFbyR8r2
>>78さん!
出来ました!!
78さん!どうも有り難う御座いました!!
本当、助かりました!!^^
>848行目の辺りをこんな感じに変えて。
あ、ちなみに928行目でした。(笑)

本当に有難う御座いました、77さん大感謝です!!

  m(__)m
0080772001/06/11(月) 21:44ID:???

>あ、ちなみに928行目でした。(笑)
・・・HTMLいじってるから、行目が違うのは当たり前だった・・・
撃つ出し脳

78さん大感謝!!
0081782001/06/11(月) 22:40ID:???
79の言動がめちゃめちゃで面白かったから気にするなよ。
0082772001/06/12(火) 00:03ID:???
>78さん
すいません、ケツに火がついてたもんで。(笑)
温かいお言葉有難うございます♪
0083(-_-2001/06/12(火) 04:54ID:wSh3nSKw
>76
根本的にhtmlの勉強とperlの勉強をしなおしたほうがいい気がする。
CPANにあるText:Templateを使うとらくにcgi->html表記ができるようになるよ
0084(-_-2001/06/12(火) 05:10ID:???

templateクラスは複数の同類の型を持つ物の変換には
使用できなかったな。(例 bookmark1->{_name}, bookmark2->{_name}とか)
掲示板なら独自のクラスを作ってtemplateクラスと同じような機能を
持つものを作成したけどまだ開発途中だから公開しなくてもいいか
0085762001/06/13(水) 00:09ID:U631Wly2
レスありがとうございます。
勉強してみます。(^-^;
0086名無しさん@お腹いっぱい。2001/06/13(水) 14:34ID:YLT6rpEM
CGIをさわり始めたばかりの厨房ですが、
http://www.kent-web.com/bbs/clip.html
を使って「画像付イベント告知掲示板」を作りたいと思っています。
イベントの日付を投稿フォームに追加して、
その日付を過ぎた場合に掲示板から自動的に削除したいのですが、
1009行〜1018行で
# 日時の取得
$ENV{'TZ'} = "JST-9";
$times = time;
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($times);

# 日時のフォーマット
@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);
}
この後に追加すれば、できるような気がしますが、
何をどうやって、追加すればいいのか全く分かりません...
ひょっとしたら、全く見当違いかもしれません...
宜しくご教授願います
0087(-_-2001/06/13(水) 16:59ID:20J.4Zf6
自動的にログから削除するのはちょっと面倒なんで単に表示しないように
するにしたらどうかな?
BBSのスレッドを表示するときにイベントの日付をチェックする
機能をつければいいんだと思う。
0088862001/06/13(水) 17:26ID:YLT6rpEM
>>87さん
レスありがとうございます
やはり初心者にはムリですか...
手動で削除しか仕方ないですね
イベントの日付をチェックする機能とは検索機能を使うという事ですか?
0089名無しさん@お腹いっぱい。2001/06/13(水) 18:13ID:???
>>88
削除機能があるなら、それを呼び出したらどうよ。
0090862001/06/13(水) 19:23ID:YLT6rpEM
>>89さん
確かに削除の機能はあります。

712行〜746行に以下のような記述があります

# 削除処理
if ($in{'del'}) {

@DEL = split(/\0/, $in{'del'});

# ロック処理
if ($lockkey) { &lock; }

# 削除情報をマッチングし更新
open(IN,"$logfile") || &error("Open Error : $logfile","lock");
@lines = <IN>;
close(IN);

@new=();
foreach (@lines) {
$flag=0;
($no,$date,$name,$mail,$sub,
$com,$url,$host,$pw,$tail) = split(/<>/);
foreach $del (@DEL) {
if ($no eq "$del") {
$flag=1;
if (-e "$ImgDir$no$tail")
{ unlink("$ImgDir$no$tail"); }
last;
}
}
if ($flag == 0) { push(@new,$_); }
}
open(OUT,">$logfile") || &error("Write Error : $logfile",'lock');
print OUT @new;
close(OUT);

がこの記述をどのように呼び出せばいいのか、
素人考えなのですが、例えば

if ($date_1 < $date_now) {

の様な事を追加するのですか?
でもこの場合 $date_1 と $date_nowはどうやって
決めればいいのですか?
全く分かりません。全然違うますかね..
0091862001/06/13(水) 19:33ID:YLT6rpEM
元のスクリプトです

http://selfkkk.hypermart.net/clip.txt

よろしければ、アドバイスをお願いします
0092名無しさん@お腹いっぱい。2001/06/13(水) 20:12ID:???
kentのscriptって改造するのを拒んでるような書き方してるよな。
0093名無しさん@お腹いっぱい。2001/06/13(水) 20:20ID:???
>>92
だな。
処理ごとにサブルーチン化させてくれれば、
>>90のような事に答えるのがずっと楽になるのに…。
0094862001/06/13(水) 21:56ID:YLT6rpEM
新たに素人考えですが


sub decode2 {

# 日時の取得
$ENV{'TZ'} = "JST-9";
$times = time;
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($times);

# 日時のフォーマット
@week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);

$date_now = ($mon + $mday);
$date_1 = ($mon_1 + $mday_1);
if ($date_now > $date_1){

if ($lockkey) { &lock; }

open(IN,"$logfile") || &error("Open Error : $logfile","lock");
@lines = <IN>;
close(IN);

$flag=0;
@new=();
foreach (@lines) {
($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$mon_1,$mday_1) = split(/<>/);
if ($in{'no'} eq "$no") { $flag=1; $PWD=$pw; $upfile="$no$tail" }
else { push(@new,$_); }
}


# 削除キーを照合
$match = &decrypt("$in{'pwd'}","$PWD");
if ($match ne 'yes') { &error("削除キーが違います","lock"); }

# ログを更新
open(OUT,">$logfile") || &error("Write Error : $logfile",'lock');
print OUT @new;
close(OUT);

# 添付ファイルがあれば削除
unlink("$ImgDir$upfile") if (-e "$ImgDir$upfile");

# ロック解除
if ($lockkey) { &unlock; }
}}
}

を追加すればいいですか?
$mon_1 はイベントの開催月
$mday_1 はイベントの開催日
の予定ですが、ムリかな...
ホントに素人でごめんなさい。
0095名無しさん@お腹いっぱい。2001/06/13(水) 23:05ID:???
それが読み込みの度に実行されるんだったら、まともに動かないだろう。
削除記事番号も削除キーも送られてこない。
あと、開催年がないと年またぐときに困るぞ。
0096名無しさん@お腹いっぱい。2001/06/14(木) 00:25ID:???
うーんと、イベントの日時をtime関数の形式に戻してから保存して、
その数字が現在の日時より小さかったら削除、てな感じになるのかなぁ。
0097(-_-2001/06/14(木) 05:39ID:6hQUKvW2
やべ、すげー早起きしちゃったよ
改造を手伝おうと思ったけどkentのscriptは読むのがすげー疲れるんで勘弁して
ちなみに削除を面倒だといった理由は
1.ログから削除されると管理者からみてあとあとデータを解析するのに不便
2.ログを自動的に削除ということはできない(誰かがそのcgiを読み込まないと削除されない)
3.ファイルの更新は最小限にしたい(ログ破壊が防止)

まぁがんばってください。(-_-;;)
0098862001/06/14(木) 12:04ID:JuRlKCCw
みなさんレス付けて頂き本当にありがとうございます。
もう少し頑張ってみようと思います。
kentさんのscriptではムリっぽいので
違う元ネタのscriptを探してみました。
http://selfkkk.hypermart.net/tboard002.txt

ちなみには完成イメージも作ってみました
http://selfkkk.hypermart.net/a.htm
0099rubbish_lister2001/06/14(木) 12:23ID:???
> if($secg < 10){$secg = "0$secg";}
…とほほ(;´Д`)

一応考えますが期待しないでください>>98
0100862001/06/14(木) 14:27ID:JuRlKCCw
>>97さん
今になって>87の意味が分かりました...

ログを削除するのではなく、
日付の過ぎたイベントは記事表示部分には表示させないと言う事ですね
その方法でもOKです。確かにログを触らない方が良いですね
その場合の日付のチェック機能ですか..う〜〜ん

>>99さん
宜しくお願いします。
自分でも色々と試してみたいと思います
0101862001/06/14(木) 21:11ID:JuRlKCCw
http://selfkkk.hypermart.net/tboard002.txt
の過去ログに移す機能をうまく使えば出来そうな気がしますが..
ダメですか..
■ このスレッドは過去ログ倉庫に格納されています