CGIだけどなんか質問ある Pert 5.01
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/03 12:49ID:673UxTI5?? ̄∇ ̄??
0411388
02/03/15 18:46ID:???0412388
02/03/15 19:00ID:???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);
}
早速やってみます!
0414386
02/03/15 19:12ID:???>>388ごめん、騙したつもりはなかったんだけど。
確かにsubstrの使い方とかよく覚えてなかったし、テストもしてないけどさ。
ところで、s/&/&/g; もしたほうがいいんでは?
#"aaaa
2ちゃんねる→◆TVWmrXp6
Perlスクリプト→◆TVWmrXp6
#<aaaa
2ちゃんねる→◆DdwRIQ4Q
Perlスクリプト→◆DdwRIQ4Q
#>aaaa
2ちゃんねる→◆nxB5V1NE
Perlスクリプト→◆nxB5V1NE
今度こそ完璧です!できました!
他の普通のトリップも全部変換できました!
ありがとうございました!
他に見る方が居るかもしれないので、>>413に
ソースを書いておきます!
お世話になりました。m(_ _)m
書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$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;
$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);
}
#&aaaa
$key =~ s/&/&/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆JwJPq806
#$key =~ s/&/&/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆QQXkbDVs
>>417
つーかここにちゃんと表示されてないですねw
いやぁ… (´ー`ゞ
というわけで書き直します。
トリップ生成ルーチン
書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$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にこのトリップ機能をつけるにはどこにこのコードを
付け足せばいいんでしょうか?
### --- ログ書き込み処理 --- ###
sub regist {
|
略
|
#トリップ機能
$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);
}
こんな感じにしてみたんですが書き込みのときに名前を「名無しさん#aaaa」
でやったんですがそのまま「名無しさん#aaaa」と表示されてしまいます・・
どこを直せばいいんでしょうか?
機能、スレ違いを指摘されたので続きは
スクリプト改造工房
http://pc.2ch.net/test/read.cgi/php/1012839651/
でやりましょうか♪
俺に出来ることなら手伝いますんで。
ありがとございます。では移動します。
0426nobodyさん
02/03/16 19:29ID:SKQhp2KRCGIのスクリプトを書くにあたって、
処理ごとにファイルを分けるのと、ひとつのファイルにすべての
処理をさせてしまうのとどちらがどう違うのでしょうか。
それぞれ利点欠点などはあるのですか?
0428QQQQQQQ
02/03/16 22:36ID:???このHTMLファイルはログの増加にあたり移動したりするので、
ブラウザのアドレスバーにこのURLを表示したくありません。
かといって全行perlに読まして書くのは処理が重くていやなのです。
location: を使ってみましたがURLがかわってしまいました。
どうかご教授ください。
0429親切な人
02/03/16 22:40ID:???ヤフーオークションで、凄い人気商品、発見!!!
「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0432nobodyさん
02/03/17 00:22ID:???もしかしてこれで処理が重くなるほどすごいhtmlなの?
open F, "go_this_page.html";
while (<F>){ print; }
close F;
0433QQQQQQQ
02/03/17 00:41ID:???>>430
シンボリックリンクはHTMLファイルにするのでしょうか。理解できませんでした?
>>431
フレームは確かにできそうですね。ありがとうございます。でもフレーム未使用の方法はないのかに。
>>432
別に1件1件はたいして重くないですが、それでもHTMLに飛ばすよりはだいぶ重いように思います。
0434nobodyさん
02/03/17 01:31ID:4IUULEh/ルート直下の/cgi-binでCGIを動かそうと思っているんですが、
その際CGI動作確認とかFTP転送とかするためにCGIのアカ
ウントを作成するのがいいかなあと思うんですが、みなさんは
どうしていますか?
0435nobodyさん
02/03/17 07:57ID:???板違い
http://pc.2ch.net/linux/
0436nobodyさん
02/03/17 07:58ID:???http://pc.2ch.net/test/read.cgi/linux/1014651391/
0437nobodyさん
02/03/17 09:32ID:???向こういってみます
0438nobodyさん
02/03/17 16:02ID:???1.サーバの負荷をおさえつつ送信するなんかイイアイデア。
2.途中で逝っちゃった場合の状況の知り方と対処。
なんつーのが知りたいっす。Webで検索かけまくったけどコレって
いうのがナイと思う。
0439nobodyさん
02/03/17 16:32ID:???0442nobodyさん
02/03/17 17:18ID:???物は言いようって何かひかかるが、ようはスパムかなんかのCGI作ろう
とかしてんだろって言いたいのかな? そんな事はしてないが・・・。
ま、それはそれとして、例えば 5 件 send したらちょっと休むとか、キュー
を介すのとそうじゃないのでどうなのかとか、そういう事が聞きたいんだけ
ど、CGIの範疇じゃない? 今のところ、ループでぐるぐる回して送信してい
るだけなんでサーバの負荷の大きいのかなあと思った次第。
板違いならスマソ。。。
0443nobodyさん
02/03/17 20:50ID:???my $salt = substr("${key}H.", 1, 2);
ってどういう意味(ここ ${key}H.)
あと
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
って何を何に?
0444nobodyさん
02/03/17 20:52ID:???0445nobodyさん
02/03/17 21:12ID:???perldoc -f tr
perldoc perlop
>444
perldoc Benchmark
0446nobodyさん
02/03/18 02:50ID:e/HSAhdE組み込むとエラーが出ます。SSIのincludeでアクセスカウンタcgiを呼び出して使って
たんですが。通常のページとフレームを使ったページ内に入れるのとでは何が違うの
でしょうか?
0447nobodyさん
02/03/18 03:07ID:???答え飽きました≒過去ログ読めやがれ
0449446
02/03/18 03:23ID:e/HSAhdEフレーム アクセスカウンタで2ch発言検索はしたけどHITしなかったんだよ〜
0450nobodyさん
02/03/18 08:26ID:???____ l
\ ―┼―ヽ \
| ――――― / | ゝ
_/ / |
/ _」
l / || ヽ ―┼― l
ヽ ┌―┐ ―┼― ┌―――┐ / ̄ ̄ ̄7| | ―― ―┴― _|__/
_ .| ┌┤ ――┼―― | | | ― 「 ̄ ̄ ̄ ̄| / | / ̄\
| | ̄ ̄ ̄| / | | / ― | | / |/ |
人| □ 」 / \ | | / ┌‐┐ | | | /| /
ノ ヽ―――  ̄ ̄ ̄ ̄ヽ ├―――┤ / ├‐┤ ノ |_」 ヽ/ ヽ _/
_____ ────
| __ ┌───┐
| ┌┐ ─┼ ├───┘
./ └┘ | / ─┼─
/ l / ヽ | ノ /─┐
/ ── 」 / 」
| || /
| ̄ ̄ ̄ ̄ ̄| ||____|_ /
| | /| / ̄ ̄ ̄ ̄| ̄ ̄
| / | |
/ / .| |
/ _| /
 ̄ ̄ ̄ ___/
0451nobodyさん
02/03/18 08:50ID:???0452nobodyさん
02/03/18 08:53ID:???0454nobodyさん
02/03/18 09:09ID:???0455nobodyさん
02/03/18 22:00ID:???0457nobodyさん
02/03/19 00:32ID:???もともとperlとPHPが似ているので、
使用状況に応じて簡単に変換できたらよさそうじゃんか。
0459nobodyさん
02/03/19 03:54ID:rsFIfwz6ローカルでは動作するのにサーバーに転送すると必ずInternal Server Errorになります。
エラーログを見てみるとPremature end of script headers:だけ書かれていました。
またエラー箇所を探したのですが、起動のたびにエラーになるlineが移動して1箇所には定まりません。
これはメモリ不足によるプロセスの強制終了の可能性と考えたほうがいいのでしょうか?
よろしくお願いしたします。
0460nobodyさん
02/03/19 04:39ID:???0461nobodyさん
02/03/19 05:19ID:???headerが出力されてません。ってエラーなわけで、
ローカルでは動いてるということは…
スクリプトで使ってるモジュールがサーバには無い、とか予想してみる。
0463じゃ代弁しとくよ
02/03/19 09:48ID:???0464nobodyさん
02/03/19 10:20ID:???でも正直なところはいいね。
ガキ流れは、
「php使えばいいだろ」のあたりからなってしまいました。オレもガキじゃん。
0465459
02/03/19 12:54ID:mcTfQ2cdありがとうございます。
特にモジュールは使用していません。ごく基本的な関数のみで作ってあります。
何より不可思議なのは、どこの時点でエラーになるのかがCGIを動かす度に
変わるということです。例えば...
ループA{
ループB{
サブルーチン
}
}
となっていて、
1回目はループAの47回目、ループBの71回目ではエラーがすでに発生
2回目はループAの47回目、ループBの70回目ではエラーがすでに発生
3回目はループAを37回目、ループBを69回目ではエラーはなし
4回目はループAを37回目、ループBを70回目ではエラーはなし
5回目はループAを37回目、ループBを71回目ではエラーはなし
という具合に、いつまで経ってもエラー箇所が一箇所に定まらないのです。
ただループAが37回目のどこかで発生するのは確かなんですけど。
0466nobodyさん
02/03/19 13:08ID:???ソース見せれ。
0467
02/03/19 14:31ID:ZgA62M2Hクッキー読むスクリプトはみつかるのですが
保存するところがみつかりません、もしかしてCGIのほうでやってるんでしょうか?
0468nobodyさん
02/03/19 15:02ID:???0470459
02/03/19 19:30ID:LM+0/bSKサーバー会社へ出していた同様の質問の回答がやっと帰ってきました。
------------------------------------------------------------
確認いたしましたところ、お客様がご利用のCGIは XXX共有サーバーの
CPU Time の制限にかかり、サーバーエラーとなっていました。
XXX共有サーバー は、共用のサーバーですので、高負荷状態に
陥ることを防ぐためにこちらの制限を行っております。
-------------------------------------------------------
ということでした。すみません、解決しました。
またよろしくお願いします!
0471123
02/03/19 21:45ID:???0472nobodyさん
02/03/19 21:49ID:???俺は「使っているのを見て知った」んで、どうやってLocationを知ったのか謎だ。
後学のために教えてくれ。
ところでGoogleって知ってるか?
0473nobodyさん
02/03/19 22:04ID:???0474nobodyさん
02/03/20 23:54ID:Hs1uL44x付けた時のようにページを転送することは可能ですか?
0475nobodyさん
02/03/20 23:56ID:Hs1uL44xprint "<a href=\"http://hogehoge.nu\" target=\"_top\">転送</a>";
とかではなくてLocationで飛ばすような感じです。
0476nobodyさん
02/03/21 05:04ID:???CGIは基本的にブラウザの挙動をいじれないので,不可能と思われ。
フォームでターゲット指定したり,JavaScript系を使ったりすれば可能。
0477nobodyさん
02/03/21 06:52ID:???普通は
<form action="hoge.cgi "target="_top">
のようにCGIを呼び出してLocationで飛ばすけど、
それじゃ不満かい?
0478nobodyさん
02/03/21 08:45ID:???0479nobodyさん
02/03/21 09:09ID:???0481nobodyさん
02/03/21 15:27ID:SSRvR1vK&jcode'convert(*value,'sjis');
↑部分を取り除くと使用できるようになるのはわかるんですが、
EUCなどの対策になにかいい方法はないでしょうか?
0482nobodyさん
02/03/21 15:27ID:SSRvR1vKKENT×
KENT氏○
0483nobodyさん
02/03/21 15:35ID:???(( ( ) ) )
( ( ( ) ) )
’ (( ) ) )
( (( | | ) )
‘ (( | | ) ) ‘
’ | | 春ですね。
○イザベラ! | | ’ ξ○ξ スミス・・・
−+− | | V ,
| | | |
/\ / \ /\
0484hanamogera
02/03/21 15:37ID:c8Atj9bt何ででしょうか?
sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, "sjis", "", "z");
$value =~ s/&/&\;/g;
$value =~ s/</\<\;/g;
$value =~ s/>/\>\;/g;
$value =~ s/\"/\"\;/g;
$value =~ s/<>/\<\;\>\;/g;
$value =~ s/<!--(.|\n)*-->//g;
$FORM{$name} = $value;
}
$name = $FORM{'name'};
$title = $FORM{'title'};
$comment = $FORM{'comment'};
$comment = ~ s/\r\n|\r|\n/$br/g;
$mode = $FORM{'mode'};
}
0485nobodyさん
02/03/21 15:38ID:???大崎さんのやりかたを参考にして,きっちり判定するとか。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Code
0487nobodyさん
02/03/21 21:53ID:zzUVZQ93アクセスカウンタが20いくごとに起動、とかの方法はわかるんですが、
一定の時間ごとに起動させるというのは何を使えば良いでしょうか?
0489nobodyおっさん
02/03/21 22:11ID:???あなたが一定時間ごとにアクセスしてこのときに実行させるか
あなたならどっち?
0490nobodyさん
02/03/21 22:12ID:???0491nobodyさん
02/03/21 23:01ID:rmv2GYdPある一定の時間を指定して、CGIの呼び出しがあったときにチェックして、
その時間が過ぎていたら処理を行い、次に処理する時間もそのときに指定する
チェックルーチンを入れれば、cron使えなくても擬似的に出来るよ。
0492487です
02/03/21 23:39ID:zzUVZQ93ありがとうございます。cronですね、使えるかなぁ・・・
491さんの方法もよさげだけどやり方わかんないす。
0493nobodyさん
02/03/22 00:01ID:???これは止めておいた方がいいぞ。
while(1){
# ここにコード
sleep(60*60);
}
0494nobodyさん
02/03/22 00:14ID:p0uEX1fS年月日時分秒をシリアルな数値で獲得できるだろ?
処理後にあれを一日だったら1日分足して置けばいいんだよ。
いろいろやり方ありそうだよな。ほかにも。
どっちにしてもそんなに難しい処理じゃないと思うよ。
一日単位だったら、単純に日にちがカワったら処理をして、新しい日にちに
書き換えたらいいんだし。
0495487です
02/03/22 01:24ID:esA90bh2アクセスカウントUP時に何回かに1度の割合で実行させる、という方法以外に
実行させる方法あるのですかね?
>493の方法は常にpgを動かしておきsleepが切れたときに本実行させる
ものだと思いますが止めたほうが良いとのこと。
>494のようにどっかに日時を持っておくとして、それを起動させる方法はどんなのですか?
0496nobodyさん
02/03/22 01:46ID:???0499厨房
02/03/22 15:53ID:3P7KS9SJhttp://zurubon.strange-x.com/uploader/
を色々見てみたんですけど、CG�Tが初めてなので
全く分かりません。
何かヒントまたは代わりに作って下さる方いらっしゃらないでしょうか?
0500500
02/03/22 16:06ID:???CGIが初めての奴に対しての"ヒント"ってなんになると思う?
数行のスクリプトならまだしらまだしも
アップローダーを作れか?あほ。
0501nobodyさん
02/03/22 16:08ID:???まだしも○
スマソ
0502499
02/03/22 16:20ID:3P7KS9SJ0503nobodyさん
02/03/22 16:35ID:???print <<"__FORM__";
Content-type: text/html
<FORM ACTION="$ENV{SCRIPT_NAME}" ENCTYPE="multipart/form-data" METHOD=POST>
<INPUT TYPE="FILE" NAME="file">
</FORM>
__FORM__
print <STDIN>;
ブラウザが送るデータを観察してデコードする方法でも考えればぁ?(゚Д゚)
0504nobodyさん
02/03/22 17:01ID:KCkKfXvIメールフォームでメールを送ろうとしたのですが送信ボタンを押して待てど暮らせど
出るはずの確認画面が出ません。
これは送信されてないものと考えていいのでしょうか。
重複送信になるのが怖くて再送信することができずにいます。
0505nobodyさん
02/03/22 17:02ID:qjFFNAMI0506504
02/03/22 17:50ID:???っていうか再送信して大丈夫か否かってのが訊きたいんですけどダメですか?
直接相手に問い合わせしようにも他の連絡手段が無いんですよね
(イベントの特設ページみたいなサイトだし)
0507nobodyさん
02/03/22 18:53ID:fazmqrAM( ´_ゝ`)フーン
0508nobodyさん
02/03/22 21:43ID:tj2D5lJW■ このスレッドは過去ログ倉庫に格納されています