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

CGI: Common Gateway Interface part 11

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/14 22:26ID:F9qlqHNx
CGIの運用に関する質問スレッドです。

※CGIは特定の言語に依存するものではありません。

Perlのコーディングに関する質問は、専用スレでお願いします:
[Perl 初心者コーナー Part24]
http://pc2.2ch.net/test/read.cgi/php/1054992610/

CGIとPerlの区別がわからない、という人はとりあえずこちらへ:
[WebProg 初心者の質問 Part3]
http://pc2.2ch.net/test/read.cgi/php/1045091733/

過去ログ・関連スレッドは >>2-5 あたりに
0002nobodyさん03/06/14 22:26ID:F9qlqHNx
Part 3 http://pc.2ch.net/php/kako/988/988727833.html
Part 4 http://pc.2ch.net/php/kako/1000/10008/1000804655.html
Part 5 http://pc.2ch.net/php/kako/1009/10093/1009331505.html
Part 5.01 http://pc.2ch.net/php/kako/1015/10151/1015127347.html
Part 6 http://pc.2ch.net/php/kako/1019/10195/1019561283.html
Part 6(7) http://pc.2ch.net/php/kako/1025/10259/1025930486.html
Part 8 http://pc.2ch.net/php/kako/1032/10327/1032704121.html
Part 9 http://pc2.2ch.net/php/kako/1041/10415/1041530204.html
Part 10 http://pc2.2ch.net/test/read.cgi/php/1048686475/
0003nobodyさん03/06/14 22:27ID:F9qlqHNx
■関連スレ

WebProg 初心者の質問 Part3
http://pc2.2ch.net/test/read.cgi/php/1045091733/
Perl 初心者コーナー Part24
http://pc2.2ch.net/test/read.cgi/php/1054992610/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/

こんなCGI探してますスレッド ver.9
http://pc2.2ch.net/test/read.cgi/php/1051456859/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
自作CGIを評価するスレ
http://pc2.2ch.net/test/read.cgi/php/1049514428/
【スレッド】2ch型掲示板 その7【フロート型】
http://pc2.2ch.net/test/read.cgi/php/1040777088/
.htaccessの偉い人 Part3
http://pc2.2ch.net/test/read.cgi/php/1019888234/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0004nobodyさん03/06/14 22:27ID:F9qlqHNx
■参項

通信用語の基礎知識より"CGI" http://www.wdic.org/?word=CGI+%3AWDIC

・WWWで, WWWブラウザからの要求に対してサーバが別のプログラムを起動実行し, 結果をWWWブラウザに返す処理を行なうためのインターフェイス.
・イメージマップ, アクセスカウンタ, 訪問者登録, 掲示板(BBS)などを実現する際に利用されている.
・UNIXのshやその互換シェル, またはPerl, C, C++などが利用される.
0005nobodyさん03/06/14 22:52ID:???
※CGIは特定の言語に依存するものではありません。
0006nobodyさん03/06/14 23:05ID:???
DAT落ちの予感
0007nobodyさん03/06/14 23:12ID:???
>>1-4
もつかれー
0008nobodyさん03/06/15 12:13ID:???
form中で指定されたcgiプログラムの拡張子が.cgiの場合、サーバ側ではどんな
プログラムが起動されるんですか? .cgiという拡張子のファイルが実際にあるの
ですか?
0009nobodyさん03/06/15 12:25ID:???
>>8
あるよ。
0010nobodyさん03/06/15 13:09ID:???
ここは痛いインターネットですね
0011nobodyさん03/06/15 14:01ID:???
>>9
勉強しなおしてきました。ただの実行ファイルだったんですね(^^;)。
0012nobodyさん03/06/15 19:34ID:???
>>11
まだ痛いな。
0013nobodyさん03/06/16 05:17ID:???
そんなことより聞いてくれよ。>>1-12よ。
スレとは関係なさそうなんだけどさ。
アクセス制限したいんです。アクセス制限。


やめた。で、本題↓

