CGIだけどなんか質問ある Pert 5.01
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/03 12:49ID:673UxTI50331nobodyさん
02/03/12 16:04ID:???0332nobodyさん
02/03/12 16:39ID:???げ!
まあ、2行目のprint 以下になんもないので、見逃してください。
>>331
telnet でシェルに入って実行した時のエラー
>./utf8.cgi
./utf8.cgi: 鏤殖!/usr/local/bin/perl: not found
use: not found
: not found
print: not found
>
( ゚д゚)…ミンナハドウヤッテクリアシテルノカワカラナイヨ
あきらめて SJIS で HTML4.01 Strict な CGI にします・゚・(つД`)・゚・。
0333327=329=332
02/03/12 16:43ID:???0334nobodyさん
02/03/12 17:00ID:???#!/usr/local/bin/perl
↑これはあっているの?
#!/usr/local/bin/perl5 とかだったりしない?
0335332
02/03/12 17:14ID:???同じソースをSJISでうpすると動くんですぅ。
SJIS で動作している CGI をそっくりそのまま UTF-8 に変換して
エラーが出てるんです。
UTF-8 に変換したのがローカルで perl utf8.cgi で動いてるのも確認してるし、
use utf8; もいれたし、
FFFTP でアスキー送信のボタンがへっこんでるの確認して送信してるし、
うpされたファイルのバイト数が減ってる(CRの分)確認してるし。
他にどこを確認したらいいでしょうか。
0336nobodyさん
02/03/12 17:49ID:???0337nobodyさん
02/03/12 17:53ID:???>作成に使ったのは Windows 用の Dana というテキストエディタなのですが、
>バイナリエディタで先頭3文字削除しても、
>また Dana で編集するとその3文字がくっつくし…。
これが原因でperlのパスがおかしくなってると思う。
>>332のエラーは実行するプログラムが見つからないってことでしょ。
普通のテキストエディタ使おうよ。
0338332
02/03/12 17:53ID:???utf8.cgi を
#!/usr/local/bin/perl
use utf8;
require "utf8.pl";
にして、ascii で保存。
utf8.pl を
print <<__EOD__;
Content-type: text/html;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>UTF-8 で出力するCGI のテスト</title>
</head><body>
<h1>UTF-8 マンセー( ´∀`)</h1>
</body>
</html>
__EOD__
1;
にして、UTF-8 で保存。サーバーにうpして動きました。
よその人がどうやってるのかわからんけど、
今後はこの方法で作成します。みなさんありがとう。
0339332
02/03/12 17:55ID:???普通のテキストエディタってどんなのかわからないんですが、
xyzzy も terapad も同じように先頭3文字くっつきやがりました。
疲れました。
0340nobodyさん
02/03/12 18:18ID:???秀丸はEF,BB,BF=BOM(Byte Order Mark)付いてないみたい。
ほとんど秀丸しか使ってないからそういうものだと思いこんでしまった。ゴメン。
EmEditorは付けるか付けないか選べた。notepadは付いてた。
とにかく#!をシェルに読ませないことには動かないでしょう。BOMは邪魔だね。
0341nobodyさん
02/03/12 18:32ID:???xyzzyだとM-x change-fileio-encodingでutf8nするとはじめの3バイトつかないよ。
utf8だと付く。
ってことでがんばれー。
0342nobodyさん
02/03/12 18:36ID:ip/rxryKuse File::Basename; で宣言してbasenameを使いたいんだけどうまくいかないです。
$filename = 'C:\tmp\mona.jpg';
$basename = basename($filename,"");
だけど$basenameには全く処理のされないまま$filenameと同じモノが…
何が悪いのかな?
0343339
02/03/12 18:36ID:???なるほど。先頭につけないエディタもあるんですね。
xyzzy に utf8 と utf8n と2つあるのはそういう意味だったんですか。
とりあえず、メインエディタを Dana から xyzzy に移行することにします。
ありがとう。
0344nobodyさん
02/03/12 18:45ID:???こんなんでどう?
use File::Basename;
fileparse_set_fstype(MSDOS);
$filename = 'C:\tmp\mona.jpg';
$basename = basename($filename,"");
print $basename;
0345342
02/03/12 18:55ID:???fileparse_set_fstype(MSDOS); ってのが多分ミソなんでしょーけど
これを自動判定させる方法って無いもんでしょうか?
敵はUNIXもMacも想定せなアカンので…
0346nobodyさん
02/03/12 19:08ID:???0347nobodyさん
02/03/12 19:15ID:YNqS+HR0って、タイムアウトを設定できますか?
0349nobodyさん
02/03/12 19:26ID:YNqS+HR00350ぼくフェロー
02/03/12 19:54ID:/5Jn0bAAある変数 $a に入っている文字列が数値を表すか否か
判断するにはいかなる手段がありますでしょうか?
たとえば,次のように判別したいのですが.
$a = 100 ==> 数値
$a = -1.0 ==> 数値
$a = 1e-100 ==> 数値
$a = 'abc' ==> 数値ではない.
0351342
02/03/12 19:58ID:???$FORM = new CGI;
$filename = $FORM->param('img');
fileparse_set_fstype(MSDOS) if $^O eq 'MSWin32';
if ($filename) {
だらだら処理
}
反応してくれないよ…
0352346
02/03/12 20:38ID:???「敵はUNIXもMacも〜」って、CGIを動かすブラウザがUNIXかMacかわからんってこと?
UNIXかMacかわからないサーバで動かせるスクリプトを組もうとしているのかと。
$basename =~ ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0];
でいい?
\とか:とか/が入ってるファイル名は上手く取れないが、一応Win/unix/Mac対応。
0353346
02/03/12 20:39ID:???○ $basename = ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0];
スマソ。
0354nobodyさん
02/03/12 23:18ID:???0355nobodyさん
02/03/12 23:20ID:???とかってスレッド立ててください!
0356nobodyさん
02/03/12 23:52ID:OrWEi2X1と同じように同一ページに持っていきたいです。識者の方、教えてください。
http://uho.s7.xrea.com/cgi-bin/yy2ch/
0357識者
02/03/12 23:55ID:???0358nobodyさん
02/03/12 23:55ID:???新着スレ表示するところで<BR>を書かない。
ページにフォームを書き出す。
0359名無しさん
02/03/13 00:48ID:???・・・というのはここで相談してOK?
0360nobodyさん
02/03/13 01:37ID:???0362nobodyさん
02/03/13 06:41ID:P3iVCwDD0363nobodyさん
02/03/13 06:44ID:???0364nobodyさん
02/03/13 22:30ID:0MaZQ+xJ0365nobodyさん
02/03/13 22:35ID:12II/YOS0366nobodyさん
02/03/13 22:41ID:???↑このスレッドで聞いた方がいいのでは?
Perl,CGIってなってるから、Perl限定じゃないでしょ。
0367nobodyさん
02/03/13 22:43ID:???月宮あゆのPerl教室 Part.4
http://pc.2ch.net/test/read.cgi/php/1014096840/l50
君と同じ質問してた人がいる。
後、いい答えも出てる。
0368nobodyさん
02/03/13 22:53ID:12II/YOS助かりました、どうもです!
0369nobodyさん
02/03/14 11:58ID:zKtt7BTbたとえばVC++でCGI作って、特定のIPとデータ交換するとか。
ボケボケの質問でスマソ。
0370nobodyさん
02/03/14 12:34ID:???なんでVC++?
普通にperlで組んでクライアント側にHTTP処理するコード書けば良いだけでは?
0371369
02/03/14 13:24ID:jSrpksxZユーザの要求なもんでどうにも・・・。
あと、サーバーごと納めるんで、コードとか見せられないんですよ。
0372nobodyさん
02/03/14 13:33ID:???もちろん出来ますが、CGIでやる意味が分かりません。
クライアントの要求が来てから、データ交換にいそしんで、
長い間応答しないのは問題があると思います。
なぜデータ交換をCGIでやらないといけないの?
0373369
02/03/14 15:07ID:OQoEp2Bkデータ量そのものはたいしたものではないのですが、
とある機器(WEBサーバーLAN内にある)を、インターネット経由で
ブラウサから制御しようとしているんです。
その辺の知識がまだ乏しいので、今のところCGIでできるかな?
と思っているのです。もっといい方法があるのでしょうが
今の私には思いつきません(あせ
0374nobodyさん
02/03/14 18:47ID:???それ、トロイの木馬という気がしてきた・・・。
セキュリティホールになる可能性大ですぞ。
外部の馬の骨−CGI(80番はファイアウォールで許可)−内部からしかアクセス出来ない機器
0375perlでgzipされたhtmlファイルの作成
02/03/14 20:06ID:gUGqkp2Cgzipで圧縮した、htmlファイルを作成する方法を教えてください。
0377nobodyさん
02/03/14 23:41ID:yfgde3s4ドキッ!!
ちょっとまだ良く理解できてないですが、なんかまずそう?!
そういう構成のシステムそのものに問題があると言うことですか?
0378nobodyさん
02/03/14 23:50ID:???例を挙げると、ブラウザから打ち込んだコマンドを実行し、結果を返すだけのCGIがある。
CGIはサーバサイドで動くので、CGIの実行権限の範囲でCGIの使用者は何でも出来ることになる。
(CGI設置者であったりnobodyであったり。)
そのCGIに認証が必要ないとすれば、誰でも使えるシェルが公開されているに等しい。
ファイアウォールでいくら外部からのアクセスを拒否したとしても、そんなCGIがあれば
簡単に外部からの侵入を許すことになる。
いくら対外的なセキュリティを強化しても、外部の人間の言いなりになる産業スパイが自社にいてはまったく意味がない。
みたいな。
0379nobodyさん
02/03/15 00:28ID:jooXMX1Oわかるようなわからないような。うう・・・。
認証と言うことは、たとえばパスワードのようなもので
ログインみたいなことをさせるとか、同時にそのCGIを使えるのは
一人のみに制限するとか(できるのかしら?(あせ))
CGIの持っている機能そのものは、当然コードに埋め込まれているものだけですが、
その存在だけで、第3者がサーバーに侵入できてしまうと理解して良いんですよね。
インターネット経由での遠隔操作でそういう制御をやってる人って
どうやって実現しているんだろう。
インターネットは使わないほうが良いって事なのかしら?
ふ〜、この世界って奥が深いのですね。どーしよ。
0380名無し ◆Rr5/ytdE
02/03/15 00:36ID:YznOuxlhこのBBSをhttp://netfirms.com/の
無料鯖に置くにはどうしたらいいですか?
cgi-binに画像ファイルが置けないのでこれでファイルをアップしても
保存できないのです。他の場合でもどう対処したらよいでしょうか?
お願いします。
0381名無し#
02/03/15 01:37ID:???0382nobodyさん
02/03/15 07:16ID:???ミミ彡ミミミ彡彡ミミミミ
,,彡彡彡ミミミ彡彡彡彡彡彡
ミミ彡彡゙゙゙゙゙""""""""ヾ彡彡彡
ミミ彡゙ ミミ彡彡
ミミ彡゙ _ _ ミミミ彡
ミミ彡 '´ ̄ヽ '´ ̄` ,|ミミ彡
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡
彡| | |ミ彡
彡| ´-し`) /|ミ|ミ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ゞ| 、,! |ソ < そんなに急ぐなよ道は長い
ヽ '´ ̄ ̄ ̄`ノ / \________
,.|\、 ' /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
\ ~\,,/~ /
\/▽\/
0383perlでgzipされたhtmlファイルの作成
02/03/15 11:26ID:2gjP1S/1gzipが/bin/gzipにあります。
CGIでページをgzip化して表示できるので、このデータをそのままHTMLに書き出せたらと思ったのですが。
0384nobodyさん
02/03/15 11:30ID:???cgi-binに画像が置けないのなら別のディレクトリに置けばいいだけの話。
初期設定で画像のおき場所をフルパスで指定すれば良し。
ex:$datafileurl = 'http;//www.2ch.net/imgdir/';
リンク先を見てないのでうまくいかないかも。
トリップ機能を搭載したいと思っています。
過去ログを見たけどわかりませんでした。
>>4-5にある「スクリプト改造工房」はdat逝きでした…
できれば、2ちゃんと同じトリップが使えたらいいなと思っています。
当方スキルは、一応Perlを初心者向けリファレンス本を読んでいる程度です。
トリップを搭載したいのは、プチ★ボード(petit.cgi)です。
どなたか、コレを実現された方、もしくは実現方法をご存じの方、
教えて下さい。よろしくお願いします。
KENT-WEBさんのサイト
ttp://www.kent-web.com/
プチ★ボード配布コーナー
ttp://www.kent-web.com/bbs/petit.html
0386nobodyさん
02/03/15 12:54ID:???書き込み処理のちょっと前くらいに入れておくべし。
あと、スレ違い。
http://pc.2ch.net/test/read.cgi/php/1012839651/
スレ違い申し訳ありませんでした。
ありがとうございました。
こんな感じに実装させて頂きました。
#トリップ機能
if ($in{'name'} =~/◆/){
$in{'name'} =~ s/◆/◇/g;
}
if ($in{'name'} =~/#/){
$in{'name'}=~ s/\x23(.+)$/ "◆".substr(crypt($1, substr($1, 1)), -8)/e;
}
0388nobodyさん
02/03/15 14:11ID:???騙されてるって・・・
↓こうしなさい。
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
sub trip {
my $key = shift;
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);
}
0389nobodyさん
02/03/15 15:11ID:???エ━━(゚Д゚lll;)━━ッ!?
騙されてたんですか?
petit.cgiじゃないんですけど、
一応動いてるみたいなんですけど…
http://www.pweb.ne.jp/~fpm2/wtalk/
(ほのぼの板用チャット)
あっ、でも元のキーに「~=」とかが含まれてると
動作しませんでした。
0394nobodyさん
02/03/15 15:31ID:???>何故わざわざ"\x23"?"#"じゃダメな理由でもあるの?
そのほうがかっこいいから。
それと>>387みたくtr演算子を使う時に#じゃ困る。
>>388ので設置してみました。m(_ _)m
#aa~=aa
見たいなトリップはやっぱり認識されないですね…
試しに、「#aa~=aa」でここに書き込んでみます。
むこうでは、◆4tC6xcI.になってしまいました。
それ以外のトリップは全て大丈夫でした!(´-`♪
0399nobodyさん
02/03/15 15:58ID:???「#aa~=aa」でも問題なく◆4tC6xcI.になったが・・・
基本的にどんな文字でもOKなはず。日本語でも、制御文字でも。
#$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
コメントアウトして、入力がおかしくないか確認したら?
0400399
02/03/15 16:00ID:???0401テスト ◆NAOKmK0E
02/03/15 16:04ID:???レスありがとうございます。◆AnfivKvE です。
試してみましたので報告致します。 m(_ _)m
コメントアウトしてテスト#c+~=y:Arという名前で入ってみました。
結果→テスト#c+~=y:Ar
元に戻してテスト#c+~=y:Arで入室
結果→テスト◆SLjREV3g
2ちゃんねるで、テスト#c+~=y:Arで発言
結果↑
トリップと名前は全てコピペしました。
0402388
02/03/15 16:50ID:???これでどうかな。
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
0403テスト ◆NAOKmK0E
02/03/15 17:05ID:???トライしました!完璧でした!
テスト#c+~=y:Ar → テスト◆NAOKmK0E
ありがとうございます! ヽ(`Д´)ノ ウワァァン
コレから先に見る方が居るかもしれないので、
成功したヤツを書いておきます!
本当にありがとうございました!
ここからソース
書き込み処理直前、cookie発行後。
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
ここから、トリップ作成サブルーチン
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
いやいやいやいや
お陰様で設置できました
本当にありがとうございました
m(_ _)m
マジですか・・・?ちょっと試してみます。
0408388
02/03/15 18:45ID:???本格的に鬱だ・・・
?? ̄∇ ̄??
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
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
■ このスレッドは過去ログ倉庫に格納されています