トップページ⇒php
1001コメント363KB

スクリプト改造工房 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を用意すればなお良し)
を必ず明記しよう。
026726602/03/17 23:01ID:???
すみません。266でした。
0268nobodyさん02/03/17 23:08ID:???
2chはSJISの文字列しか来ないと仮定してデータのやり取りをしてる。
他のは知らんけどYYBBSはEUCとかJISが来ても自動的に変換する。
半角カナとかが入ってるとこの変換に失敗することがあるからダメなの。
026926602/03/17 23:08ID:???
簡単に解決しました。すみせんま。
027026602/03/17 23:10ID:???
すみせんま。×
まみません。○
>>268
ありがとうございます。
そこで今コンバータしている所をとったらできたのですが
何か問題がありますでしょうか?
027126602/03/17 23:10ID:???
まみません。×
すみません。○
はぁ。
0272nobodyさん02/03/17 23:16ID:???
JISやEUCで書き込む人がいたら化けるはず。
2chだと「ERROR、SJISで書いてちょ」とか言われてはじかれるけど。
0273nobodyさん02/03/18 00:07ID:???
ふーん。
コントロール文字の入力テスト



0274nobodyさん02/03/18 00:11ID:???
日本語EUC文字の入力テスト
写爵叱失、ホ偲漆柴A。ゥ」・・
0275nobodyさん02/03/18 00:13ID:???
JIS文字コードの入力テスト
(IJ]68$B$N(IC=D$B#o#k!)(B

0276nobodyさん02/03/18 00:14ID:???
>>275
・がESCか。わかりやすい。
0277nobodyさん02/03/18 00:17ID:???
Unicodeの入力テスト
Tn0畸5_P[k0・c0f0ス0・ケ0n0
0278nobodyさん02/03/18 03:18ID:???
他でやれ アフォ

>>266の誤字ワラタ つーかアフォ
0279nobodyさん02/03/18 13:38ID:???
引き続き、厨以外の相談歓迎age!!
0280nobodyさん02/03/18 16:42ID:???
話題になったばかりで申し訳ないのですが、
>>185ボクもトリップをつけてみました。
しかし、>>198に書かれてる通り、
書き込み後の名前をクッキーから読み込むのではなく、
変換されたトリップ(◆〜)をvalueにしてしまっています。

同じアドレスを再び開きなおすと、今度はクッキーを読み込み、
#aaaaになります。

これを防ぐために、書き込んだ後に1回リロードしたらいいのかな?
と素人考えで思いついたのですが、具体的にどうしたらいいのか思い当たりません。

どうすればいいのか、どなたかお願い致します。
028128002/03/18 16:43ID:8bBBEqYS
sageで質問してしまいました。
ageます
0282nobodyさん02/03/18 18:05ID:???
>>280
改造やめれば。
そんなスキルで改造されるスクリプトがかわいそう。
0283nobodyさん02/03/18 18:10ID:???
>>282
それを言っちゃ、このスレの存続に関わる(w
0284 ◆0z.4Is5E 02/03/18 19:54ID:???
>>280

変なやり方かも知れないけど自分の場合クッキーセットするところに

#トリップ機能
$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:???
◆0z.4Is5E が心を入れ替えてるぞ(w
0286nobodyさん02/03/19 12:05ID:???
>>284
>変なやり方かも知れないけど
たしかに変だ。
アホみたいだよ。
0287287 ◆JvhKfLlY 02/03/19 17:15ID:LQTKhYRQ
はじめまして。質問させてください。

http://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:???
>287
ざっと見たところ、以下の部分を書き替えるよろし!(行番号:更新コード)

[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 ";

火サス見ながら適当にやったけど、まあ だいたいはあっているということにしてください。

余談ですが、ソース中に「質問等はサポート掲示板まで。」とあったのですが、質問した?
028928802/03/19 22:31ID:???
追加しておきますが、「リモートホスト」を表示させたいようですが、
環境変数:REMOTE_HOST は、ない場合も考えられるので、勝手にこちらで
リモートIPアドレスに仕様変更しています。まずかった?
0290287 ◆JvhKfLlY 02/03/20 11:40ID:fM3Af/c8
>>288
ありがとうございました!!
今からやってみます。
また結果は報告します。

それから、サポートの方に以前質問したのですが、
「改造についての質問には答えられない」という返答でした・・・。
0291nobodyさん02/03/20 11:49ID:???
>290
キリがないからな。まぁ仕方ないこと。
0292287 ◆JvhKfLlY 02/03/20 11:57ID:fM3Af/c8
>>288
やってみたのですが、datファイルにはIPアドレスが記録されましたが
管理モードからは見る事ができませんでした・・・
0293287 ◆JvhKfLlY 02/03/20 12:04ID:???
と思ったら自分でなんとかなりました。
print "$username $ip ";
でなくて
print "$username ";
print "$ip ";
と書きかえたら表示されました。

有り難う御座いました。
0294nobodyさん02/03/20 20:19ID:???
>>293
簡単じゃん。
0295nobodyさん02/03/22 00:14ID:???
$thread->age();
0296nobodyさん02/03/22 19:20ID:3SNeop08
質問させて下さい

ttp://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:???
>296
sub pr_html{
print $bunsyo;
}
を
sub pr_html {
print "<TEXTAREA>$bunsyo</TEXTAREA>";
}
に変えるとどう?
029829602/03/22 20:23ID:3SNeop08
>297
できました。ありがとうございます。
0299nobodyさん02/03/22 21:00ID:???

ロリ会員制サイトの作り方教えて下さい。

HOGE.LRw World
http://www3.to/hogelrw
0300nobodyさん02/03/22 21:41ID:???
>>299
板違い
0301nobodyさん02/03/23 01:38ID:???
>>299
気違い
0302nobodyさん02/03/24 00:23ID:0C88n1+t
http://www23.freeweb.ne.jp/family/d_i_y/cgi-bin/comedy/comedy_bbs.cgi
上のスクリプトなんですがレスにレスが付けれるようになっているのですが、
レスを消すとレスのレスは表示されなくなるだけでログファイルに残っています。

そこで、レスのレスはレス記事の投稿時間に
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:KxmQdHuE
age
0304顔も名前も出さずに毎月100万円02/03/24 05:04ID:NXQRuNy9
    
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入    

●10,000円単位の高収入
 1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
 インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
 インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
 ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
 ートも万全です。
●詳細は今すぐHPをご覧ください。
  http://www.future-web.tv/7823/
0305nobodyさん02/03/24 05:23ID:???
>302
すごいっ!
「レス」って何回言った?
0306nobodyさん02/03/24 10:38ID:TSVLSL9a
>>305
19回 あってる?
0307 02/03/24 13:10ID:???
>>302
日付($dt)と比べてどうするw

× if ($FORM{'del'} eq "$dt") {
○ if ($FORM{'del'} eq "$num") {

それにしても無駄が多そうなコードだな・・・
030830202/03/24 14:30ID:Cxn1YG42
>>307さんご回答ありがとうございます。
しかし$form{'del'}のvalueは日付になっているので
たぶんこのままでいいのかと思われます。。。
0309 02/03/24 14:44ID:???
よく見るとそうね・・・妙な設計
問題なのはログの順番か

× foreach $line (@lines) {
○ for ($i = $#lines; $i >= 0; $i--) {
   $line = $lines[$i];

reverseしてもいいし
0310nobodyさん02/03/24 15:01ID:Cxn1YG42
>>309さん(307さんでしょうか?)
やってみましたが500 Internal Server Errorが出てしまいました。
やはり無理なのでしょうか?
0311 02/03/24 15:34ID:???
この程度のことが無理なわけない
全角スペースまでコピーしちゃったとか?

ソースどっかに上げてくれればもっとハッキリするんだけど
031230202/03/24 15:43ID:8BkMvwhr
>>311
それは失礼しました。
ソースはこちらに上げておきました。
http://www.geocities.com/rfregar/comedy_bbs.txt
↑です。いかがでしょうか?


0313 02/03/24 15:51ID:???
reverse使って簡単にこれでどう?

## 削除キーによる記事削除 ##
@new=();
foreach $line (reverse(@lines)) {

    〜省略〜

}
reverse(@new);

要するにログ見れば分かるんだけど
親レスより前に子レスが保存されてるのにもかかわらず
"親レスが見つかった後に"子レスを探すから、当然見つからなくて
削除できないわけ

日付をキーにする理由がよくわからんが、そこからして設計ミスかも
031430202/03/24 16:00ID:8BkMvwhr
ログファイルはこれです。
http://www.geocities.com/rfregar/comedy_bbslog.txt
313の方法をもう一度やってみます。
031530202/03/24 16:07ID:8BkMvwhr
313の方法で試したのですが
レスを削除するとレスのレスも削除するようにはなりましたが、
次の書き込みで
ログが正しくありません。
(v2.5以前のログの場合は変換の必要があります)
と出てしまいます。
031630202/03/24 16:08ID:???
ログの更新処理でミスが出ていると思うのですが。
0317nobodyさん02/03/24 16:12ID:???
http://www.ace-cgi.jp/cgi/bbs/110/index.html
www.ace-cgi.jp/cgi/bbs/110/bbs1/bbs110.cgi

こいつにトリップ機能つけて欲しいんですけど。
031830202/03/24 16:15ID:???
>>317
それは私が引き受けますね。
031930202/03/24 16:17ID:???
タイプはどれですか?
0320nobodyさん02/03/24 16:18ID:???
>>318
ありがとうございます!
0321nobodyさん02/03/24 16:19ID:???
タイプは一番上のBBS(1)風でお願いします。
032230202/03/24 16:36ID:???
>>317
出来ました。
http://www.geocities.com/rfregar/bbs110.txt
これです。
032330202/03/24 16:39ID:???
そういえばタイプとか関係ありませんでした(笑
0324nobodyさん02/03/24 16:42ID:???
>>322
ほんとにありがとうございました。

>>323
そうでしたか。笑
0325 02/03/24 16:44ID:???
>>314
ダメだ・・・完全に寝ぼけてる。>>313は嘘w

このスクリプトに問題なくない?
本家で試したらきれいに消えたし
>>314が改造したソースを上げないと意味ないかも
032630202/03/24 16:49ID:???
>>324
いえいえお役に立ててなによりです。
>>325
改造したソースですか。
私も本家でやってみましたら出来ました。
あとは自分でやってみることにします。

ヒントをありがとうございました。
032730202/03/24 16:59ID:8BkMvwhr
>>325
すみません。
本家ならできるつもりでいたのですが、出来ませんでした。
## 削除キーによる記事削除 ##
@new=();
foreach $line (reverse(@lines)) {

〜省略〜

}
reverse(@new);
〜省略〜はどこからどこまでを略したのでしょうか?
0328 02/03/24 17:33ID:???
>>327
本家で出来るって
また試しちゃったよ・・・ログ番号ばっか増やしちゃって悪いけど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のは勘違いだから違うよ
ログの中でちゃんと親レスの後に子レスが来てるでしょ?

だから、削除処理周りの改造コードだけでも貼り付けてみ
いじってないなら問題あるわけないし
032930202/03/24 17:44ID:8BkMvwhr
>>328
ttp://www23.freeweb.ne.jp/family/d_i_y/cgi-bin/comedy/comedy_bbs.cgi
削除画面にtest1がありますよね?
あれがレスのレスです。

残ってしまっているような。
0330 02/03/24 17:55ID:???
これはどう操作した?
おれは「親レス書く→レス付ける→親レス消す→ちゃんと子レスごと消える」って
やっただけ

# あとチャット状態になってるからsage進行しない?
033130202/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); }
}
033330202/03/24 18:30ID:???
>>307
332の方法でうまく出来ました。
ありがとうございました。

033432402/03/24 18:41ID:???
>>302
忙しいところすいませんが、さっきトリップ付けるのを依頼したものですけど、
メルアド欄を記入しないとトリップはおろか名前まで出てこなくなるみたいなんですが…
033530202/03/24 18:49ID:???
>>324
はずかし〜。
小1時間まってくださいね。
マジでやりとげますので。
033632402/03/24 18:55ID:???
>>335
いえいえ、こちらこそ何度もすいません。
メルアド欄が書き込み必須項目になってたので、僕も最初気付きませんでいた。
033730202/03/24 18:56ID:???
>>324
このデザインの場合、メールアドレスを環境設定にて「入力必須項目」に指定して下さい。
と書いてありますけど。
033830202/03/24 18:57ID:???
これはどうすれば必須じゃなくなるのでしょうか?
033932402/03/24 18:58ID:???
アップロードしたあとで管理のところに
書き込み必須項目・・・name,content,mail
とかありましたけど。
034032402/03/24 19:02ID:???
あっ、すいません。
このBBSって最初からこういう仕組みになってたんですかね。
それなら無理言ってすいませんでした。
034130202/03/24 19:03ID:???
>>324
すみません。
お役に立てなくて。
034229602/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
お願いします。
0343 02/03/24 20:35ID:???
EUC指定してるじゃん

$code = "euc";
↓
$code = "sjis";
034429602/03/24 20:46ID:a/tByZOh
>>343
ありがとうございます くだらないこと聞いてすみません
034532402/03/25 05:37ID:???
昨日の324です。昨日のbbsはちょっと失敗だったもんで、もし差し支えがなければ
今度はこちらにトリップ付けお願いします。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);
}
034632402/03/25 05:39ID:???
すいません。
$name =~ s/◆/◇/g;
$name =~ s/\x23(.+)$/ "◆".trip($1)/e;
が抜けてました。
0347nobodyさん02/03/25 09:13ID:???
$myname =~ s/</</g;
の~ sの~とsの間はスペースをあけないと行けないですか?
<だけではなく、>も変換したいときは、
$myname =~ s/</</g;
$myname =~ s/>/>/g;
と2つ書かないといけませんか?
034829602/03/25 12:02ID:jj3+leP3
ttp://www5.cds.ne.jp/~aid/foolcgi/06.html
の
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:gl1wRNze
i-modeはテキストボックすウツルノカ?
035029602/03/25 12:33ID:jj3+leP3
>>349
はい
0351nobodyさん02/03/25 12:37ID:???
Perlで書かれたCGIを作って公開してる人で、
この人のソースを見てPerlの勉強をしろという
人はいますか?
0352nobodyさん02/03/25 12:58ID:???
>>296
http://www.nttdocomo.co.jp/p_s/imode/tag/textarea.html
0353nobodyさん02/03/25 14:36ID:???
>>324
http://www.we-box.com/cgi/rb2main.html
$mynameって↑の所が配布しているスクリプトに書いてあったの?
て書くか過去ログとか読んでみた?
0354nobodyさん02/03/25 15:05ID:???
>>353
すいませんでした。KENTのを参考にしてやってみます。
0355nobodyさん02/03/25 19:00ID:???
KENTのCGIも凄いよね。
なんか駄目なのか初心者の私には分からないけど。
035635602/03/26 16:38ID:Ag222T8Y
突然の依頼で申し訳ございません。
http://www.geocities.com/rtewat/petit.txt
こちらのKENT氏の掲示板に
http://www.geocities.com/rtewat/petit_up.txt
こちら側の画像アップロードを付けたいと思ったのですが、
Petit Boardのバージョンが違っているために
うまく機能を取り付けることができませんでした。

どなたか取り付けられるほどのスキルをお持ちの方がおられましたら
画像アップロード機能を取り付けて頂けませんでしょうか?

0357nobodyさん02/03/26 17:55ID:???
>>356
やだ。
0358nobodyさん02/03/26 23:15ID:???
>>357
無理な事を書いて申し訳ございませんでした。
0359nobodyさん02/03/26 23:18ID:???
>357
>やだ。
じゃなくて、オマエにはできないんダロ!!
えらそうにすんな!!
0360nobodyさん02/03/26 23:31ID:???
>>359
ごめん
0361nobodyさん02/03/27 00:25ID:???
>>360
やだ。
0362nobodyさん02/03/27 02:43ID:???
>>361
でもおしえない。
0363nobodyさん02/03/27 20:09ID:Vxg6xCJc
YY-Boardで親記事の表示件数はデフォルトで設定できるんですが、
2chでいえば10件というようにトップでの子記事(レス)の件数を設定する方法はあるでしょうか?
また、子記事の件数を制限させる方法があるでしょうか?
検索しても見つけることができなかったので教えてくださいませ。
0364nobodyさん02/03/27 20:19ID:???
子記事を配列に入れて下から10件取って表示すれ
書き方は略
0365aaa02/03/27 21:09ID:Vxg6xCJc
>>364
ヒントください
参照サイトがあればうれしいなぁ
0366nobodyさん02/03/27 21:52ID:???
>>365
そんな便利なサイトがあったらおれもほしいなぁ
■ このスレッドは過去ログ倉庫に格納されています