cgi?id=passwdみたいに、入力するときにアクセス制限するってのはどうよ?
危険?
0014nobodyさん03/06/16 06:25ID:???
13は死にました。
0015nobodyさん03/06/16 06:50ID:???
>>14も死にました。
0016nobodyさん03/06/16 07:15ID:???
みんな死にました。
0017nobodyさん03/06/16 07:23ID:???
山も死にましたが、
海がむっくり起き上がりました。
0018803/06/16 07:39ID:???
>>12
form側で.cgiが指定されていても、サーバ側で任意の拡張子のファイルを選択できたり
するとか? もしそうならファイル名は一致してないといけないんですか?
0019nobodyさん03/06/16 07:44ID:???
ちょっとかわいそうな12、、
そして俺も死む
0020nobodyさん03/06/16 08:04ID:???
しつこい8も死にました。
0021nobodyさん03/06/16 11:09ID:???
8はどんなネタなんだ?おもしろくないんだが
誰か解説きぼん
0022nobodyさん03/06/16 15:04ID:???
>>21
とりあえずお前も死んどけ。
0023nobodyさん03/06/16 15:28ID:???
みんなで練炭囲むスレはここですか?
0024nobodyさん03/06/16 15:32ID:???
目張りを忘れるなよ
0025nobodyさん03/06/17 22:57ID:1KDkzNYs
ageとくか
0026nobodyさん03/06/18 17:00ID:YUOreFGW
REMOTE_HOSTのみで、大体これは串かなァ〜?
ってな具合で大体見分ける方法はありますか?
0027あぼーんNGNG
あぼーん
0028nobodyさん03/06/18 17:40ID:???
>26
keep-aliveを見たほうが簡単かも
00292603/06/18 19:39ID:YUOreFGW
うっ、keep-aliveってしらない…
そんなわけで検索してみたのですが、
むぅ〜、つまり
HTTP_XROXY_CONNECTIONまたはHTTP_PROXY_CONNECTIONに値があれば串かな?
ってことでしょうかね??
0030nobodyさん03/06/18 19:52ID:???
>>29
診断くんの画面をよーく見てみろよ
0031nobodyさん03/06/18 21:35ID:???
>29
HTTP_CONNECTIONがkeep-alive
で無い場合串の可能性が高いということです。
omitronを使ってる人に誤爆するかも

ProxyJudgeってのが参考になるですよ
0032あぼーんNGNG
あぼーん
0033nobodyさん03/06/19 11:15ID:???
omitronだって立派な串だわなあ。
0034nobodyさん03/06/19 14:34ID:???
>33
そりゃそうだけど。。。
omitron使いは『ローカル接続の維持時間」のチェックをはずしませう。。。
0035nobodyさん03/06/20 23:40ID:???
クッキーに「名前」と「色」と複数の情報を記憶させたいのですが
その場合
print "Set-Cookie: NAME=$name; expires=〜〜
print "Set-Cookie: COLOR=$color; expires=〜〜
と2回書くしか方法はないのでしょうか?
0036nobodyさん03/06/21 00:09ID:???
>>35
ヒント。
print "Set-Cookie: NAME=$name$color; expires=〜〜
0037nobodyさん03/06/21 03:14ID:???
>>36
なるほど。ありがとうございます。
色々試してみたら配列でも良さそうだったので
配列に $nameや$color をしまって書かせる事にしました。

そのテストの中で
$test = 'あいうえお';
$test1 = 'kakikukeko';
$test2 = 'サシスセソ';
@temp = ($test,$test1,$test2);
print "Set-Cookie: TEST=@temp; expires=〜〜

と、配列の一番最後にカタカナの「ソ」があるとエラーが起きてしまうことが判りました。
こういうダメ文字(?)は他にもあるんでしょうか?
思いつく対策が、一番最後にダミーの文字列を入れるとかだったんですが
他に有効な手段がありますでしょうか・・・
0038nobodyさん03/06/21 03:27ID:???
>>37
$test2 = 'サシスセソ\';
0039nobodyさん03/06/21 03:30ID:???
>>37
シフトJISで2バイト文字の2バイト目が「5C」になる字は全部だめ
20文字ぐらいある
0040nobodyさん03/06/21 03:31ID:???
>>38
なんと・・・エスケープも試したんですが、やはりエラー出てたんです
$test2 = 'サシスセ\ソ';
ってやってました _| ̄|○

ありがとうございました。無事処理できますた。
0041nobodyさん03/06/21 03:32ID:???
>>39
なるほど・・・これからもよく注意します。
ありがとうございます。
00423603/06/21 06:53ID:???
あのー、、、
ちゃんとエンコードしてから食べさせてあげましょうね(^o^)
0043nobodyさん03/06/21 17:50ID:???
LWP::UserAgentでWebページを蒐集していますが、REFERERが必要なページの蒐集が出来ずにいます。
どなたかREFERERを送る術を教えてください。

一応ぐぐってみて下記のスクリプトを書いてみましたが、どちらも駄目でした。
use LWP::UserAgent;
use HTTP::Headers;

$ua = LWP::UserAgent->new;
$h = new HTTP::Headers(referer=>'http://www.2ch.net/');
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
$request = HTTP::Request->new('GET', "$url");
$response = $ua->request($request);
$html = $response->content;

use LWP::UserAgent;
use HTTP::Headers;

