CGIだけど、なんか質問ある? part 6
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
02/04/23 20:28ID:Kp0cZQna<<注意:CGIは特定の言語に依存するものではありません>>
Perlのコーディングに関する質問はこちら
【Perl】初心者コーナーPart11
http://pc.2ch.net/test/read.cgi/php/1017201229/
過去ログは>>2
0911907
02/07/03 09:21ID:???$dl_fileはソースに固定で持っているので
任意には変えられないです。
それでもマズー?
0912nobodyさん
02/07/03 10:55ID:???それなら大丈夫だと思うけど、名前からしてファイル名(可変)だと思ったからなぁ(笑)
(ちゃんとチェックすればそれでも問題ないけどね)
>>907はやっぱりサーバの制限じゃないかなぁ・・。
0914nobodyさん
02/07/03 13:50ID:???それだと、5M以上のデータを一度まるまるメモリにためることになるんじゃない?
system( '/bin/cat', $dl_file );
ではだめ?
0915907
02/07/03 14:29ID:???自分でちっとやってみた。
catじゃなくて他のコマンドつかってみたら
ダメだったので/etc/passwdも読めないだろーとおもたら
(・∀・)デキチャッタ!!!
でもパスは暗号化されてるんだよねって、そういう問題じゃないかw
今後気をつけます。
>>912
ファイルをパラメータを入力するとしたら
パスを直に入れる仕様だと穴は避けられないような気もしますなぁ。
チェックいうても今のスキルではムズかしそうなんで
対象ファイルのリストを別に持っておくくらいが関の山かと。
>>914
はーなるほど。
一応
open(IN,$dl_file);
print <IN>;
close(IN);
でもやってダメだったような気もするです・・・
確認してみます、ドモドモ。
0917nobodyさん
02/07/03 14:36ID:lwKk8XgU読み込みopen(IN,"$log")と
書き込みopen(OUT,">$log")が
同時に発生したら
ログファイルが壊れる可能性は高いですか?
言語はperlv5.6.0です。
0919nobodyさん
02/07/03 15:27ID:???0920名無しさん
02/07/03 15:53ID:???しょうか?以下のようなスクリプトだと、エラーメッセージが返されてしまいます。
なお、スクリプト中の $message = ....の右辺を普通のhtmlファイルなど
(例えば"GET http://pc.2ch.net/php/subback.html HTTP/1.0\n\n";)
にすると何も問題なくゲットできるのですが。
#
#-------------以下、スクリプトの内容
#
use Socket;
$port = getservbyname('http','tcp');
$svname = "pc.2ch.net";
$ipaddr = inet_aton("$svname") or die "$svname が見つかりません。\n";
$socket_addr = pack_sockaddr_in($port,$ipaddr);
socket(SOCKET,PF_INET,SOCK_STREAM,0) or die "ソケットを生成できません。\n";
connect(SOCKET,$socket_addr) or die "$svname に接続できません。\n";
select(SOCKET); $|=1; select(STDOUT);
$message = "GET http://pc.2ch.net/test/read.cgi/php/1019561283/l5 HTTP/1.0\n\n";
SOCKET $message;
print <SOCKET>;
close(SOCKET);
0921nobodyさん
02/07/03 16:15ID:???0923920
02/07/03 16:46ID:???別にPerlに限った話ではないので、同趣旨の質問がどこかにある可能性
は大きいと思ったのですが、探しきれませんでした。
0924nobodyさん
02/07/03 16:54ID:???とあるperlで書かれたCGIを使おうと思うのですが、
そのまま、サーバへアップすると動くのですが、少しでもコードを変更する
と500エラーを起こします。
なぜだかさっぱりわからないのですが、何か分かる方いらっしゃいますか?
ちなみにコードは、スペースを増やすとかだけでもダメになります。
winからFFFTPで文字コードも改行コードも変換しなくでもだめです。
linuxのange-ftpとかで編集してもダメです。
鯖はlinuxです。
改行コードをLFにしてもダメでした。
文字コートか改行コードあたりだとは思いますが、よくわかりません。
手元のlinuxでperl -cw すると、i-modeの絵文字関係のコードが
ひっかかってるっぽいです。
でも、その辺のコードをいじってはいません。
色々試しましたがダメでした。
もし、何か頭に浮かぶものがありましたら、書き込んでいただけると
ありがたいです。
ちなみに、スクリプトは、以下のメル友サーチです。
ttp://download.torworld.com/data/mail/readme.html
0927nobodyさん
02/07/03 17:53ID:???read.cgi経由で2chのログを読むよりdatファイル直読みのほうが
サーバの負担が軽くてウマーではないか。
0929nobodyさん
02/07/03 18:50ID:???壊れないと思うけど、
open(OUT,">$log") でいったんファイルが空っぽになるので、
open(IN,"$log") の人が空ファイルを読み込んでしまう可能性はる。(っていうか同時ならそうなる)
>>924
いじった後、保存する時の文字コードが原因だと思う。
おそらくオリジナルはEUC-JPで保存されていて、いじった後Shift_JISで保存してるんじゃないかな?
それで 「i-modeの絵文字関係のコード」 ←がエラーになると。
0931nobodyさん
02/07/04 00:30ID:J1twAOP5へ飛ばすときのcgiを作っています。今の段階でできているのは、UserAgentが
何であるか判断し、入力データを分解して、参照したいURLを見るのまでです。
URLにくまれた引数の対応とか、mail toやPhone toなんかのリンクの場合
なんかもできなくています。
作ったのは、↓
my($encoding) = @_;
my($method) = $ENV{'REQUEST_METHOD'};
if ($method eq 'GET') { $query = $ENV{'QUERY_STRING'};}
local(@query) = split(/&/, $query);
foreach (@query) {
tr/+/ /;
($key, $val) = split(/=/);
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c", hex($1))/ge;
$val =~ s/\r\n/\n/g;
$in{$key} = $val;
}
use LWP::UserAgent;
$ua = new LWP::UserAgent;
my $agent = $ENV{'HTTP_USER_AGENT'};
$ua->agent($agent);
my $req = new HTTP::Request POST => $val;
$req->content_type('application/x-www-form-urlencoded');
$req->content('match=www&errors=0');
my $res = $ua->request($req);
if ($res->is_success) {
print $res->content;
} else {
print "No!";
}
print $res->content; って出すと、外部のリンク先をよんだ
ままなんですよね?
0932nobodyさん
02/07/04 00:48ID:???ようするに飛ばしたいのか?
Location ヘッダを使えよ。
しかし、なんのためにLWPモジュールなんてつかってるんだ?
そんなもんつかうことなんてないだろ。TCP接続なんて自分で書いたほうが
コンパクトで軽いもんが書けるだろ。
0933nobodyさん
02/07/04 02:05ID:+/6rMDAWこの場合
if ($agent eq "0"||"1"){ print "携帯ページです\n"; }
ersif { print "PCページです\n"; }
と
if ($agent eq "2"){ print "PCページです\n"; }
ersif { print "携帯ページです\n"; }
この二つは同じ処理になるはずですが、なぜか上の場合"0"or"1"でもPCページです
と表示してしまいます。とりあえず下の方法はうまくいきます。
何が考えられるでしょうか?
0934907
02/07/04 02:29ID:???で(・∀・)デキタ!!
print <IN>;
ではやっぱりだめでした(0byte)
これも一気に読み込むんですかねぇ
なにはともあれ
ありがとうございますた。
0938nobodyさん
02/07/04 03:00ID:v+ukjorBディレクトリに気をつけて元のファイルと同じようにおいてindexにアクセス
しても何も起こりません。何が間違っているのでしょうか。。。
なにか他に気をつけるところとかあるのでしょうか。。
0940nobodyさん
02/07/04 04:18ID:v+ukjorBあ、ちゃんとwwwサーバにおきました・・・
「普通において」とか「元のファイルと同じようにおいて」とか言われても
わかりません。
スクリプトの配布先で説明でも見たら?
0942nobodyさん
02/07/04 11:10ID:uvCaP6/B>ちなみにコードは、スペースを増やすとかだけでもダメになります。
バイナリエディタを入手して、何が変えられたのか確認すること。
それ以前に、複数の文字コードに対応するテキストエディタを入手すること。
0943nobodyさん
02/07/04 13:27ID:/hy7azYFダウンロードになってしまいます。
しかたが無いのでMS-DOSで確認してから
WWWサーバーにアップロードしています。
ローカルでは見た目が分からないので困っています。
なんとかローカルでもhtmlから呼び出せるようにならないものでしょうか?
0944nobodyさん
02/07/04 13:30ID:???0945943
02/07/04 14:13ID:???ANHTTPDです。レス有難うございます。
漏れの使い方が間違っていました。
htmlをダブルクリックで開いていたのが原因でした
ローカルのアドレスでhtmlを呼び出して動作確認したら動きました。
回線切って逝って来ます。
0946nobodyさん
02/07/04 14:17ID:???ではなく、
file:///
だったわけか。
0947nobodyさん
02/07/04 15:24ID:f03h23nO>>929
文字コードは変えていません。
FFFTPでもコードを変えていません。
エディタはemacs系なので、EUCをS-JISでセーブしていないと思います。
というより元のコードがS-JISです。
>>942
テキストエディタは、winではxyzzy。linuxではemacsを使っているので、
文字コード関係ではないと思います。
んー、もうちょっと詳しく調べてみます。
0948nobodyさん
02/07/04 15:38ID:???>>924に鯖がLinuxって書いておきながら、今度は元コードがSJISってことが
わかっててアップ時もコード変えてないんならダメだろ。
0949nobodyさん
02/07/04 15:56ID:62lEfN1Mある文字列の後が、文の末尾又は ,
というような正規表現はどのようになるのでしょうか。
正規表現以外でもっと効率のいい方法を知っている方が居たら
ご教授いただければ幸いです。
0951nobodyさん
02/07/04 16:12ID:62lEfN1M文の先頭、文の末尾で ^ または $ を | 記号で使えたんですね。
使えない物として勝手に解釈してしまっていました。
ありがとうございます。
一応、やった方法としてはこのような感じです。
aaaという文字列を調べたい場合に、
$string =~ s/(?:^|\,)(aaa)(?:$|\,)/$1/;
やはりこれ以上、効率のいい方法はないのでしょうか?
0952nobodyさん
02/07/04 16:53ID:???分けて書くようにしろ。
$string=~ /^\,?aaa/; $string=~ /aaa\,?$/;
あと、なんで同じ文字に置換してるんだ?
0953nobodyさん
02/07/04 23:11ID:seos7CanPerlのCGI設置で悩んでおります。
当方家庭内向けにBBSを設置しようとVineLinux2.5 + Apache + jperlで構築中です。
ですが、WEBブラウザで表示させようとしてもInternalServerErrorになってしまいます。
バージョン及びPerlのプログラムは以下の通りです。
VineLinux2.5
Apache 1.3.24
perl 5.005_03
jperl 5.005_03_990822
REBBS3.2 http://www.ruuzu.com/
http://botan.sakura.ne.jp/~ruuzu/HTML/cgi2.htm
どうかご助言を宜しくお願いします。
0954nobodyさん
02/07/04 23:13ID:???0955nobodyさん
02/07/05 00:55ID:???Apacheのエラーログ、perl -wcとかperl -dとか
全部試してから来い。
0956nobodyさん
02/07/05 02:06ID:AJZNQJHLどうやったらできるんでしょう?教えてください。
0957nobodyさん
02/07/05 02:07ID:???0958nobodyさん
02/07/05 02:26ID:AJZNQJHLいろいろ試してみましたが、わかりません。
ブラウザ上でパスワードを入力してそれをlinuxに反映させるというのは可能なのでしょうか?
教えてください。お願いします。
957さんありがとうございました。
0959nobodyさん
02/07/05 03:06ID:???http://www.nn.iij4u.or.jp/~nabe/osietekunn.html
0960nobodyさん
02/07/05 03:25ID:qnmKXRgpminibbs.cgiで見られるように書き込みを復活させられないのでしょうか?
サーフレスキューに繋がらないので、ここで質問させていただきました。
0961nobodyさん
02/07/05 03:37ID:???(要は平文の入ったテキスト)を移動するだけだよ
http://pc.2ch.net/php/dat/1019561283.dat
↑ こう奴な
0962nobodyさん
02/07/05 06:02ID:???0963958
02/07/05 13:51ID:lr7bC3uX0964nobodyさん
02/07/05 14:44ID:???パスワード変更できる権限があればできるでしょ。
それなら直接ログインすればいいわけで、なんでPerlでやりたいのか疑問・・
0965nobodyさん
02/07/05 14:55ID:???この板でわざわざそんなこと聞かないだろう。
0968nobodyさん
02/07/05 15:51ID:???具体的にはIPCだかのモジュール使ってプロセス間通信をする
勿論上手くやればWebから直接shadow...を書き換える事も可能
でももう殆ど忘れた、つーかPCの使い方も解らんw
0970nobodyさん
02/07/05 16:01ID:???新スレの1に書きたいことあればよろすく。
なんもなければPart6をPart7に変えるのみ。
0971nobodyさん
02/07/05 16:02ID:???CGI全般です。
0972nobodyさん
02/07/05 16:17ID:???■過去ログ
Part3 http://pc.2ch.net/test/read.cgi/php/988727833/
Part4 http://pc.2ch.net/php/kako/1000/10008/1000804655.html
Part5 http://pc.2ch.net/php/kako/1009/10093/1009331505.html
Part6 http://pc.2ch.net/test/read.cgi/php/1019561283/
■CGI以外のPerlに関する質問スレッド
Perl 初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/l50
CGIに依存しないPerlの話題一般
http://pc.2ch.net/test/read.cgi/php/991313362/l50
■関連スレ
【Perl,CGI】参考書籍
http://pc.2ch.net/test/read.cgi/php/988809842/l50
スクリプト改造工房 4
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
こんなCGI探してますスレッド Ver6
http://pc.2ch.net/test/read.cgi/php/1021897804/l50
.htaccessの偉い人 Part3
http://pc.2ch.net/test/read.cgi/php/1019888234/l50
【スレッド】2ch型掲示板 その5【フロート型】
http://pc.2ch.net/test/read.cgi/php/1019414023/l50
0973nobodyさん
02/07/05 16:34ID:???Part5.01 http://pc.2ch.net/php/kako/1015/10151/1015127347.html
0975nobodyさん
02/07/05 21:02ID:???0976nobodyさん
02/07/05 23:59ID:oMipjbOm0977970
02/07/06 13:42ID:???0978nobodyさん
02/07/06 13:45ID:???0979970
02/07/06 13:48ID:???CGIだけど、なんか質問ある? Part 6
http://pc.2ch.net/test/read.cgi/php/1025930486/
てきとーに移動してください。
0981nobodyさん
02/07/06 13:50ID:???0982970
02/07/06 13:59ID:???それでよければ、そうしてもらえると。
いまなら立て直してもいいですけど。
どっちにしてもしばらく2個めのPart6を見るたびに恥ずかしい。
0983nobodyさん
02/07/06 15:40ID:???0984nobodyさん
02/07/07 18:46ID:6yjH1hUz0985nonodyさん
02/07/07 19:22ID:???もうその技術は不要です。
これからは .NET です。
苦労して学んだことが無意味になるのは残念なことと思いますが、
頑張って新しいことにチャレンジしてください。
0987nobodyさん
02/07/08 11:13ID:???0988nobodyさん
02/07/09 11:50ID:xtHTE7mw0989nobodyさん
02/07/09 11:51ID:???0990nobodyさん
02/07/09 14:23ID:???0991ヽ(`Д´)ノ ウワァァン
02/07/09 23:32ID:gcNlx8b2CGIファイルをエクスプローラーで見ようとすると文字化け! ヽ(`Д´)ノ ウワァァン
レンタルサーバー上にアップしたら文字化けしないのに! ヽ(`Д´)ノ ウワァァン
ActivePerlのインストール設定ミスかも...ヽ(TДT)ノ ウワァァン...
0992nobodyさん
02/07/09 23:53ID:???0993nobodyさん
02/07/09 23:54ID:???0994nobodyさん
02/07/10 00:05ID:???http://pc.2ch.net/test/read.cgi/php/1025930486/l50
0995nobodyさん
02/07/10 00:06ID:???0996nobodyさん
02/07/10 00:10ID:???|:::|::/ !/ _レ? v、::i ヽ:', \::i丶:;;;;;;;;;;;;;;;;;;;;;|
|::::i:;', '''''" ヽ ̄ ヾ''''\:::::;;;;;;;;;;;;;;;;;;|
|:::::::;;', -─‐- -──-- i::::::;;;;;;;;;;;;;;;;;;|
|:::::::;;;i | l l | |::::::;;;;;;;;;;;;;;;;;;|
|::::::::;;;l.| | l | |::::::;;;;;;;;;;;;;;;;;;| あかん、また Internal Server Error や・・・
|::::::::;;;;i| | l | !:::::;;;;;;;;;;;;;;;;;;;|
|:::::::::;;;;;:ヽ ,| r───、| |-'|::::;::;;;;;;;;;;;;;;;;;;|
|:::::::::;;;;;;;;;;;;;`''- ニ,─--,' ‐='"''"|::::;;:;;;;;;;;;;;;;;;;;;;|
|::::;;:::;;;ri;;;;;;||::/ `i ̄i.:.:.|:.:.:.:i:.:|::::;;;;;;;;;;;;;;;;;;;;;;;|
0997nobodyさん
02/07/10 00:13ID:???(∩・∀・)< もしもし、次のスレッド教えてもらえますか
□……(つ ) \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
0998nobodyさん
02/07/10 00:14ID:???(・∀・∩) < 次スレですね。http://pc.2ch.net/test/read.cgi/php/1025930486/l50 です
( ⊂)……□ \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
0999nobodyさん
02/07/10 00:14ID:YxncJPQj1000nobodyさん
02/07/10 00:15ID:??? ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。