スクリプト改造工房 Part4
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
02/02/05 01:20ID:CZVDHHphという人がいましたらここで聞いてください。
ひょっとしたらアドバイス出来るかもしれません。
前スレ
Part2 http://pc.2ch.net/test/read.cgi/perl/986986227
Part3 http://pc.2ch.net/test/read.cgi/php/988808396
なお、質問するときは
1)そのスクリプトのある場所(URL必須、拡張子".txt"でアップすればなお良し)
2)どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
を必ず明記しよう。
0101100
02/03/01 02:24ID:enmjRXxk# - レス付与 -------------------------------------
sub res {
〜〜〜〜〜〜〜
# age_______________________________
if (!$sage) {
push(@DATA,splice(@DATA,$no,1));
}
〜〜〜〜〜〜〜
}
# - フォームチェック ------------------------------
sub formcheck {
〜〜〜〜〜〜〜
# E-mailチェック____________________
if ($mail =~ /sage/) {
$sage = 1;
}
〜〜〜〜〜〜〜
}
0102名無しさん@お腹いっぱい。
02/03/01 02:47ID:???スクリプト読んでないけどこれでどうかな?
〜〜〜
#age____
if (!$sage) {
if ($dame) {
unshift(@DATA,splice(@DATA,$no,1));
}
else {
push(@DATA,splice(@DATA,$no,1));
}
}
〜〜〜
〜〜〜
# E-mailチェック____
if ($mail =~ /sage/) {
$sage=1;
}
elsif ($mail =~ /dame/) {
$dame=1;
}
〜〜〜
0104102
02/03/01 03:38ID:???全角スペースで字下げしてるから,そのままコピペじゃ動かないです。
半角スペースに置き換えてください。
0105100
02/03/01 04:16ID:???DATファイルにもちゃんと書き込まれて、スレッドも下がりました…!
ただ、トップ表示と一覧表示でデータを読み込めないみたいです。。
http://www.42ch.net/UploaderGeneral/source/226.htm
0106名無しさん@お腹いっぱい。
02/03/01 04:46ID:???スマソ,さっきのでログ壊れたかも。
unshift(@DATA,splice(@DATA,$no,1));
を
unshift( @DATA, (shift(@DATA),splice(@DATA,$no,1)) );
に変えるとどうかな
0107名無しさん@お腹いっぱい。
02/03/01 05:03ID:jSI4cIj+サーバーの設定で制限さてれるんじゃない?
http://www.php.net/manual/ja/function.ini-set.php
http://www.php.net/manual/ja/configuration.php
0108100
02/03/01 20:20ID:???下の方に書き替えたら、壊れなくなりました!
しかし今度は、「書き込んだスレッドの一つ上にあるスレッド」が
一番下に下がるようです...(;´Д`)
0110名無しさん@お腹いっぱい。
02/03/04 19:46ID:xVeLh+HAttp://zurubon.strange-x.com/upload.txt
のトップページをhtmlファイルとして吐くように改造していただけませんでしょうか?
無理なお願いかもしれませんがよろしくお願いします
0111名無しさん@お腹いっぱい。
02/03/04 23:36ID:???意味がわかりづらいが、トップページをリクエストするとHTML形式の
ファイルをダウンロードするってこと?
0112110
02/03/04 23:54ID:xVeLh+HAのようにトップページはhtmlとして吐き出させて負荷を減らし
アップロード作業や2ページ目以降の表示をCGIにさせたいのです
わかりにくくて済みません
0113nobodyさん
02/03/05 00:10ID:???perl勉強中だけど、答えてみる。
index.htmlをopenして、「sub html」の中の表示部分をそっちに吐くようにすればいいんじゃないかな。
他にも弄るとこあるかもしんないけど、そこは識者にお任せします。
0114111
02/03/05 00:23ID:???用意するとできるのでは? だいたい以下の感じに。(■■■部分は呼び出すCGI)
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="http://■■■" >
アプするファイル<strong>(300 Kまで)</strong><br>
<INPUT TYPE=file SIZE="40" NAME="filedata">
<select name="ext">
<option value="ext" selected>特殊拡張子選択
<option value="css">css
<option value="csv">csv
<option value="htm">htm
</select>
<br>コメント<i><small>(※コメント無記入の場合リロードになります
/URLはオートリンクします)</small></i><br>
<INPUT TYPE=text SIZE="45" NAME="comment">
<INPUT TYPE=submit VALUE="Up/Reload" class="button"><INPUT TYPE=reset VALUE="Cancel" class="button"><br>
</FORM>
0115110
02/03/05 06:37ID:ZPKxkzAdopenでhtmlファイルを開いてprintするところまでは思いついたのですが、
クッキーを使った環境設定や、print_postdataとの絡みが分からずに挫折しました
>114
???
済みません、意味がわからないです
0116nobodyさん
02/03/05 20:29ID:???クッキーをはいてLocationでhtmlファイルに飛ばせばよい。
htmlファイルを作る処理はprint_postdataなどを直接弄ると
副作用があるので、コピペで名前を変えた関数を作って
ファイルに書き出すようにすればよい。
0117nobodyさん
02/03/06 15:45ID:???ReverseAccess(逆アクセスカウンタ)
http://www.cj-c.com/
スクリプト
http://waiwaiwai_00.tripod.com/access.txt
http://waiwaiwai_00.tripod.com/acmgr.txt
http://waiwaiwai_00.tripod.com/set.txt
私のサイトに上記の逆アクセスカウンタを設置しているのですが、
私のサイトにリンクを貼っていただいている方の中で、
自分が一番でないと気が済まない負けず嫌いな方がいるのです。
続く。。。
0118nobodyさん
02/03/06 15:56ID:???たとえばhttp://pc.2ch.net/から私のサイト(http://hoge.com/)にリンクされているとして、
毎日、*.2ch.net及び012.345.678.*というリモートホスト・IPアドレスを駆使して
http://pc.2ch.net/からhttp://hoge.com/にアクセスしまくってhttp://pc.2ch.net/のランキング順位をつり上げてくるのです。
おまけに、http://pc.2ch.net/001.html、002.html、003.html、…を作成して、
そこからも波状攻撃を仕掛けてくるのです。
普通ならpc.2ch.netをカウントしないようにset.txtに書き込めばいいのですが、
http://pc.2ch.net/からは普通(?)のアクセスもあるのです。
そこで不正排除のため、*.2ch.net及び012.345.678.*のみ(指定したリモートホストやIPアドレス)を
カウントしないように改造お願いできないでしょうか?
0119nobodyさん
02/03/06 16:00ID:???0120nobodyさん
02/03/07 01:54ID:WTUe3Qf1警告書いて,それでもダメならカウントしないほうにするほうがいいんじゃない?
改造してもいたちごっこになるだけと思われ。
0121nobodyさん
02/03/07 08:25ID:???動くか試してないけど。
set.cgiの
1;#削除不可
の上辺りに
@AbornLink = ("*.2ch.net","*.yahoo.co.jp");
@AbornHost = ("127.0.0.1","1.2.3.*","anonymizer.com","squid");
を追加。
access.cgiの
#--- ここまで ----------*
の下に
&aborn;
sub aborn {
for (@AbornLink) { s/([.@%$\])/\\$1/g; s/\*/.*?/g; &haa() if $ENV{HTTP_REFERER} =~ /$_/i }
for (@AbornHost) { s/([.@%$\])/\\$1/g; s/\*/.*?/g; &haa() if $ENV{REMOTE_HOST} =~ /$_/i or $ENV{REMOTE_ADDR} =~ /$_/ }
}
sub haa {
print <<_HTML_;
Content-type: text/html
(゚д゚)ハァ?
_HTML_
exit;
}
を追加。
0123利用者
02/03/08 06:39ID:???この書き方ではおかしいんでしょうか…?
0124利用者
02/03/08 06:40ID:???問題の部分の簡易スクリプトです。
http://upsenyou.tripod.co.jp/test.text
0125nobodyさん
02/03/08 06:42ID:w/NM/Dyo0126利用者
02/03/08 06:42ID:???申し訳ないですが、ソースを出して見てください…
0127nobodyさん
02/03/08 07:00ID:yTPx6PIpメールフォームで、メールの送信先を、曜日毎に変えたいのですが、
どうすればよろしいでしょうか。
フリーのメールフォームを改造して作ろうとしているのですが、
Perlに関しては初心者で、手がでない状態です。
どなたか、どうぞよろしくお願い致します。
改造しようとしているCGIで、メールの宛先は、
configファイルに
$MailTo = '[email protected]';
として明記し、CGI本体で
$MAILTO = &config::MAILTO;
というふうに読み込ませる形になってます。
0128nobodyさん
02/03/08 07:53ID:???0129nobodyさん
02/03/08 17:42ID:???http://pc.2ch.net/test/read.cgi/php/1014556702/289-
そのうち現れると思いますが。
たらい回しにされて可愛そうなので答えてあげてください。
ていうか答えるのは同じ人間ぽいけどなー。w
0130nobodyさん
02/03/08 23:27ID:???0131nobodyさん
02/03/09 06:45ID:???ただでさえ人少ないのに。
0133110
02/03/09 18:16ID:???指導のおかげでhtmlファイルは吐き出すようになったのですが、投稿・削除
したときに http500 内部サーバエラー となってしまいます
(htmlファイル自体はちゃんと吐き出される)
もう一度ご指導頂きたく思います
改造後のスクリプト(.cgiに変換してください)
ttp://hpcgi3.nifty.com/syouwakayou/up.cgi?dir=&view=&sort=&get=up.txt
#前回こちらで聞いたので、初心者スレではなくこちらでお聞きします
0134127
02/03/10 02:00ID:???ヒントを元に考えてみても謎が謎を呼びエラーが出て
泣きそうです。
ここは今人が少ないのですか…
0135nobodyさん
02/03/10 10:01ID:Pl5m+TdB>134 localtime関数の仕様を調べれ。
0136nobodyさん
02/03/11 22:51ID:???長いし、途中からなので良く分からんが
&locationindex;
&print_postdatafile;
とか(他にもあるよね)付け加えたサブルーチンを、行わせたい処理の順番にならべてみなされ。
場所は #以下はスクリプトのエンジン部分。無闇にいじくると動かなくなるかも(ワラ
のすぐ後でいいと思うけど。
できたら、sub locationindex{ } とかいうブロックはまとめて
#以下関数定義&実装
から下に持っていったほうがいいかな
0137初心者スレにも書きましたが
02/03/12 14:59ID:h6G3oh/x掲示板CGIの改造をしたいのですが、
チェックボックスを付けて、それがオフの場合投稿を弾いてメッセージを表示するにはどうしたらいいのでしょう?
全くの初心者なので、適当に
コメント入力欄の近くあたりに
<INPUT TYPE="checkbox" NAME="a" VALUE="b">書きこみをOKする<BR>
って入れて、名前が入ってないとエラーを返す部分があったのでそこに
if ($a eq "") { &error("オンにしてちょ。",'NOLOCK');
ってやってテストしてみたらオンでもオフでもエラーを返されてしまいました。
if ($a eq "a:")としたら逆にオンでもオフでも書きこみできました。
別にvalueがbの場合用の処理(?)を書かなくてはいけないのでしょうか?
ちなみに上のは名前が入ってないとエラーを返す部分をちょっと変えただけです。
0138初心者スレ417=421
02/03/12 15:12ID:???>>1
> なお、質問するときは
> 1)そのスクリプトのある場所(URL必須、拡張子".txt"でアップすればなお良し)
> 2)どんな風に改造して欲しいのか? (完成イメージHTMLを用意すればなお良し)
> を必ず明記しよう。
---
なんとなく、$aに中身入れてないような感じがするんだけど。。
途中省略箇所有りですが、、、
こんな感じになってると考えて良いのかな、、、。
&decode(*FORM);
sub decode{
local(*DATA) = @_;read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@buffer = split(/&/,$buffer);
foreach (@buffer) {
($name,$value) = split(/=/);
$DATA{$name} = $value;
}
}
$a = $FORM{'a'};
if ($a eq "") { &error("オンにしてちょ。",'NOLOCK');
---
0139初心者スレにも書きましたが
02/03/12 15:37ID:???できた〜!!マジでありがとうございます。$a = $FORM{'a'}; が足りなかったようです。
勉強になりました。
0140nobodyさん
02/03/13 09:19ID:Z/LJjIzD追加したい機能は「トリップ」と「名無しさん」
あと投稿にアスキアートなどをコピペした場合にアスキーアトが崩れるのを防止したいです。
ソースはこちらになりまます。
http://www.geocities.co.jp/HeartLand/6269/bbs.txt
0141nobodyさん
02/03/13 13:50ID:???頑張って下さい。応援してます。
0142140
02/03/13 14:10ID:Z/LJjIzD所詮は厨房のボクにはムリか・・・
0143nobodyさん
02/03/13 22:13ID:Dc5/budY0145nobodyさん
02/03/14 09:33ID:VZM6DSSw理屈は大体わかるんですが、いざ組もうとしても改造ばっかで一からはほとんど組めなくて…
0146nobodyさん
02/03/14 15:01ID:???YY-CHATのどっかからデータを読み込んで
参加者一覧を作りたいのですがよくわかりません。
とりあえず↓のような感じに表示されるCGIってどうやったらいいでしょうか?
=======================================================
参加者(3)
名無しさん
太郎さん
花子さん
0147146
02/03/14 16:40ID:???http://www.i-cha.ne.jp/cgi/yychat_custom2/r01/member.cgi
0148ぴいころ
02/03/14 20:33ID:d2y5/VKoReverseAccess(逆アクセスカウンタ)
http://www.cj-c.com/
スクリプト
http://waiwaiwai_00.tripod.com/access.txt
http://waiwaiwai_00.tripod.com/acmgr.txt
http://waiwaiwai_00.tripod.com/set.txt
上記のスクリプトでURLマッチングログ$ulog= "url.log";
に記述したリンク元以外はデータをとらないようにするにはどうしたらいいのでしょう?
つまり登録したサイトだけの逆アクセスランキングをつくるには。
もう、ずーっと試行錯誤してみたけど変数が多くてわけわからず
どうしてもできませんでした。どなたかご教授下さい。。。
0149nobodyさん
02/03/14 20:34ID:???0152ぴいころ
02/03/14 20:58ID:d2y5/VKoりゅういちさん引っ越しで忙しいみたいで悪いかなあと思いまして。
>>151
ちがいますよ。過去ログ参照してるときに同じスクリプトがあったので
借りただけです。
0155nobodyさん
02/03/14 22:08ID:???「member.txt」です。
一人参加しているときの中身
--------------------------------------
1016101994<>名無しさん<>127.0.0.1<><>
0156ぴいころ
02/03/14 22:44ID:d2y5/VKo何言ってるかわかんないんですけど。
答えられないんだったらレスしないでいいですよ。
0160りゅういち
02/03/14 23:19ID:???0161ぴいころ
02/03/14 23:48ID:d2y5/VKoどういう類の人間が書き込んでだろうね。
0163ぴいころ
02/03/14 23:51ID:d2y5/VKo0165nobodyさん
02/03/14 23:53ID:???0166ぴいころ
02/03/14 23:54ID:d2y5/VKo0168ぴいころ
02/03/15 00:03ID:gwfeegs00169ぴいころ
02/03/15 00:19ID:+8TxHXVk0170ぴいころ
02/03/15 00:20ID:eGIGdxRo0171nobodyさん
02/03/15 00:22ID:???>借りただけです。
これの何処が普通よ。寝言は寝て言えボケ。
0173nobodyさん
02/03/15 00:27ID:???0174nobodyさん
02/03/15 00:41ID:???マターリマターリ
0175ぴいころ
02/03/15 00:43ID:+8TxHXVk0176nobodyさん
02/03/15 01:21ID:X8j7h0mSこれでどう?
#!/usr/bin/perl
$file = './member.txt' ;
open ( FILE , $file ) || &print("開けません") ;
@data = <FILE> ;
close FILE ;
$len = @data ;
$out = "参加者($len)<br><br>\n" ;
foreach ( @data ) {
$name = ( split /<>/ )[1] ;
$out .= "$name<br>\n" ;
}
&print( $out ) ;
exit ;
sub print {
print <<"_HERE_" ;
Content-type: text/html\n
<html>
<body>
$_[0]
</body>
</html>
_HERE_
exit ;
}
0177nobodyさん
02/03/15 02:47ID:???はぁ? 既知害は消えてください
0179ぴいころ
02/03/15 04:11ID:gwfeegs0いやーお陰様でずっとやってたらできました。ありがとうございます。
WEBプログラミング板って役に立つなあ。特にこのスレ。(笑)
なんといっても、何一つまともに答えられない住人が最高です。
0180nobodyさん
02/03/15 04:16ID:???馬鹿相手に奉仕感が得たかったのか?
0181176
02/03/15 04:53ID:X8j7h0mS奉仕してるフリして本当は
「俺はこんなすげーコード書けるんだぜ。神と呼べ」
などと心の底で思ってたりする(w
0182nobodyさん
02/03/15 07:00ID:???ただ、あれだと参加者0のときも(1)と表示されてしまいます。
参加者がいない場合↓
------------------------------------------------------
1016142616<><>127.0.0.1<><>
0183180(つーか20才)
02/03/15 07:30ID:???若いな。
俺ももうちょっと体力と気力があればそんな気にもなるかもしれんが。
>182
foreach(@data){
if($name = (split(/,/))[1]){ $len++; }
$out .= "$name<br>\n" ;
}
もうちょっといじらんとあかんがそれは宿題。
春休みなんだから時間あるだろ。
0184nobodyさん
02/03/15 20:33ID:???の続きです。
大絶賛(藁 のKENTさんのYYBBSにトリップ機能を付ける方法について
# YY-BOARD v4.54 (2001/09/06) の場合
以下の方法で出来ました。
設置例:http://www.pweb.ne.jp/~fpm2/trip_yybbs/yybbs.cgi
549行目
# クッキーを発行
&set_cookie;
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
ファイル最後に
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
すいません、、純正のYY-BBSでやってみたところうまくいったのですが
自分の使ってるのが改造品なのかよくわからないのですがそれだと出来ませんでした。
http://home.catv.ne.jp/kk/space/gakuyuu/yybbs.htm
ここのYY-BBS改造バージョンを使っていて、
同じように
# クッキーを発行
&set_cookie;
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
ファイル最後に
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
とやってみたのですがダメでした・。。どこを直せばいいのでしょうか?
別スレで質問したときは、2ちゃんねらー用に設置しました。
(ほのぼの板なんですけどね^^;)
たしかに必要性っていう観点からは、荒れない限りトリップいらないっすね。
>>187
それをダウンロードして調べて欲しいっていう意味でしょうか?
スクリプトをテキストファイルでアップロードする等の方法もありますので・・・。
あなたのPerlへの理解度も含めておしえてください。
とかいいつつダウンロードしてやってみました。
結論から言うとできましたよ。
http://www.pweb.ne.jp/~fpm2/0z.4Is5E/yybbs.cgi
おせっかいかもしれないですが、
コピペでは動かなくて当然かも…。
その改造版yybbsは、ちょっと古い(失礼^^;)みたいですね
本家のバージョンだと2.2を改造したものみたいです。
最新版yybbsは4.54みたいです。
変数の名前や用途も少しずつ違いますし、
処理も少しずつ違う見たいです。
どの変数に名前が格納されるのか等の、
簡単な構造はわからないと厳しいかも…
m(_ _)m
本家のYY-BBSと変数などを見比べてみたんですが・・
$nameっていう変数に投稿者の名前が格納されているんですよね?
うーん・・やっぱり
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
これも変えなきゃだめなんでしょうか・・
KENT氏のYYBBS系の掲示板は、書き込み後の画面は
Cookieから名前を読まないから、名前欄のValueが
トリップが生成された直後の名前になっちゃいます。
だからそのまま連続で書き込むと「偽者扱い」になるので注意。
このへんは要改造です。頑張ってください。
>>190さん、まずはやってみましょう。それで出来るはずなので。
あとトリップ生成のサブルーチンをコピペするときは、
>>190のじゃなくて、>>185のをコピーしてください。
>>190さんのコピペは"が、"になっちゃってますんで。
やはり「#a」と書いて投稿するとそのまま表示されてしまうんですが
http://home.catv.ne.jp/kk/space/gakuyuu/yybbs.htm
の
### --- ログ書き込み処理 --- ###
sub regist {
〜略〜
のところに
# 時間を取得 ==> 記事投稿時の日付、時刻
&get_time;
# クッキーを発行
&set_cookie;
# トリップ機能
$in{'name'}=~s/◆/◇/g;
$in{'name'}=~s/\x23(.+)$/"◆".trip($1)/e;
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
#トリップ機能
$in{'$name'}=~s/◆/◇/g;
$in{'$name'}=~s/\x23(.+)$/"◆".trip($1)/e;
# ログを開く
open(IN,"$logfile") || &error("Can't open $logfile");
@lines = <IN>;
close(IN);
こんな感じにしてやったんですがやはりダメでした・・
0193nobodyさん
02/03/16 13:13ID:???あのな、>>189に書いてあることを少し理解しなさい。
んで、少しはPerlの文法ぐらい調べなさい。
>>190で変数を調べて於いて、なんで>>192の様になるのか理解不能。
0194nobodyさん
02/03/16 13:18ID:???#トリップ機能
$in{'$name'}=~s/◆/◇/g;
$in{'$name'}=~s/\x23(.+)$/"◆".trip($1)/e;
これはちょっと前のを削除し忘れてました。
あ、なんていうかYY-BBSの改造版だとちゃんと#〜〜
でクッキー取得してるみたいです
0201199
02/03/16 14:13ID:???やっぱクッキーに◆〜〜
ってなってました(´Д`;)
■ このスレッドは過去ログ倉庫に格納されています