スクリプト改造工房 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を用意すればなお良し)
を必ず明記しよう。
0267266
02/03/17 23:01ID:???0268nobodyさん
02/03/17 23:08ID:???他のは知らんけどYYBBSはEUCとかJISが来ても自動的に変換する。
半角カナとかが入ってるとこの変換に失敗することがあるからダメなの。
0269266
02/03/17 23:08ID:???0270266
02/03/17 23:10ID:???まみません。○
>>268
ありがとうございます。
そこで今コンバータしている所をとったらできたのですが
何か問題がありますでしょうか?
0271266
02/03/17 23:10ID:???すみません。○
はぁ。
0272nobodyさん
02/03/17 23:16ID:???2chだと「ERROR、SJISで書いてちょ」とか言われてはじかれるけど。
0273nobodyさん
02/03/18 00:07ID:???コントロール文字の入力テスト
0274nobodyさん
02/03/18 00:11ID:???写爵叱失、ホ偲漆柴A。ゥ」・・
0275nobodyさん
02/03/18 00:13ID:???(IJ]68$B$N(IC=D$B#o#k!)(B
0277nobodyさん
02/03/18 00:17ID:???Tn0畸5_P[k0・c0f0ス0・ケ0n0
0279nobodyさん
02/03/18 13:38ID:???0280nobodyさん
02/03/18 16:42ID:???>>185ボクもトリップをつけてみました。
しかし、>>198に書かれてる通り、
書き込み後の名前をクッキーから読み込むのではなく、
変換されたトリップ(◆〜)をvalueにしてしまっています。
同じアドレスを再び開きなおすと、今度はクッキーを読み込み、
#aaaaになります。
これを防ぐために、書き込んだ後に1回リロードしたらいいのかな?
と素人考えで思いついたのですが、具体的にどうしたらいいのか思い当たりません。
どうすればいいのか、どなたかお願い致します。
0281280
02/03/18 16:43ID:8bBBEqYSageます
変なやり方かも知れないけど自分の場合クッキーセットするところに
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
を書かないで
実際にブラウザで表示されるとき
投稿者:$name 投稿日:&data
って感じのところの直前で
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
をすると変換されるしクッキーには「#aaaa」ってのが入るよ
でもこのやり方だとワード検索とかのときも変換してから表示させないと
ワード検索したときにトリップがそのまま#aaaaで表示されちゃうから注意
$nameで投稿者名を表示する前にトリップを変換してから表示させれば出来るんじゃないかな
0285nobodyさん
02/03/19 08:29ID:???0287287 ◆JvhKfLlY
02/03/19 17:15ID:LQTKhYRQhttp://storm.s3.xrea.com/petroom/pet.cgi
上のCGIで、datファイルに登録者のホスト名も記録して
管理モードから見れるようにしたいのです。
今の管理モードは、こちらです。
http://storm.s3.xrea.com/petroom/x/?pass=0123&mode=enter
ページ下部にある、「ユーザーデータを個別に削除する」というボタンを押していただければ
分かると思いますが、
今現在の管理モードでは
登録者の名前・ポイント の2つしか分からないようになっているのですが、
これを
登録者の名前・リモートホスト・ポイント という形で表示させたいのです。
一応、CGIをテキストにしてアップロードしました。
pet.cgi
http://storm.s3.xrea.com/petroom/x/pet.txt
管理モード
http://storm.s3.xrea.com/petroom/x/index.txt
自分はあまりCGIに詳しくない為、どこを弄ったら良いのかよくわかりませんでした。
もしよろしければ、ご教授下さい。
よろしくお願い致します。
0288nobodyさん
02/03/19 22:16ID:???ざっと見たところ、以下の部分を書き替えるよろし!(行番号:更新コード)
[pet.cgi]
471: push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>0<>$ENV{'REMOTE_ADDR'}\n");
725: @new = "$FORM{'name'}<>$FORM{'pass'}<>$gdate<>$loved<>$ENV{'REMOTE_ADDR'}\n";
1030: push(@new,"$FORM{'name'}<>$FORM{'pass'}<>$gdate<>$newlove<>$ENV{'REMOTE_ADDR'}\n");
[index.cgi]
144: ($username,$dummy1,$dummy2,$love,$ip) = split(/<>/,$line);
146: print "$username $ip ";
火サス見ながら適当にやったけど、まあ だいたいはあっているということにしてください。
余談ですが、ソース中に「質問等はサポート掲示板まで。」とあったのですが、質問した?
0289288
02/03/19 22:31ID:???環境変数:REMOTE_HOST は、ない場合も考えられるので、勝手にこちらで
リモートIPアドレスに仕様変更しています。まずかった?
0290287 ◆JvhKfLlY
02/03/20 11:40ID:fM3Af/c8ありがとうございました!!
今からやってみます。
また結果は報告します。
それから、サポートの方に以前質問したのですが、
「改造についての質問には答えられない」という返答でした・・・。
0291nobodyさん
02/03/20 11:49ID:???キリがないからな。まぁ仕方ないこと。
0292287 ◆JvhKfLlY
02/03/20 11:57ID:fM3Af/c8やってみたのですが、datファイルにはIPアドレスが記録されましたが
管理モードからは見る事ができませんでした・・・
0293287 ◆JvhKfLlY
02/03/20 12:04ID:???print "$username $ip ";
でなくて
print "$username ";
print "$ip ";
と書きかえたら表示されました。
有り難う御座いました。
0295nobodyさん
02/03/22 00:14ID:???0296nobodyさん
02/03/22 19:20ID:3SNeop08ttp://www5.cds.ne.jp/~aid/foolcgi/06.html
の文章変換CGIで変換した言葉をフォームに出力するにはどうしたら
いいですか?
CGIをテキスト化↓
http://www.h2.dion.ne.jp/~i-deai/sozai/bunhen.txt
お願いします。
0297nobodyさん
02/03/22 19:32ID:???sub pr_html{
print $bunsyo;
}
を
sub pr_html {
print "<TEXTAREA>$bunsyo</TEXTAREA>";
}
に変えるとどう?
0298296
02/03/22 20:23ID:3SNeop08できました。ありがとうございます。
0299nobodyさん
02/03/22 21:00ID:???ロリ会員制サイトの作り方教えて下さい。
HOGE.LRw World
http://www3.to/hogelrw
0302nobodyさん
02/03/24 00:23ID:0C88n1+t上のスクリプトなんですがレスにレスが付けれるようになっているのですが、
レスを消すとレスのレスは表示されなくなるだけでログファイルに残っています。
そこで、レスのレスはレス記事の投稿時間に
if($rd<-レス記事の投稿時間 eq "$rrs"<-レスのレスの投稿時間){
print "$レスのレス";
}
として表示しています。
これをヒントにレス記事が削除されたら
レスのレスまで削除されるように使用としたのですが
失敗して出来ませんでした。
この辺りで削除をしているんですが
## 削除キーによる記事削除 ##
@new=();
foreach $line (@lines) {
$dflag = 0;
($num,$k,$dt,$name,$email,$sub,$com,$url,$host,$pw) = split(/<>/,$line);
if ($FORM{'del'} eq "$dt") {
$dflag = 1;
$encode_pwd = $pw;
$del_num = $num;
if ($k eq '') { $oyaflag=1; }
} elsif ($oyaflag && $del_num eq "$k") {
$dflag = 1;
}
if ($dflag == 0) { push(@new,$line); }
}
どなたかレス記事も削除するとレスのレスも同時に削除されるようにする方法を
ご教授頂けませんでしょうか?
宜しくお願いします。
0303nobodyさん
02/03/24 03:21ID:KxmQdHuE0304顔も名前も出さずに毎月100万円
02/03/24 05:04ID:NXQRuNy9Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入
●10,000円単位の高収入
1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
ートも万全です。
●詳細は今すぐHPをご覧ください。
http://www.future-web.tv/7823/
0305nobodyさん
02/03/24 05:23ID:???すごいっ!
「レス」って何回言った?
0306nobodyさん
02/03/24 10:38ID:TSVLSL9a19回 あってる?
日付($dt)と比べてどうするw
× if ($FORM{'del'} eq "$dt") {
○ if ($FORM{'del'} eq "$num") {
それにしても無駄が多そうなコードだな・・・
0308302
02/03/24 14:30ID:Cxn1YG42しかし$form{'del'}のvalueは日付になっているので
たぶんこのままでいいのかと思われます。。。
問題なのはログの順番か
× foreach $line (@lines) {
○ for ($i = $#lines; $i >= 0; $i--) {
$line = $lines[$i];
reverseしてもいいし
0310nobodyさん
02/03/24 15:01ID:Cxn1YG42やってみましたが500 Internal Server Errorが出てしまいました。
やはり無理なのでしょうか?
0312302
02/03/24 15:43ID:8BkMvwhrそれは失礼しました。
ソースはこちらに上げておきました。
http://www.geocities.com/rfregar/comedy_bbs.txt
↑です。いかがでしょうか?
## 削除キーによる記事削除 ##
@new=();
foreach $line (reverse(@lines)) {
〜省略〜
}
reverse(@new);
要するにログ見れば分かるんだけど
親レスより前に子レスが保存されてるのにもかかわらず
"親レスが見つかった後に"子レスを探すから、当然見つからなくて
削除できないわけ
日付をキーにする理由がよくわからんが、そこからして設計ミスかも
0314302
02/03/24 16:00ID:8BkMvwhrhttp://www.geocities.com/rfregar/comedy_bbslog.txt
313の方法をもう一度やってみます。
0315302
02/03/24 16:07ID:8BkMvwhrレスを削除するとレスのレスも削除するようにはなりましたが、
次の書き込みで
ログが正しくありません。
(v2.5以前のログの場合は変換の必要があります)
と出てしまいます。
0316302
02/03/24 16:08ID:???0317nobodyさん
02/03/24 16:12ID:???www.ace-cgi.jp/cgi/bbs/110/bbs1/bbs110.cgi
こいつにトリップ機能つけて欲しいんですけど。
0319302
02/03/24 16:17ID:???0321nobodyさん
02/03/24 16:19ID:???0322302
02/03/24 16:36ID:???出来ました。
http://www.geocities.com/rfregar/bbs110.txt
これです。
0323302
02/03/24 16:39ID:???0326302
02/03/24 16:49ID:???いえいえお役に立ててなによりです。
>>325
改造したソースですか。
私も本家でやってみましたら出来ました。
あとは自分でやってみることにします。
ヒントをありがとうございました。
0327302
02/03/24 16:59ID:8BkMvwhrすみません。
本家ならできるつもりでいたのですが、出来ませんでした。
## 削除キーによる記事削除 ##
@new=();
foreach $line (reverse(@lines)) {
〜省略〜
}
reverse(@new);
〜省略〜はどこからどこまでを略したのでしょうか?
本家で出来るって
また試しちゃったよ・・・ログ番号ばっか増やしちゃって悪いけどw
ttp://www23.freeweb.ne.jp/family/d_i_y/cgi-bin/comedy/comedy_bbs.cgi
ttp://www23.freeweb.ne.jp/family/d_i_y/cgi-bin/comedy/comedy_bbs.log
>>313のは勘違いだから違うよ
ログの中でちゃんと親レスの後に子レスが来てるでしょ?
だから、削除処理周りの改造コードだけでも貼り付けてみ
いじってないなら問題あるわけないし
0329302
02/03/24 17:44ID:8BkMvwhrttp://www23.freeweb.ne.jp/family/d_i_y/cgi-bin/comedy/comedy_bbs.cgi
削除画面にtest1がありますよね?
あれがレスのレスです。
残ってしまっているような。
おれは「親レス書く→レス付ける→親レス消す→ちゃんと子レスごと消える」って
やっただけ
# あとチャット状態になってるからsage進行しない?
0331302
02/03/24 18:12ID:???そうだったんですか。
操作方法は
1.親記事を書く。
2.レスを付ける。
3.レスのレスを付ける。
4.レスのみ削除
でやってみました。
するとレスのレスだけ残ってしまいます。
私はレスを削除すると
レスのレスも同時に削除するように改造をしたいと考えています。
でき(略
# 了解しました。
0332やっと理解した
02/03/24 18:16ID:???@new=();
foreach $line (@lines) {
$dflag = 0;
($num,$k,$dt,$name,$email,$sub,$com,$url,$host,$pw,$col,$rt) = split(/<>/,$line);
# ↑変更
if ($FORM{'del'} eq "$dt") {
$dflag = 1;
$encode_pwd = $pw;
$del_num = $num;
if ($k eq '') { $oyaflag=1; }
}
elsif ($FORM{'del'} eq $rt) { # 以下3行、追加
$dflag = 1;
}
elsif ($oyaflag && $del_num eq "$k") {
$dflag = 1;
}
if ($dflag == 0) { push(@new,$line); }
}
0334324
02/03/24 18:41ID:???忙しいところすいませんが、さっきトリップ付けるのを依頼したものですけど、
メルアド欄を記入しないとトリップはおろか名前まで出てこなくなるみたいなんですが…
0338302
02/03/24 18:57ID:???0339324
02/03/24 18:58ID:???書き込み必須項目・・・name,content,mail
とかありましたけど。
0340324
02/03/24 19:02ID:???このBBSって最初からこういう仕組みになってたんですかね。
それなら無理言ってすいませんでした。
0342296
02/03/24 20:17ID:a/tByZOh質問させて下さい
ttp://www5.cds.ne.jp/~aid/foolcgi/06.html
の文章変換CGIで変換した言葉をフォームに出力するとEUCコードで
文字が出るので文字化けしたりするんです。S-JISコードで文字出した
くていろいろ自分でいじったんですが無理でした。誰かS-JISコードでするには
どうしたらいいか教えて下さい。
CGIをテキスト化↓
http://www.h2.dion.ne.jp/~i-deai/sozai/bunhen.txt
お願いします。
0344296
02/03/24 20:46ID:a/tByZOhありがとうございます くだらないこと聞いてすみません
0345324
02/03/25 05:37ID:???今度はこちらにトリップ付けお願いします。http://www.we-box.com/cgi/rb2main.html
アップロードなどで面倒でしょうから、式を入れるところを指示していただけるだけでも結構です。
よろしくお願いします。
ところで、付け足す式ってこれであってますか?
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x20\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
0346324
02/03/25 05:39ID:???$name =~ s/◆/◇/g;
$name =~ s/\x23(.+)$/ "◆".trip($1)/e;
が抜けてました。
0347nobodyさん
02/03/25 09:13ID:???の~ sの~とsの間はスペースをあけないと行けないですか?
<だけではなく、>も変換したいときは、
$myname =~ s/</</g;
$myname =~ s/>/>/g;
と2つ書かないといけませんか?
0348296
02/03/25 12:02ID:jj3+leP3の
CGIをテキスト化↓
http://www.h2.dion.ne.jp/~i-deai/sozai/bunhen.txt
前質問して変換した文字を
}
sub pr_html {
print "<TEXTAREA>$bunsyo</TEXTAREA>";
としたら文字がテキストエリアに表示されるようになったんですが
iモードからみるとテキストの中に表示されないんです(泣)
原因わかる方いらっしゃいますか?
0349nobodyさん
02/03/25 12:22ID:gl1wRNze0350296
02/03/25 12:33ID:jj3+leP3はい
0351nobodyさん
02/03/25 12:37ID:???この人のソースを見てPerlの勉強をしろという
人はいますか?
0352nobodyさん
02/03/25 12:58ID:???http://www.nttdocomo.co.jp/p_s/imode/tag/textarea.html
0353nobodyさん
02/03/25 14:36ID:???http://www.we-box.com/cgi/rb2main.html
$mynameって↑の所が配布しているスクリプトに書いてあったの?
て書くか過去ログとか読んでみた?
0355nobodyさん
02/03/25 19:00ID:???なんか駄目なのか初心者の私には分からないけど。
0356356
02/03/26 16:38ID:Ag222T8Yhttp://www.geocities.com/rtewat/petit.txt
こちらのKENT氏の掲示板に
http://www.geocities.com/rtewat/petit_up.txt
こちら側の画像アップロードを付けたいと思ったのですが、
Petit Boardのバージョンが違っているために
うまく機能を取り付けることができませんでした。
どなたか取り付けられるほどのスキルをお持ちの方がおられましたら
画像アップロード機能を取り付けて頂けませんでしょうか?
0359nobodyさん
02/03/26 23:18ID:???>やだ。
じゃなくて、オマエにはできないんダロ!!
えらそうにすんな!!
0363nobodyさん
02/03/27 20:09ID:Vxg6xCJc2chでいえば10件というようにトップでの子記事(レス)の件数を設定する方法はあるでしょうか?
また、子記事の件数を制限させる方法があるでしょうか?
検索しても見つけることができなかったので教えてくださいませ。
0364nobodyさん
02/03/27 20:19ID:???書き方は略
0365aaa
02/03/27 21:09ID:Vxg6xCJcヒントください
参照サイトがあればうれしいなぁ
■ このスレッドは過去ログ倉庫に格納されています