$ua = LWP::UserAgent->new;
$h = new HTTP::Headers;
$h->referer('http://www.2ch.net/');
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
$request = HTTP::Request->new('GET', "$url");
$response = $ua->request($request);
$html = $response->content;
よろしく。
0044nobodyさん03/06/22 02:18ID:???
質問させてください。
Perlで文法チェックするように、
CGIで、コンパイルエラー&文法エラーが出たら、
エラー内容をブラウザに出力する方法ってないでしょうか?
00454303/06/22 05:43ID:???
自己レスです。
出来ました。
ぐぐりが足りませんでした。
反省します。
00464403/06/22 09:09ID:???
解決しました。
ありがとうございました。
0047nobodyさん03/06/22 09:55ID:???
>>44
CGIは言語じゃないから、そもそもコンパイルエラーも文法エラーも起こらない。
0048nobodyさん03/06/22 15:18ID:9BWt9KWi
URLエンコードってこれでいいんですかね?

$url =~ s/ /+/g;
$url =~ s/([^\%\&\+\-\.\/\=\?\_a-zA-Z0-9])/sprintf("%s%lx", unpack("C", $1))/eg;
0049nobodyさん03/06/22 15:19ID:dW6ONEdC
URLエンコードってこれでいいんですかね?

$url=~s/ /+/g;
$url=~s/([^\%\&\+\-\.\/\=\?\_a-zA-Z0-9])/sprintf("%s%lx",unpack("C",$1))/eg;
0050nobodyさん03/06/22 15:21ID:???
二重カキコすいません。
0051nobodyさん03/06/22 15:44ID:???
sprintf("%s%lx", "%", unpack("C", $1))
でした。
0052nobodyさん03/06/22 16:45ID:???
sprintf("%%%02X",unpack("C", $1))
0053nobodyさん03/06/22 17:17ID:???
>>52
あ〜。なるへそ。
0054nobodyさん03/06/22 17:32ID:???
http://chama.ne.jp/download/mail/maga4/index.htm
にある一斉送信CGI(シェアウェアでソースみれない)って、

エラーメールの整理も簡単になりました。!
ってあるんだけど、
これって、エラーメールの処理ってどうやってるんだろう?
Errors-toを設定してかえってきたメールを処理するくらい?
0055nobodyさん03/06/22 23:53ID:???
$url =~ s/(\W)/'%' . unpack('H2', $1)/eg;
00563503/06/23 18:15ID:???
すいません、また行き詰まってしまいました。

if ($ENV{'HTTP_COOKIE'} ne "") {
 @data=split(/\; /,$ENV{'HTTP_COOKIE'});
  foreach $datum (@data) {
   ($name,$value)=split(/=/,$datum);
   $COOKIE{$name}=$value;
  }
 $cooktest=$COOKIE{'TEST'};
}
とクッキーを処理した後

($c_test,$c_test1,$c_test2) = split(/ /,$cooktest);
と半角スペースで変数に分けているんですが

$test = 'あい うえお';
$test1 = 'kaki kukeko';
$test2 = 'サシ スセソ\';
と、クッキーに記憶させる中身に半角スペースが含まれていると
変数に分け直すとき、そこで区切られてしまうのです(当たり前なのですが・・・)

半角スペースを に変換しても、
 @data=split(/\; /,$ENV{'HTTP_COOKIE'});
の部分でコロンが反応して、処理が思うものにならなくなってしまいます。

$cooktemp = $test .'_^_' .$test1 .'_^_' .$test2;
のように、誰も入れなさそうな文字列を変数と変数の間に入れて、それをクッキーに書いて、取り出してその文字列で区切るしかないでしょうか・・・
0057nobodyさん03/06/23 18:37ID:???
>>56
cokkie使ってるスクリプトなんていくらでもあるから、
そういうの見て参考にしてみな
0058nobodyさん03/06/23 19:46ID:???
cokkieって…
突っ込み入れようと試しにぐぐってみたら、あ〜ら!
http://www.google.com/search?q=+%22cokkie%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0059nobodyさん03/06/23 20:35ID:???
>>56
http://www.studyinghttp.net/cookies.html
こゆところ100回嫁(w
0060nobodyさん03/06/23 22:00ID:aWAWPFpS
>>56
cookieにはコロン、セミコロンスペースは使えない。
普通はurlエンコードする。
0061nobodyさん03/06/23 22:13ID:???
前にもエンコードって言われてるのに、やってなかったのか。
まあ初心者には難しそうだけど、Webプログラミングでは避けて通れない関門だ。
ぐぐりゃサンプルソースなんていくらでも手に入るんだから、がんがってくれ。
00623503/06/23 23:04ID:???
「エンコード」がなんだかよくわからないのれす(´・ω・`)ショボーン
>>52さんの式を参考にさせてもらい、勉強してきます・・・
0063あぼーんNGNG
あぼーん
0064nobodyさん03/06/23 23:48ID:???
>>62
わかんない言葉が出てきたときは、Googleの出番だ。
キーワードは「Perl URLエンコード」
健闘を祈る。
0065nobodyさん03/06/23 23:57ID:???
>>58
ワロタ
zdnetがねえ・・・
00665403/06/24 00:15ID:???
>>54
どなたか、素朴な疑問だが、おこたえぷりーず
■ このスレッドは過去ログ倉庫に格納されています