CGI: Common Gateway Interface part 11

このエントリーをはてなブックマークに追加
1nobodyさん
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 あたりに
2nobodyさん:03/06/14 22:26 ID:F9qlqHNx
3nobodyさん:03/06/14 22:27 ID: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/
4nobodyさん:03/06/14 22:27 ID:F9qlqHNx
■参項

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

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


やめた。で、本題↓

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

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

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

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

ありがとうございました。無事処理できますた。
41nobodyさん:03/06/21 03:32 ID:???
>>39
なるほど・・・これからもよく注意します。
ありがとうございます。
4236:03/06/21 06:53 ID:???
あのー、、、
ちゃんとエンコードしてから食べさせてあげましょうね(^o^)
43nobodyさん:03/06/21 17:50 ID:???
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;
よろしく。
44nobodyさん:03/06/22 02:18 ID:???
質問させてください。
Perlで文法チェックするように、
CGIで、コンパイルエラー&文法エラーが出たら、
エラー内容をブラウザに出力する方法ってないでしょうか?
4543:03/06/22 05:43 ID:???
自己レスです。
出来ました。
ぐぐりが足りませんでした。
反省します。
4644:03/06/22 09:09 ID:???
解決しました。
ありがとうございました。
47nobodyさん:03/06/22 09:55 ID:???
>>44
CGIは言語じゃないから、そもそもコンパイルエラーも文法エラーも起こらない。
48nobodyさん:03/06/22 15:18 ID:9BWt9KWi
URLエンコードってこれでいいんですかね?

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

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

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

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;
のように、誰も入れなさそうな文字列を変数と変数の間に入れて、それをクッキーに書いて、取り出してその文字列で区切るしかないでしょうか・・・
57nobodyさん:03/06/23 18:37 ID:???
>>56
cokkie使ってるスクリプトなんていくらでもあるから、
そういうの見て参考にしてみな
58nobodyさん:03/06/23 19:46 ID:???
cokkieって…
突っ込み入れようと試しにぐぐってみたら、あ〜ら!
http://www.google.com/search?q=+%22cokkie%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
59nobodyさん:03/06/23 20:35 ID:???
>>56
http://www.studyinghttp.net/cookies.html
こゆところ100回嫁(w
60nobodyさん:03/06/23 22:00 ID:aWAWPFpS
>>56
cookieにはコロン、セミコロンスペースは使えない。
普通はurlエンコードする。
61nobodyさん:03/06/23 22:13 ID:???
前にもエンコードって言われてるのに、やってなかったのか。
まあ初心者には難しそうだけど、Webプログラミングでは避けて通れない関門だ。
ぐぐりゃサンプルソースなんていくらでも手に入るんだから、がんがってくれ。
6235:03/06/23 23:04 ID:???
「エンコード」がなんだかよくわからないのれす(´・ω・`)ショボーン
>>52さんの式を参考にさせてもらい、勉強してきます・・・
63あぼーん:あぼーん
あぼーん
64nobodyさん:03/06/23 23:48 ID:???
>>62
わかんない言葉が出てきたときは、Googleの出番だ。
キーワードは「Perl URLエンコード」
健闘を祈る。
65nobodyさん:03/06/23 23:57 ID:???
>>58
ワロタ
zdnetがねえ・・・
6654:03/06/24 00:15 ID:???
>>54
どなたか、素朴な疑問だが、おこたえぷりーず
67nobodyさん:03/06/24 00:24 ID:???
>>66
ソースみれないのに答えられるかよ。
作者にメール汁!
6854:03/06/24 00:45 ID:???
いや、一般的にこーいうのつくるときどーするもんなのかなーという、
素朴な疑問だったので、やったことある人とかに気軽に答えてもらおうかと思ったんだけど
69nobodyさん:03/06/24 04:20 ID:8Tumd/pU
Cookie書き込むときってexpiresだけじゃダメなの?
70nobodyさん:03/06/24 05:09 ID:???
>68
要するに、エラーメールを自分の所に返ってくるようにするにはどうしたら
いいですかってことか?
7168:03/06/24 11:08 ID:???
>>70
そうそう。だって、Erros-toとか信用ならないってきくし
72nobodyさん:03/06/24 18:26 ID:???
>信用ならないってきくし
この表現がタマラン。
73nobodyさん:03/06/24 18:54 ID:???
>71
どうも、レン鯖のsendmailで大量送信しようとしてる厨ぽいな。
ちょっとテストしてみたらエラーになって返ってくるはずのメールが
返って来ず、前に大量送信で逮捕された奴はエラーメールが
原因だったよなー、どうしよう?!
って感じだな。以降スルーということで。
7471:03/06/24 19:28 ID:???
いやいや、おれはそんなあほなことしてないよ
75nobodyさん:03/06/24 20:08 ID:???
>>54のやつの感じだと、エラーメールを把握できないとまずいんじゃないかな?
メールリストを有効に保つ必要があるだろうし。
76nobodyさん:03/06/25 21:48 ID:???
>>62
クッキーを発行することがわかってるサイトに行って、
クッキー作ってそのクッキーがどんな風になってるか、
自分のマシンの中身を調べてみるくらいのことはしろ。
77nobodyさん:03/06/27 15:06 ID:rcTbJk7F
今までパソコン用に使っていたCGIをiモード用に変更して使いたいのですが、
出力したページが文字化けを起こしてしまいます。

Content-type: text/html;charset=Shift_JIS\n\n

とか入れているのですが、直りません。
その他、注意事項があったら教えてください。
78nobodyさん:03/06/27 15:13 ID:???
Shift_JISと言いながら、実際にはEUCやJISで送信している
7977:03/06/27 15:20 ID:rcTbJk7F
>>78

たぶん、そんなところだと思うのですが、
対応方法がわかりません

初心者の間違えそうなところを教えてください
80nobodyさん:03/06/27 15:24 ID:???
スクリプト自体がshift_jisになってなきゃだめよ。
jcode.plとかJcode.pm使って、いちいち変換するのは、
ユーザに入力させて、変数に取得するときは必要だが。
81nobodyさん:03/06/27 15:24 ID:???
具体的にどんな文字がどう化けているのか書いてくれれば、分かるかもしれない。
82nobodyさん:03/06/27 15:29 ID:???
>>77
ヘッダでコードを指定したのなら、出力する文字も同じコードじゃなきゃダメだよ。
そのヘッダは「ShiftJISに変換してくれるおまじない」ではないので、実際の文字コードが
EUCとかだったら当然文字化けする。
83nobodyさん:03/06/27 15:31 ID:???
>>82
俺が>>80で書いてるだろ。
同じこと書くな、ボケィ
84nobodyさん:03/06/27 15:32 ID:???
スクリプト自体がshift_jisになってなきゃだめよ。
jcode.plとかJcode.pm使って、いちいち変換するのは、
ユーザに入力させて、変数に取得するときは必要だが。
85nobodyさん:03/06/27 15:38 ID:???
>>84 シゲ
86nobodyさん:03/06/27 15:44 ID:???
( ゚д゚)でじゃぶ!?
8777:03/06/27 15:48 ID:rcTbJk7F
>>80
>>82

「おまじない」じゃなかったんですか!
では、スクリプトをShift_JISに変換してアップすればいいんですか?

・・・その方法を教えてください。
くれくれですみません!
8877:03/06/27 16:02 ID:rcTbJk7F
FTPソフトに「ShiftJIS変換」がありました。
それでアップしたら、できました!!

ありがとうございました。みなさん。
89nobodyさん:03/06/27 16:22 ID:???
>>88
いや・・・ ま、いいか
90nobodyさん:03/06/27 16:41 ID:???
>>88
・・・そんな安易でいいのかね。

文字列の処理してる部分があると、
2バイト目に \(0x5C) が入ってる文字で問題が起きるかもよ。
9177:03/06/27 17:50 ID:rcTbJk7F
>>89
>>90

今のところ、テスト用の簡単なページは正しい表示されてます。

&jcode::convert(\$value,euc,"$kcode","z");

&jcode::convert(\$value,sjis,"$kcode","z");
にしました。

iモード用CGIでの注意点とかを説明しているサイトとかあれば
紹介してください。
92nobodyさん:03/06/27 18:01 ID:???
ここはいつから、Perl コーディングスレになったんだ?





「CGI (Common Gateway Interface)」 は プログラミング言語じゃねー!!
93nobodyさん:03/06/27 18:05 ID:???
>>91
convertはそれでいいけど、そのことじゃなく。
スクリプトのファイルをシフトJISで保存してうpしろってこと。
その際、>>90が言うようなEUCでは問題のなかった部分が出てくるわけ。
94nobodyさん:03/06/27 18:21 ID:???
Perlスレとの相互誘導に疲れたので、もうここで答えることにしてます。
95nobodyさん:03/06/27 18:59 ID:???
>>94
諦めたらそこで試合終了だよ
96nobodyさん:03/06/27 19:00 ID:???
つっか、タイトルの左端に「CGI」って付いてるから意味ないじゃん。
アホが見たらCGI=Perlに脳内変換されるだろ。
Common Gateway Interface だけならまだ良かったかもしれん(手遅れだが)
97nobodyさん:03/06/27 21:03 ID:???

いっその事 >>92>>1 にして、あとはなんもテンプレ書かないってのはどうよ?
98t:03/06/28 16:25 ID:???
t
99nobodyさん:03/06/28 17:54 ID:???
>>97
あー、はげどうだね
100nobodyさん:03/06/29 09:15 ID:???
100geto zusa zusa (AA ry
101nobodyさん:03/06/29 17:15 ID:KusTQ6u8
CGI組んでるのですがちょーっと行き詰まってしまいました。
a,cgiでアンケートを集めてa.txt(datでも何でも空ファイル)というファイルに保存したいと思います。
そこで、a.txtにアンケートが投稿されるたびに1行づつ書き足していきたいのですがそこがよくわかりません。
どうやればいいのでしょうか?
102nobodyさん:03/06/29 17:20 ID:???
>>101 ダメダコリャ ヽ(´Д`;)ノ

君の質問のオカシイ所をあげてみようか…

1.何の言語で cgi を書いているのか明記していない

2.どの様な言語であろうと、それは完全にバックエンド(サーバーサイド)側で
閉じた処理なので CGI とは「あまり」関係ないと思われる

3.そんな君の為にこんなスレッドがこの板には存在する
http://pc2.2ch.net/test/read.cgi/php/1056078605/
103nobodyさん:03/06/29 17:30 ID:???
そうだな。最低限、言語は書いてほしい。
Perlだと思って回答したら、実はPHPでしたとか言われたらげんなりだし。
104nobodyさん:03/06/29 20:41 ID:???
a,cgi
105あぼーん:あぼーん
あぼーん
1061 ◆mwE/vdIjgM :03/07/02 03:28 ID:g3RHDSaJ
CGIって俺のこと?
1071 ◆mwE/vdIjgM :03/07/02 03:44 ID:???
Perl で作ったCGI の出力が文字化けします。
ブラウザが、EUC-JP に設定してるのにISO-8859 として認識してしまいます。
解決方法はありませんか。
108nobodyさん:03/07/02 04:24 ID:???
>>107
>>106は一体なに?
なんか真面目な質問に見えないから、今日は放置。。
109nobodyさん:03/07/02 04:34 ID:???
>>108
うん、俺もそう思って放置してた
110nobodyさん:03/07/02 07:17 ID:???
日本人だと思って日本語で話し掛けたら
英語で返答されました。
111nobodyさん:03/07/08 04:54 ID:???
このスレ使われないね・・・
112nobodyさん:03/07/08 06:02 ID:???
それだけみんなうまく運用してるのさ
113nobodyさん:03/07/08 10:59 ID:???
perlスレで答えてやってるからな。
114nobodyさん:03/07/08 11:23 ID:???
スレ題を「CGIだけど、何か質問ある」のままにしときゃ
よかったのにな。今のじゃ、読む気がしない。

115nobodyさん:03/07/08 11:49 ID:???
本当にCGIの運用ネタを扱うなら、そんなに需要があるわけでも
ないんじゃない?
116nobodyさん:03/07/08 11:53 ID:???
スレタイ1つでこんなにも変わるとはね。
117nobodyさん:03/07/08 11:55 ID:???
今までいかにスレ違いの質問が多かったってことか。
118nobodyさん:03/07/08 12:38 ID:???
そもそもCGIなんて話すことほとんどないしな。
CGI/1.1の話に花でも咲かせようか?
119nobodyさん:03/07/08 14:36 ID:???
CGI/1.1 って何だよ?(藁
120nobodyさん:03/07/08 14:39 ID:???
>>119
「何だよ」って何だよ?(藁
121nobodyさん:03/07/08 14:48 ID:???
>>119
知らなかったらググる
122nobodyさん:03/07/08 15:19 ID:???
PerlスレよりWebProg 初心者スレに流れてるんだよね
123nobodyさん:03/07/08 18:11 ID:???
それは良い傾向。
「コーディング」の一言が効いたのだろうか。
124nobodyさん:03/07/09 11:34 ID:LTIOpV+b
htdocsの直下に.htaccess に
ErrorDocument 404 /go2top.cgi
と書いて、

go2top.cgiには

#!/usr/local/bin/perl
$|=1;
print "Location:http://www.foo.co.jp/\n\n";
exit;

と書いたのですが、

存在しないURLにアクセスしても、
cgiを読みに行かず、
普通の「ページが見つかりません」となって、
Apacheのログを見ると、
ただの404 not found になってしまいます。

なぜなんでしょう?
------------------------------------------------------------
あと、これと関係しているのかどうかわかりませんが、
404の場合の制御に関して、何かが何kb以下だとどうのこうのっていうのが、
あったかと記憶にあるのですが、
なんだったでしょうか?
125nobodyさん:03/07/09 11:39 ID:???
>>124
激しくスレ違いな気がするが

・go2top.cgi は document root にあるの?
・ファイル名サフィックスが .cgi の時、CGI Script として動くようにしてるの?
126nobodyさん:03/07/09 11:46 ID:???
>>124
すれ違いだけどIEはエラードキュメントが小さいと自前のドキュメントを吐いてくれる。
迷惑なんだけどね。
127nobodyさん:03/07/09 11:50 ID:???
結局 M$ は周りに迷惑かけまくってるってことか
128124:03/07/09 12:33 ID:???
>>125
>激しくスレ違いな気がするが
あ、htaccessのえらい人
http://pc2.2ch.net/test/read.cgi/php/1019888234/
っていうスレがありましたね・・・ここからはそっちに移ります。

で、返答をば・・・
>・go2top.cgi は document root にあるの?
>・ファイル名サフィックスが .cgi の時、CGI Script として動くようにしてるの?
なってます。

>>126
なるほど、さんくすです。
129124:03/07/09 12:41 ID:???
・・・っていうか、
ErrorDocument 404 /
ってすればいいだけだと気づいた・・・。
1枚ページをかまさずに、
エラードキュメント=トップページにしちまえばいいと。

すんません。
130nobodyさん:03/07/09 12:45 ID:???
まあ、なんでもいいけどカスタムエラーでいちいちCGI動かしたらかなわんがな
131nobodyさん:03/07/14 03:07 ID:E2SfNkcW
携帯用のランキングCGIを作ってるのですが、
同じ携帯からの2回以上のアクセスはカウントしないようにする場合
どうやって同じ携帯電話であることを特定すればいいでしょうか?
132nobodyさん:03/07/14 03:16 ID:???
IPアドレスで判断すればいいのではないでしょうか
携帯電話使った事無いから詳しくはわからんけど・・・
133nobodyさん:03/07/14 03:16 ID:???
同じ携帯ってあなたの頭の中ではどう定義されてるのか?
それを示さない限りはっきりとした解答は得られない
134nobodyさん:03/07/14 03:54 ID:???
携帯はページ取得ごとにIPかわるよ。
135nobodyさん:03/07/14 04:06 ID:???
同じ携帯かどうかの判別はutnみたいなものを使わない限りできない
136nobodyさん:03/07/14 04:37 ID:???
IDとパスワード使えばできる。
137あぼーん:あぼーん
あぼーん
138nobodyさん:03/07/14 06:20 ID:???
運用スレにプログラミングの質問が来て、
プログラミングスレに運用の質問が来る。

アホらしい世の中であるなぁ。

139あぼーん:あぼーん
あぼーん
140nobodyさん:03/07/14 15:09 ID:???
レンタルサーバの引越しをしたのですが。
SSIの動作が異なっているために実行されません。。

SSI実行時のカレントディレクトリが異なっているようです。

サーバ側の設定などで修正は可能ですか?
ファイルの修正は多すぎて大変なので・・・。

解決策をご存知の方教えてください。
141nobodyさん:03/07/14 16:28 ID:???
ディレクトリの指定を変更すればいいじゃん。
大体、その質問内容だと何をしたいのかさっぱり解らん

他の人解る?
142nobodyさん:03/07/14 16:39 ID:???
同じくわからないな
具体的にどういうSSIがどうなるのか
143nobodyさん:03/07/14 18:40 ID:???
>>140

>サーバ側の設定などで修正は可能ですか?
技術的に可能かも知れんが、そんなこたあ鯖管に聞け。ここで聞くな。

>ファイルの修正は多すぎて大変なので・・・。
そういうのをすぐに修正できるようにスクリプト組まなかったお前の自業自得。
144nobodyさん:03/07/15 03:40 ID:Hnq/UICw
CGIをフリーウェアとして配布する時のライセンスだけど、GPLで配布するのって、どうよ?

[賛成]
・自由にいじれる(CGIならGPLでなくとも大抵普通だけど)。
・条件さえ満たせば、いちいち許諾を得ずに自由に再配布できる。

[反対]
・商用化の時に足かせになりそうだ(?)。
・“GPL汚染”が嫌だ。
145nobodyさん:03/07/15 06:30 ID:???
>・商用化の時に

自意識過剰です。
146nobodyさん:03/07/15 06:54 ID:???
CGIって規格(仕様?)自体はコピーフリーだろ。
自作perl scriptという意味ならその限りではないが。
147nobodyさん:03/07/15 11:00 ID:???
>>146 スマソ
148山崎 渉:03/07/15 11:05 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
149nobodyさん:03/07/15 12:25 ID:BbnXwsym
あげ
150nobodyさん:03/07/17 00:06 ID:???
CGIで動作する仕組みで
あたらしくフォルダーやら空白のDatファイル等を
作成する方法を教えてください。

言語はPerlです。

151nobodyさん:03/07/17 00:29 ID:???
方法?Perlの書き方ならPerlスレに池!
152nobodyさん:03/07/17 00:35 ID:???
153nobodyさん:03/07/17 12:52 ID:???
#! /usr/local/bin/perl
print "Content-type: text/html\n\n";
print "foo";

とだけ書いたCGIを、SSIの#include virtualで呼び出す。
ちゃんとfooという文字列が埋め込まれてめでたしめでたし…
と思ったら、なぜか特定のリンク元から飛んでくるとエラーになってしまう。
[an error occurred while processing this directive]

たったこれだけのスクリプトなのにリンク元によって動作が違うなんて
一体何が原因なのだろうか。
154nobodyさん:03/07/17 13:03 ID:jvbzuuVH
Locationヘッダでリダイレクトするとき、
print "Location: http://www.foo.com/file/thanks.html\n\n";
でなく
print "Location: ../file/thanks.html\n\n";
のように相対パスで書くと、
確か、なんらかの条件(環境)のときに、
正常に動作しない・・・という記憶があるのですが、
どういう条件(環境)でしたっけ。
155nobodyさん:03/07/17 14:09 ID:???
>>154
RFC2616 HTTP/1.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
絶対URIに「すべき」と書かれているのに、
相対URIを薦めているバカサイトはどこだ?晒してみ。
156nobodyさん:03/07/17 14:31 ID:???
>>155
どうしたら>>154から「相対URIを薦めているバカサイト」などというものが読みとれるんだ?
157nobodyさん:03/07/17 14:45 ID:???
>>154-155
「相対URI」について補足。ID、PASS 共「cgi-ml」 。
http://ns3.yt.com/ml/cgi/htdocs/44500/44507.html
http://ns3.yt.com/ml/cgi/htdocs/44500/44509.html

Location: /abs_path/file は CGI 的には正しいけど、それを
サーバが Location: http://example.com/abs_path/file
リダイレクトしてくれないと RFC2616 (HTTP) 的に不可になる、
という話らしい。

まぁ絶対URIで書いとくのが一番良いのは変わらんですが。
>>154 みたく相対URI且つ相対パスな指定はどっち的にも不可。
158nobodyさん:03/07/17 15:51 ID:???
>>157のリンク、パスワード入れないと見れないのねん。。(´・ω・`)ショボーン
159nobodyさん:03/07/17 16:09 ID:???
>>158
書いてあるじゃん
160158:03/07/17 16:17 ID:???
ホントダ!!
_| ̄|○ 吊に逝てきまつ
161154:03/07/18 00:09 ID:???
>>155
他人がつくったcgiを改修せなあかんのですが、
そのcgiの中に、print "Location: ../file/thanks.html\n\n";
があったもんで・・・。

なもんで、改修中なのでさらせませんあしからず。

>>157
ありがとうございます。
理解しますた。
162nobodyさん:03/07/19 11:31 ID:7HceImjZ
あるサイトのURLで、拡張子がcgiの場合、
使ってる言語がperlである可能性って、
何%くらいだと思います?

-------------------------------------------------------------
(以下、事情というか、蛇足ですが)

というのも、うちの会社がレンタルサーバ屋さんをやってて、
うちのサーバではperlしか使えない(php、asp、jsp使えない)んですわ。、
(ちなみにおれは、その会社のウェブ制作事業部で、perlのプログラム組んでる)

で、サーバ営業の人が
「他のサーバからうちのサーバへ移行しましょうよ〜」と言うとき、
お客さんのサイトで使ってる言語が、わからないときがあるので。

拡張子がphpなら、移行無理ってわかるんですけど、
拡張子がcgiの場合、どうなんだろうと思いまして。
163nobodyさん:03/07/19 11:42 ID:???
>>162
そんなフロントエンドの言語が何か知ったところでシステムを掌握出来るのかい。
164nobodyさん:03/07/19 18:30 ID:???
他にもDBとかOSの種類とか色々な問題がありそうだが。
165nobodyさん:03/07/19 18:42 ID:???
>>162
レンタルサーバーなら、実際のところ9割方perlなんじゃねーの?
ただ、>>164の言うとおり、dbやら、cronとかメールまわりとか、他にも障壁は山積みだが、
営業のとっかかりとしては拡張子cgiで判断してもいいんじゃねーの。
166nobodyさん:03/07/19 19:00 ID:???
>>162
と、言うか、

>うちのサーバではperlしか使えない(php、asp、jsp使えない)んですわ。、

明らかに自社システムに魅力が無いのを何とかした方が良いんではないだろうか。
167nobodyさん:03/07/19 21:00 ID:???
イマドキ、Perlだけでつか・・・。ネタ?
168162:03/07/19 22:12 ID:xa8aez3T
>>163
はげしくどうい
>>164
うち、DB使えません(泣)
>>165
crinなんて、たぶん営業の人は聞いたこともないだろー。
>>166
そうなんですよねー。
でも、もっと何かをつけたとして、はたしてカスタマーサポートできるのかどうか・・・
>>167
マジです。でも、rubyは使えるよw
169162:03/07/19 22:13 ID:???
>>168
crin はcronのtypoね
170あぼーん:あぼーん
あぼーん
171nobodyさん:03/07/25 23:16 ID:gaEpK534
CGIでjavascriptを含むhtmlを吐き出す時に、javascriptが働かないものがあります。
ヘッダは同じだし、吐き出されたHTMLをhtmlファイルとしてupするとちゃんとjavascriptをかみます。

特にエラーはでてきません。無視されますが。
IEでは「書き込みできません」というエラーがでます。

お心当たりある方はレスおねがいします。
172あぼーん:あぼーん
あぼーん
173nobodyさん:03/07/26 02:05 ID:MRZ/abmL
テキストファイルをHTML出力する際に、MacとWindowsで表示が変わってしまい、
困っています。同じフォーマットのHTMLファイルを作成して見る分には、
MacとWindowsの環境では違いはないので、タグの問題ではないと思います。

現象としては確認していないのですが、スペースで区切った部分がズレたり、
文字化けを起こしているようです。

原因に心当たりのある方はいらっしゃるでしょうか?
もしわかる方がいましたら、教えてください。よろしくお願いします。
174nobodyさん:03/07/26 02:29 ID:???
>>173
「テキストファイルをHTML出力する際」ってどゆこと?
htmlなの? plaintext ファイルなの?

.txtとかをサーバにアップロードして、htmlファイルからリンクして表示するときのことだとすると、
.txt の Content-type が何になってるか、Content-type と一緒に吐く charset と
ファイルの文字コードが食い違ってないかとか確認したらいいと思うけど。
まずは現象を確認して、現象を再現できるようにしないと対応は難しいんじゃないかな。
175あぼーん:あぼーん
あぼーん
176nobodyさん:03/07/26 03:11 ID:MRZ/abmL
>174
レスありがとうございます。

正確には
1. テキストファイルをサーバにアップ
2. cgiでテキストファイルをもとに、データファイルを作成
3. 同じくcgiでデータファイルをもとにprintでHTML出力
という流れで処理しています。

このcgi出力で表示しているものとは別に、
同じフォーマットのHTMLファイルもあるのですが、
それだときちんと表示されています。

この違いがどこからくるのかわからなくて…。

現象の再現は、Macを持っていないので、ちょっと難しいのです。
177nobodyさん:03/07/26 03:25 ID:???
>>176
出力が同じで見た目が違うということは
HTTP Response Headerが違うということ。
>>174さんの言う通り
>.txt の Content-type が何になってるか、Content-type と一緒に吐く charset と
>ファイルの文字コードが食い違ってないかとか確認したらいいと思うけど。
です。
178nobodyさん:03/07/26 03:28 ID:???
>telnet www.***.com 80
GET /***/hoge.html HTTP/1.0

の出力結果と

>telnet www.***.com 80
GET /***/hoge.cgi HTTP/1.0

の出力結果で食い違う部分を貼ってごらん。
179nobodyさん:03/07/26 04:18 ID:???
>177-178
レスありがとうございます。やっと意味がわかりました。

つまり、例えば2.のデータファイルはeucコードなのに、
3.でS-JISとして表示していないか、ということなのですね。

お恥ずかしい話なのですが、
無料サーバなので、telnetが使えないのです。

環境を再現する方向で、なんとか対応してみたいと思います。
こんな夜中にありがとうございました。
180nobodyさん:03/07/26 05:13 ID:???
>>179
>無料サーバなので、telnetが使えないのです。
んなわきゃない。80番ポートにつなげられなかったらブラウザからでも見えなくなってしまうぞ。
181nobodyさん:03/07/26 06:00 ID:???
レスありがとうございます。

念のため確認してみましたが、やはり切断されてしまいました。
ダメみたいです。
182nobodyさん:03/07/26 06:40 ID:???
>>181
まさか
>telnet www.***.com 80
ってそのまま書いたんじゃないだろうな。
ttp://ash.jp/net/telnet_http.htm

そうでなければプロキシ使ってるんだろう。
>telnet プロキシ 8080(とは限らない)
GET http://www.***.com/hoge.html HTTP/1.0
とやるとか。

正直こっちの言ってることが分からないんだったら、
ヘッダを見るツールを使えばいい。
183nobodyさん:03/07/26 06:50 ID:???
ちなみにCGI側でContent-typeを吐いても
サーバがそれを無視する設定になってることもあるから、
ちゃんと確認するにはヘッダを見るしかない。
184nobodyさん:03/07/26 07:02 ID:???
ご親切にありがとうございます。

プロキシを使っているのかはわかりませんが、
やはり
>telnet サーバ 80
で、ダメでした。

ヘッダを見るツールですが、「httpReq」でいいのでしょうか?
DLして使える状態にしました。
185nobodyさん:03/07/26 08:17 ID:???
度々すいません。
charsetが出ていなかったので、「webmekuri」でやってみました。
これでなにかわかるでしょうか?
お手数をかけて申し訳ないです。よろしくお願いいたします。

・perl
HTTP/1.1 400 Bad Request
Date: Fri, 25 Jul 2003 23:03:26 GMT
Server: Apache/1.3.27 (Unix) PHP/4.3.2 mod_gzip/1.3.26.1a mod_layout/3.2
Connection: close
Content-Type: text/html; charset=iso-8859-1

・text
HTTP/1.1 400 Bad Request
Date: Fri, 25 Jul 2003 23:04:30 GMT
Server: Apache/1.3.27 (Unix) PHP/4.3.2 mod_gzip/1.3.26.1a mod_layout/3.2
Connection: close
Content-Type: text/html; charset=iso-8859-1
186nobodyさん:03/07/26 11:57 ID:???
質問するやつは名前にレス番を入れろよ
187nobodyさん:03/07/26 13:15 ID:???
>>185
HTTP/1.1 400 Bad Request
はおかしいだろ。
perl(CGI?)の方はまだしもtext(HTML?)の方が400なのは変だ。
ブラウザでちゃんと見えてるのか?webmekuriのマニュアル嫁。
HTTP/1.1 200 OKになるまで帰ってくるな。
188nobodyさん:03/07/26 13:20 ID:???
ってかアドレス晒せば一発。こっちから見てやるよ。
189nobodyさん:03/07/26 13:23 ID:???
>>188
「やっぱりブラウザでも見れねぇぞ!」なんて言うどうでもいい情報のために何でそんな面倒くさいことせんといかんのだ。
190nobodyさん:03/07/26 13:33 ID:???
>>189
別にそんなに面倒じゃないよ。
多分彼はツールの使い方を間違ってるんだよ。
もう説明するの面倒くさいからアドレス晒してくれた方が楽。
191あぼーん:あぼーん
あぼーん
192nobodyさん:03/08/01 14:39 ID:gYU9QUBu
CGIのテキストエリアに文字(アルファベット以外)を書くと
=%3E%3E1%0D%0A%81@%81@%81@%81@+%81@%81@%81R%2
8%A5%83%D6%A5%29%2F%81@+%81@%BD%DE%BA%B0%0D%0A%81@%81@%81@%81@+%81@%81_%28.%81_+%83m
こういう文字列にブラウザが変換してWEBサーバーに送りますよね
この変換機能をつかえるモジュールや関数ってないのでしょうか
単なる2バイトの漢字コードとおもってたんですが+とかxとかの意味がよくわかりません
解説しているページがあったらお教え願います
193あぼーん:あぼーん
あぼーん
194nobodyさん:03/08/01 14:57 ID:???
url encode decode でぐぐれ
195192:03/08/01 15:18 ID:???
>>194
謝謝
196あぼーん:あぼーん
あぼーん
197あぼーん:あぼーん
あぼーん
198あぼーん:あぼーん
あぼーん
199192:03/08/01 18:41 ID:dlG1lsZs
ぐぐってみたんですけど
漢字コードの変換の解説しか出ないんですけど
+ とか xがなんでててくるのかがわかりません
200ponpon:03/08/01 19:02 ID:???
fmlのメーリングリストの設定をしていて、正常に終わったはずなのですが、
CGIの設定をしてあるので、Webからアクセスして、新規MLを作成すると以下のエラーがでてしまします。
WARN: cannot open /.qmail-Lnux:unet:co:jp-ka from main /usr/local/fml/makefml 3593
WARN: cannot open /.qmail-Lnux:unet:co:jp-ka-ctl from main /usr/local/fml/makefml 3594
WARN: cannot open /.qmail-Lnux:unet:co:jp-ka-default from main /usr/local/fml/makefml 3595
ちなみにコマンドでmakefml newmlの場合はエラーなく作成できました。
どなたか、わかる方教えてもらえないでしょうか?お願いします。
201nobodyさん:03/08/01 22:33 ID:???
>>199
いや、書いてあるだろう……
ぐぐったんなら複数のページを参考にしてみれ。

ちなみに + は半角スペースを置換したもの。
xは特に意味はない。(そのままxという文字。おそらくシフトJISの2バイト目だろう)
202nobodyさん:03/08/01 23:54 ID:???
>>200
UNIX板に全く同じ質問をしている人がいるので参考にすると良い。
http://pc.2ch.net/test/read.cgi/unix/1058708085/334
203nobodyさん:03/08/02 00:06 ID:???
マルチかよ!
204nobodyさん:03/08/02 00:58 ID:???
>>199
まぁなんだ。Perlメモでも見れ。
ここはCGIスレだしお前さんはPerl使ってないかもしれないが、詳しい説明がある。
205山崎 渉:03/08/02 02:21 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
206ぼるじょあ ◆ySd1dMH5Gk :03/08/02 04:49 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
207nobodyさん:03/08/02 10:28 ID:fI9uzQF/
>>202
すいません、UNIX板に質問しているのま私なのです。(。。)
208nobodyさん:03/08/02 10:33 ID:???
202は暗にマルチポストの指摘をしてるんだろ。
209nobodyさん:03/08/02 12:11 ID:???
>>207
移動する時は元のスレに「○○へ移動します」と書いてから移動しろバカ
210nobodyさん:03/08/02 14:38 ID:???
>>200
Linux板に似たような質問をしている人がいるので参考にすると良い。
http://pc.2ch.net/test/read.cgi/linux/1059545839/217
211nobodyさん:03/08/02 14:43 ID:???
情報を追加しているのはいいのだが、先に質問したスレでレスがないからといって
放置するのはどうだろう。
だからマルチは嫌われるのだが。
212nobodyさん:03/08/02 15:10 ID:???
わかる人いたら、教えてください。

LAN内のXPマシンにApacheを入れて、テスト環境を作りました。
以前に借りていたWebサーバーで使っていたPerlを動かしてみたところ、

open(IN, $filename)
$buff = <IN>;

とすると、テキストファイルの最後まで一気に読みこまれてしまいます。
以前の環境では改行までを読み込んでいました。
これは、どうしてなのでしょうか?
改行までを読み込むコードにするには、どうしたらいいのでしょうか。
213nobodyさん:03/08/02 15:14 ID:???
>>207
改行が [LF] になっているのに 2 ヘェー
[LF] → [CRLF]にしる
214nobodyさん:03/08/02 16:29 ID:???
>>212
また、来たよ…。>>1 も言語も書いてないオヴァカ質問者
まぁ、それは perl だから、答えると

> とすると、テキストファイルの最後まで一気に読みこまれてしまいます。

当たり前だろ。perl 知らないのか?
$buff には最初の行が入るだけで後は空読みして全部捨てられる。
スカラとかリストの事よく解ってないね
215nobodyさん:03/08/02 16:48 ID:???
>>214
ネタレスするなら、マジレスの前に入れるべし。
216nobodyさん:03/08/02 17:55 ID:???
>213
その通りでした。
テストで使っていたファイルだけ、たまたま[LF] になっていました。
[CRLF]の改行のファイルでやったらうまく行きました。
ありがとうございます。[LF]ではないと、思いこんでいました。

>214
さすがに、そのくらいはわかります(笑)。
217nobodyさん:03/08/02 18:42 ID:???
> わかる人いたら、教えてください。

218nobodyさん:03/08/02 21:17 ID:???
>>212
さすがに、そのくらいはわかります(笑)。
219nobodyさん:03/08/02 21:53 ID:???
> $buff = <IN>;
>
> とすると、テキストファイルの最後まで一気に読みこまれてしまいます。

> さすがに、そのくらいはわかります(笑)。



( ´,_ゝ`)プッ
220nobodyさん:03/08/04 13:54 ID:???
Perl-CGIを使って、XMLの送受信がしたいのですが、
方法、可能かどうかについて書かれたサイト、参考書が見当たらず困っております。。

Set xmlHTTP = CreateObject("Msxml2.ServerXMLHTTP")
xmlHTTP.Open "POST", "送信先URL", False
xmlHTTP.send xmlDoc
resXML = xmlHTTP.responseXML.xml

ASPでは、上記方法でらくらくといけるのですが、
Perlで同じことをする方法ってあるのでしょうか?
221nobodyさん:03/08/04 14:00 ID:IgxIVir7
パーミッションはあってるのに、
ユーザから、
「あるcgiにアクセスしようとしたら、
403 のステータスコードが返された」といわれました。
でも、同じ作業を自分でやっても、再現性がとれません。(正常動作する)
これって、何が考えられるんでしょうか?
222nobodyさん:03/08/04 14:19 ID:???
>>221
・ユーザをアクセス禁止している。
・ユーザが夏厨で嫌がらせで言ってる。
・同じ作業をやっていない。
お好きなのをどうぞ。
223221:03/08/04 15:01 ID:???
>>222
やっぱそんなもんすかw

すると、「同じ作業をやっていない。」なのかなー
224nobodyさん:03/08/04 16:46 ID:CNOu+lh/
画像アップロード付きCGIでの質問です。

sub form { #(1)
# いろいろなFORMに入力させsubmitさせる。
# <input type="file">もある。
}
sub reconfirm{ #(2)
# 画像込みで仮表示し内容を再確認させてsubmitさせる。
# FORMからのデータは<input type="hidden"〜>で持ち回る。
}
sub data_input{ #(3)
# ユニークなdata_idを決めてデータを格納する
# 画像データはdata_idを元にユニークなファイル名を付けてupload処理(CGI.pmで)を行う。
}

こんな流れの処理です。
※次に続く
225224:03/08/04 16:47 ID:CNOu+lh/
※続き
元は受け入れデータがテキストのみで画像はなかったので、
これで上手くいっていたのですが、画像アップロード機能を付加した所
(2)を経由させると<input type="hidden"〜>では画像データを持ちまわって来ないので
とりあえず(1)→(3)として運用していますが、やはりこのままだと
ちょっとしたEnterキーの誤入力などでいきなり書き込みされてしまうので
どうしても(2)を介在させたいと思います。
(2)で再編集必要な場合、あるいは画像の選びなおしの場合に(1)に戻るのは
ブラウザの「戻る」ボタンを使わせます。
でもし画像込みで(2)の介在が可能ならば、(2)ではその画像も仮表示させたい、
と思っていますが、これを実現するには

A:(1)→(2)の段階でテンポラリーファイルにupload処理上で仮表示させ、
  (3)で正式なファイル名称にrenameする。

あるいは
B:(1)→(2)では画像ファイルを変数に格納した上で仮表示し、
  (3)で正式なファイル名称にした上、ディスクに格納する。

どんなふうにするのが当たり前、現実的でしょうか。
画像ファイルはJPEG又はGIFで二点ほどで、
$ENV{CONTENT_LENGTH}は200kで制限かけてます。
僕としては仮表示(正式にuploadするかどうかわからない)時点で
ディスクに書き込むよりはできれば変数に仮に格納するBにしたいのですが、
その方法がよくわかりません。
そもそも可能でしょうか。
226224:03/08/04 16:49 ID:CNOu+lh/
あ、言語はperlです。
227nobodyさん:03/08/04 17:17 ID:???
>>226
Perl のみでは不可能。
削除できるんなら別にいらない機能かと思われ。
(ようするに誤送信する香具師が悪い)

あとなんでもいぃからアップローダのスクリプトを眺めて処理の流れを嫁。
228224:03/08/04 17:44 ID:CNOu+lh/
>>227
ども、ありがとうございます。
そうですか、perlだけではだめですか…

アップロード処理自体は問題なくできてます。
つまりFORMで受け取ってそれをディスクに格納、はできてます。
そのあいだに再確認の手順を挟みこめないかな、と、

で、その再確認で送ろうとする画像も表示したい。
とはいえもちろんまだローカルにしかないファイルを表示はできませんから、
この時点でサーバが受け取ってなくては無理なわけですが、
できればそれをテンポラリーであれディスクに書き込まないで
できないかな、と思った次第です。

やっぱりこの機能をあきらめるか、あるいはこの時点でとりあえず仮であれ
なんであれディスクに書き込む必要がある、って事ですね。
229nobodyさん:03/08/04 17:47 ID:???
すいません、教えてください。
メールの添付ファイルをperlを使ってbase64デコードすると、
32KBのところで切れてしまいます。
perlのソースは下記の通りです。

# ===================================================================
# mime_dec_base64 … base64デコード
# Usage : &mime_dec_base64( $input )
# 引数 : 被デコードデータ
# 戻り値 : デコード済バイナリ
# 外部参照: なし
# ===================================================================
sub mime_dec_base64 {
$_ = @_[0];

# --- 非base64キャラクターと'='を除去
tr!A-Za-z0-9+/!!cd;

# --- 底を変換する
tr!A-Za-z0-9+/!\x00-\x3f!;

# --- 6ビット揃えして、戻す
$_ = unpack('B*', $_);
s/(..)(......)/$2/g;
s/((........)*)(.*)/$1/;
$_ = pack('B*', $_);

return( $_ );
}

よろしくお願いします。
230nobodyさん:03/08/04 18:24 ID:???
>>227
なんか、勘違いしてるな(藁
231229:03/08/04 20:18 ID:???
すいません、自己レスです。
もともとbase64エンコードって、サイズの限界が32KBなんですね。
・・・ってことで、添付ファイルを分割後エンコード→結合って方法で
解決しました。
232224:03/08/04 20:47 ID:CNOu+lh/
画像表示したい所に、
while ( read( $fh, $buffer, $baffer_size) ) {
print "$buffer";
}
ってやったら文字化けずらずら出てきました。
なんか実現に近づいているような期待しているんですが、
勘違いですか?
233nobodyさん:03/08/04 20:52 ID:???
それ、画像ファイルじゃねーの?
試しにその内容を .jpg とか .gif ファイルに保存して見れば?
234224:03/08/04 20:54 ID:CNOu+lh/
>>233
はい、画像ファイルです。JPEGです。
でファイルに保存したら見られます。

やりたいのはファイルに保存しないでHTMLファイルの
一部として表示しちゃいたいんです。
できませんでしょうか。
235nobodyさん:03/08/04 21:23 ID:???
>>234
htmlでの画像表示法知ってるかい
urlでファイル名を指定するんだよ。
236224:03/08/04 21:34 ID:CNOu+lh/
>>235
GDとか使うとメモリ内のデータを画像として表示しますよね。
その辺の応用でできないもんかな、とか思って。

いろいろやってみてるんですが上手く行かないですけど。
237235じゃないが・・・:03/08/04 21:43 ID:???
>>236
>GDとか使うとメモリ内のデータを画像として表示しますよね。
htmlでの画像表示法知ってるかい
urlでファイル名を指定するんだよ。
238nobodyさん:03/08/04 21:50 ID:???
画像データをファイルに保存して、出力する html に <IMG src="..."> でいいんでは?
239224:03/08/04 21:54 ID:CNOu+lh/
>>237
はい、知ってます。
今はそれでやってますから。
FORMから受け取ったものをディスクに格納し、
表示はそのファイルを<IMG src="..."> で表示させてます。

で、FORMから受け取ったものをディスクに格納する前に、
表示する方法がないかな、といろいろやってみているわけで、
無駄な努力をしちょる、という事なんでしょうね、
きっと。
240nobodyさん:03/08/04 22:02 ID:???
>>239
multipart/mixed なんてものもあるが、まともに実装されている
ブラウザが存在するのか疑問。素直に一旦ファイルに吐く方が
いいと思う。
241nobodyさん:03/08/04 22:02 ID:???
>>236
>GDとか使うとメモリ内のデータを画像として表示しますよね。
表示するのは画像のみだけどね。
htmlで表示するには結局ファイルに保存しないとだめでしょ。
formで受け取ったjpeg画像もContent-type:image/jpegヘッダーの後に出力すれば
画像のみなら表示できる。
242224:03/08/04 22:05 ID:???
わかりました。

reconfirm で一旦テンポラリーファイルに保存→表示
data_input でrenameして正式格納、って事で進めます。

ありがとうございました。
243nobodyさん:03/08/04 22:41 ID:???
>>224
binmode()したらいいんじゃないの?
244224:03/08/04 23:11 ID:???
>>243
それも試しましたがだめでした。
画像の生データをHTMLの途中に流し込んで、って言うのが
無理なんでしょうね。
245nobodyさん:03/08/04 23:18 ID:???
>>244
>画像の生データをHTMLの途中に流し込んで、って言うのが
無茶もいいところ。
GDだって「HTMLの途中に流し込」むなんてできんだろ。
というかHTMLを0から勉強した方がよさげ。
246nobodyさん:03/08/04 23:20 ID:???
訂正
>というかHTMLを0から勉強した方がよさげ。
というかHTMLとHTTPを0から勉強した方がよさげ。
247224:03/08/04 23:50 ID:???
>>246
画像吐き出すスクリプトを別にするなり再帰なり、何しろ別のプロセス
から吐き出して<IMG src=""〜>で呼ぶってのならできるんでしょうが、
まあ、言われなくてもいろいろ勉強中ですわ。

ほんじゃ
248nobodyさん:03/08/05 00:56 ID:???
急に態度が悪くなったな
249nobodyさん:03/08/05 01:08 ID:???
どうもポン7のようだ
250nobodyさん:03/08/05 01:18 ID:???
何!ポン7だったのか。
JavaScriptでローカルファイルを表示させる方法もあるのだが
教えるのは辞めておこう。
251nobodyさん:03/08/05 01:26 ID:???
コイツの言っている事は、テキストファイル中に実行可能ファイルの
バイナリ埋めこんでそれを実行しようとしているようなもんだな
252224:03/08/05 02:03 ID:???
>>245
GDができないんじゃなくて、HTMLをそうできないようにしてるから
できなんだと思います。
GDの出力をWEBページの一部として表示することは、
ホントにできませんか?
>>248
いえいえ、お相手ありがとうございました。
>>249
そうよばれたのは初めてです。ちゅうか、その方とは違うと思います。
>>250
いや、どうも伝わってないようですが、ローカルファイルを表示
したいわけじゃないんです。
>>251
いえ、テキストファイルじゃなくて画像ファイルって言ってるんですが、
どうも誤解させたようで、申し訳ありませんでした。

皆様に幸あれ。
253nobodyさん:03/08/05 02:31 ID:???
>>252
ちゃんとレス嫁馬鹿者。

>>251が言ってる
>コイツの言っている事は、テキストファイル中に実行可能ファイルの
>バイナリ埋めこんでそれを実行しようとしているようなもんだな
は合ってるだろ。

>いえ、テキストファイルじゃなくて画像ファイルって言ってるんですが、
ほんっっっとに馬鹿だな。日本語勉強しろ。
お前はHTML(テキストファイル)の中に画像(バイナリ)を埋め込みたいと言ってる。
そりゃ実行できるわけないだろ。(まあ見えなくは無いが文字化けみたいになるわな)



ついでに
>GDができないんじゃなくて、HTMLをそうできないようにしてるから
>できなんだと思います。
どうすればHTMLにバイナリを埋め込んで表示できるんだ。
>GDの出力をWEBページの一部として表示することは、
>ホントにできませんか?
だから<img src="〜">ならできるっつってんだろ。
その時のresponse headerはContent-Type: text/htmlじゃなくてContent-Type: image/(jpeg|gif|etc.)で
message-bodyはその画像のみだ。

HTMLとHTTPを0から勉強しなおせ。
というか、人の話を聞かないようならプログラムやめろ。マジで。
254224:03/08/05 02:56 ID:???
>>253
聞いてるってばよ。
ありがとうございました。

余計ですが、あんたの253がいっちゃん、マトモでしたよ。
自慢していいよ。
255nobodyさん :03/08/05 03:37 ID:???
unpackをつかって、uriエンコードなり、\x00なんぞを、該当keyに出力して、packで戻すとかすれば?

ただ、画像サイズがデカくなると、htmlのサイズ自体も脹れ上がるからお薦めはせんし実装しようとも思わんけどな・・・

というか、GDやらしってて、この程度の発想がでてこんのが不思議であるわけだが・・・
256nobodyさん:03/08/05 10:21 ID:???
javascriptを使うのが楽な気がするが
257nobodyさん:03/08/05 12:08 ID:???
>>254
おまえ、人間やめろ
258nobodyさん:03/08/05 13:34 ID:???
なぁなぁ、0から10の中から3つの異なる乱数を求める時って、

while($a eq $b || $a eq $c || $b eq $c){
$a = int rand 10 ;
$b = int rand 10 ;
$c = int rand 10 ;
}

これでいいの?
他になんかスマートな書き方ある?
259nobodyさん:03/08/05 13:46 ID:???
質問があるのですが、perlのソケット通信で他のサーバーにあるhtmlを
読み込むことってできるんですか?
260nobodyさん:03/08/05 14:21 ID:???
>>258
永久ループになる可能性が 0 ではないので不可。
@seed = (0..10);
($a,$b,$c) = (splice(@seed,rand($#seed),1),splice(@seed,rand($#seed),1),splice(@seed,rand($#seed),1));
みたいにしてみる。
# ただし同じ数字が連続しない乱数は乱数ではありませんので。

>>259
できまーす。
261nobodyさん:03/08/05 14:23 ID:???
>>260
s/rand($#seed)/int(rand($#seed))/g;
スマソ

つーかスレ違いだったか。鬱。。。∧||∧
262258:03/08/05 14:42 ID:???
>>260
>>261
サンクスコ
そしてスレ違いスマソ
263nobodyさん:03/08/05 16:02 ID:???
Perl-CGIで、重い処理をさせるときに、その重い処理の間、
「ただいま処理中です」
と表示させておいて、処理が完了したら別ページに飛ばす
(処理完了が書かれたHTMLを表示する)
というCGIを作りたいと思っているのですが、
どうもうまくいきません。。

バッファのフラッシュを考えたのですが、
最後に別ページを表示するので、ちょっと違うかなと思いました。。

こんなイメージです。

print "Content-Type:text/html\n\n";
print "loading...";
sleep(10); # ここが重い処理と想定
print "Location:$URL\n\n";
exit;

この通りではいかないのはわかっておりますが、
他に方法がないものかと思っております。。。

この処理自体、Perl-CGIではできなかったりしますかね(汗
264nobodyさん:03/08/05 16:47 ID:???
>>263HTTP の仕様上、難しいからできないと考えた方がいい
265nobodyさん:03/08/05 16:50 ID:???
>>263
httpヘッダーは1回改行のみを送ったら終わりでしょう。
266263:03/08/05 17:35 ID:???
>>264,265
( ´・ω・`) ありがとう…。
HTTPヘッダの問題ということは、
言語に関わらず無理ということですね・・・。
(ASPで同様のことをやっていたのを見たことがあるのですが、
あれは何か特殊なことだったのでしょうか・・・)
267nobodyさん:03/08/05 17:43 ID:???
1. 重い処理をバックグラウンドで実行し、判定用CGIをmeta refreshで定期的に呼び出す。
2. バッファリングをせずに垂れ流し、処理の最後にJavaScriptのdocument.writeでHTML書き直し。
3. 2.のdocument.writeの代わりにlocationで別HTMLにジャンプ。

これぐらいしか思いつかないや
268nobodyさん:03/08/05 17:47 ID:???
>>266
$| = 1;
print "Location〜〜〜〜\n\n";
重い処理。

で無理?
269nobodyさん:03/08/05 17:58 ID:???
>>263
昔仕事でそんなようなことやってた。
そのときは、まずsubmitされたデータをhiddenなりで埋め込んだ
「ただいま処理中です」ってページを表示、
そのページのonloadでhiddenのデータをsubmitって感じでやってた。

その際、ブラウザがタイムアウトしないように改行か何かを定期的にflushして、
プログラム側(というかhttpd側?)もタイムアウトしないように
XSモジュールでスレッドとイベント作って、指定時間でraise(SIGINT)
みたいなことやってたな。<俺は関与してない


1. 入力画面
   ↓何らかのデータ送信
2. 送信されたデータをhiddenで埋め込んだ「処理中」ページをとりあえず表示
   ↓onloadで本当に処理させるページへsubmit
   ↓サーバで重い処理
   ↓定期的にタイムアウト対策
   ↓処理終了
3. 結果画面

って感じ。
270nobodyさん:03/08/05 18:28 ID:???
httpの仕様を全く無視した使い方ですなぁ
271nobodyさん:03/08/05 18:49 ID:???
クライアントが求めてるんだからしょうがない。
272263:03/08/05 20:11 ID:???
みなさま、いろいろとありがとう( ´・ω・`)

BODYタグのonLoad もしくは、
最後にJSでlocation.href変更スクリプトを吐き出しにしたところ、
なんとかそれっぽい感じにはなってきたんですが、
バッファリングされたりされなかったりしちゃいます。。。

#! /usr/bin/perl
$| = 1;
print "Content-Type:text/html; charset=EUC-JP\n\n";
print "<HTML><BODY>";
print "読み込み中";
print "</BODY></HTML>";
sleep(5);
print <<EOF;
<script language="javascript">
document.location.href='http://www.yahoo.co.jp/';
</script>
EOF
exit;

いくときといかないときがあるということは、
バッファリング自体怪しいかなぁ・・・
273263:03/08/05 20:36 ID:???
telnet だと、正常にsleep後にJSが出てるのでブラウザ問題かもしれないです。。。
274263:03/08/05 20:57 ID:???
改良を加えてみました。

#! /usr/bin/perl
$| = 1;
print <<HTML_DATA;
Pragma: no-cache
Cache-Control: no-cache
Content-Type:text/html; charset=EUC-JP

<HTML>
<BODY onLoad="document.location.href='index.html';">
読み込み中
</BODY>
</HTML>
HTML_DATA
print( "\n" x 8192 );
sleep(5);
exit;

ただ、WinのNN6.2, IEでは確認とれたのですが、
Macとなると、両方ともダメでした。。。
275nobodyさん:03/08/05 21:06 ID:???
いわゆる泥沼ってやつだな。
276269:03/08/05 21:30 ID:???
>>272
あと「戻る」で戻ってきた場合の処理もされてたかな。
277初心者:03/08/05 22:00 ID:rGA945yM
こんばんわ 初心者です。
質問なんですが、自分iswebで無料ホームページを作っているのですが、
cgiについてよくわかりません。
パーミッションを変更してアップロードするだけでいいのですか?
278nobodyさん:03/08/05 22:17 ID:???
279nobodyさん:03/08/06 00:43 ID:s3UpSeM9
>>263
フレームは使用禁止ですか?

フレームページに隠しフレームと見えるフレームをつくる
隠しフレームのソースは重い処理をしたいCGIにする。で処理終了したら
リダイレクトするか、winodow.top.location.href = "index.html";を書き出す。
で、見えるではフレームにお待ち下さいの表示をしておく。

これで上手くできないかな??
280279:03/08/06 00:44 ID:???
ごめん、酔ってるからまともな日本語かけないわ・・
281nobodyさん:03/08/06 01:03 ID:pv8vzu63
282nobodyさん:03/08/06 01:12 ID:9HRAagYp
★おまんこナビ登場!!★日本の美しきオマンコ★
http://endou.kir.jp/marimo/link.html
283nobodyさん:03/08/06 01:40 ID:???
>>263
単純に「お待ちください」のページから重いCGIを呼び出すのはどう?
ブラウザ依存するかもしれないけど。
284nobodyさん:03/08/06 09:23 ID:???
てか、CGIでそんなに重たい処理って何?
10秒も20秒もかかるの
285263:03/08/06 10:01 ID:???
>>279
フレームは特に使用しても問題ないです。
その方法は結構スマートですね。
ちょっと試してみたいと思います。

>>283
フォームからCGIを呼び出して、
処理中にお待ちくださいを表示するので、
一度Locationで、hiddenを持たせたお待ちくださいHTMLを
表示して、onLoadでSubmitしてもいいかもしれません。
(この辺はブラウザ依存を要調査ですね
 できれば依存を気にしなくてもできるスクリプトが望ましいです。

>>284
通信処理というより、通信経路で時間をとられるといったほうが正しいかもしれません。


みなさん色々と参考になります。
ありがとうございます。
286263:03/08/06 10:03 ID:???
×通信処理というより、
○重い処理というより、

でした・・・
287263:03/08/06 13:23 ID:???
フレームにてとりあえず動作確認とれました。

▼index.html
<FRAMESET rows="0,*">
<FRAME src="process.cgi" >
<FRAME src="loading.html">
</FRAMESET>

▼loading.html
<HTML>読み込み中</HTML>

▼process.cgi
print <<HTML_DATA;
<HTML>
<BODY onLoad="window.top.location.href='done.html';">読み込み中</BODY>
</HTML>
HTML_DATA
sleep(10);
exit;

▼done.html
<HTML>読み込み完了</HTML>


この場合、エラー内容を元にページを振り分けたり、
値を引き継いだりでまた問題が出そうですが・・・。
とりあえずこの方法が一番よさそうな気がします。
288nobodyさん:03/08/06 18:52 ID:???
www.foo.co.jpが発行したクッキーを、
hoge.foo.co.jp
で取得することはできますか?

ただし、両者は互いに別のサーバ上にあります。

テストしてみろといわれそうですが、
今まだ環境が用意できてないもので・・・
289nobodyさん:03/08/06 22:26 ID:???
>>288
できないと思う。てか、できたら危険だべ。
290nobodyさん:03/08/06 23:02 ID:???
>>288
レンタル鯖のサブドメインってそんな感じでしょ。
それができてしまうと、他の契約者のクッキーが食べ放題になってしまう。
291nobodyさん:03/08/06 23:53 ID:I44XWNV5
>>288
できそうだなあ。
えーと。
クッキーを作る時にそれが有効になるドメインを指定できる。
指定しなければ、作成したドメインがそれになる。
ドメインを自分で指定した場合、>>288のようなことが可能になる。
292nobodyさん:03/08/06 23:56 ID:???
なるほど、他ドメインで読ませることを前提としたクッキーってわけね。
293nobodyさん:03/08/07 02:12 ID:???
書き込みはいいとして読み込みはどうする気だよ
294nobodyさん:03/08/07 07:41 ID:???
>>291(  ^,_ゝ^)プッ
295nobodyさん:03/08/07 07:45 ID:???
>>291
指定できるのはホスト名以下のパスの部分だけ。
296nobodyさん:03/08/07 20:10 ID:???
>>288
domain=.foo.co.jp;
でクッキーを発行すればwww.foo.co.jpとhoge.foo.co.jpで同じクッキーをやり取りできるはず。
domain属性が廃止されてなければ。

http://wp.netscape.com/newsref/std/cookie_spec.html

>>295
今はそうなったの?
297nobodyさん:03/08/07 21:18 ID:???
>domain=.foo.co.jp;
>でクッキーを発行すればwww.foo.co.jpとhoge.foo.co.jpで同じクッキーをやり取りできるはず

これで正解。いったいここは何の板なのかと思ってしまう・・・
298nobodyさん:03/08/08 11:27 ID:???
Windows2000-SP3なんですが、

cgiをコマンドラインからでもテストできるようにしようと思って、
変数をデコードする部分を、

    my($method) = $ENV{'REQUEST_METHOD'};
    if ($method eq 'GET') {
        $query = $ENV{'QUERY_STRING'};
    }
    elsif ($method eq 'POST') {
        read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
    }
    #★コマンドラインからのとき
    else{
        $query = $ARGV[0];
    }

にして、
foo.cgi key1=name=1&key2=name=2&key3=name=3&key4=name=4&key5=name=5
とコマンドラインからやってみたのですが、

'key2' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'key3' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'key4' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
'key5' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と言われてしまいます。どうすればいいのでしょうか?
299nobodyさん:03/08/08 13:13 ID:???
>>298
perl foo.cgi key1=name=1&key2=name=2&key3=name=3&key4=name=4&key5=name=5
は?
300nobodyさん:03/08/08 17:35 ID:???
あるcgiにアクセスすると、
「Location:http://www.aaa.com/hoge.cgi\n\n
として別のサーバにリダイレクトさせ、
そのcgiにアクセスすると、
「Location:http://www.bbb.com/fuga.cgi \n\n」
として別のサーバにリダイレクトさせ、
さらにそのcgiにアクセスさせると、
「Location:http://www.ccc.com/hage.cgi \n\n」
として・・・
というのように複数回リダイレクト(まぁ、多くても3回の予定ですが)することを考えているのですが、
これに関して、何回までという制限はあるのでしょうか?

また、このように複数回リダイレクトするときに、何かしら制限やら注意事項というのはありますか?
(もちろん、無限ループしないようにはします)
301nobodyさん:03/08/08 21:06 ID:???
>>300
とりあえず RFC2606 嫁。
302nobodyさん:03/08/09 00:32 ID:???
>>298
なんでCGI.pm使わないのかと小一(ry
303nobodyさん:03/08/09 02:11 ID:???
>>300
Locationヘッダを解釈するのはクライアント側だから、ブラウザ次第じゃない?

>>298
foo.cgi "key1=name=1&key2=name=2&key3=name=3&key4=name=4&key5=name=5"
304nobodyさん:03/08/09 09:59 ID:???
>>302
>>298じゃないがなんでCGI.pmなんとかいう糞ナ物を使わなきゃいけないのかと小(ry
305nobodyさん:03/08/09 11:32 ID:???
CGI.pm 使わないとプログラミングできないんだろ(ワンダフルゲラ
306nobodyさん:03/08/10 09:53 ID:???
>>304
素人っぽい質問している>>298さんに勧めているので、
自称スーパーハカーの>>304さんには勧めてませんよ。

せっかくですから、>>304-305さんは好きなだけ車輪の再発明に勤しんでください。
307nobodyさん:03/08/10 11:18 ID:???
>>306イチイチうるせーよ。半島にカエレ
308nobodyさん:03/08/10 11:50 ID:???
307の負け。
お前は帰んなくていいから、デテクンナ
309nobodyさん:03/08/10 12:29 ID:???
↑オマエモナ
310nobodyさん:03/08/10 14:17 ID:???
↑オマエモナ
311nobodyさん:03/08/10 21:18 ID:???
↑オマエモナ↓
312nobodyさん:03/08/11 00:31 ID:???
お、俺も!?
313nobodyさん:03/08/11 00:49 ID:???
(・∀・)ニヤニヤ
314nobodyさん:03/08/11 09:54 ID:???
→オレモナ
315nobodyさん:03/08/11 16:44 ID:1GxglH9k
とあるindex.cgi は、
&cookie_regist('foo','fooid!123456',5);#5日間有効な(fooという値の)クッキーをセット
&cookie_read('foo');          #fooという値のクッキーを読み取る
print "Content-type: text/html\n\n";
print qq|\$cookie{'fooid'} is $cookie{'fooid'}|;

で、クッキーを書きこんで読み込んで表示させる簡単なスクリプトなんですが、
(もちろん、cookie_regist と cookie_read 関数は別の所にあります)
IEで、クッキーを全削除して、そのページを表示させると、
1回目はクッキーが表示されず、
リロードすると2回目以降はクッキーが表示されます。

これって、クッキーの仕様なんでしょうか・・・。
(以前に発行されたクッキーは読めるが、
同じhttpアクセス内で発行されたクッキーは、
そのアクセス内では読み取れないという、ことなんでしょうか?)

316nobodyさん:03/08/11 16:53 ID:???
>>315
ヘッダが終了しないとクッキーがセットされないんじゃない?
つまり1行目でクッキーを送信してるけど、実際は3行目で\n\nとしてヘッダを
完結させてやるまでクッキーのセットが保留されているのかも。
クッキー読み込みを表示の直前にして再度試してみて。
317316:03/08/11 17:02 ID:???
書いてから気が付いたけど、クッキーの取得ってCGI実行時点での環境変数を
見てるだけだから、発行して同時に取得はできないのかもしれない。
発行した場合はクッキーを読まずに、その発行したデータをそのまま使うように
すればいいと思う。または$ENV{HTTP_COOKIE}を自分で書き換えちゃうとか。
318nobodyさん:03/08/11 17:34 ID:???
>>315
Cookieの読み出しはブラウザからのリクエスト時に送られてくる
Cookieヘッダ(HTTP_COOKIE)から行う。
Cookieの書き出しはサーバからのレスポンス時に送る
Set-Cookieヘッダで行う。

この仕組みを考えれば明白だろう。


Cookie仕様書
ttp://wp.netscape.com/newsref/std/cookie_spec.html

日本語訳
ttp://www.futomi.com/lecture/cookie/specification.html
319nobodyさん:03/08/11 19:33 ID:2ChtRC4J
こちらはそれほど大きくはないですけれど
柔らかくて揉み心地のよさそうなオッパイの持ち主です。
上のお口と下のお口をフルに使っての4Pシーンは見所満載!
オマンコの奥深くに突き立てられていくチンチンが気持ちよさそうです。
無料ムービーはここから
http://www.exciteroom.com/
320_:03/08/11 19:44 ID:???
321_:03/08/11 19:45 ID:???
322_:03/08/11 19:48 ID:???
323315:03/08/11 23:16 ID:???
>>316-318
なるほど、よく理解しました。
やっぱ、表面的な知識じゃ、こういうときぼろがでるね。

>>318
Cookie仕様書は英文で、なんとか読んでた(でも半分くらいしかわからず)んだけど、
日本語訳があったとはしらなんだ。ありがとうございます。
324nobodyさん:03/08/12 09:39 ID:???
すいません、
<a href="foo.cgi?hoge=fuga&hage=tara">リンク</a>
みたいにリンクするとき、
正しい書式は

<a href="foo.cgi?hoge=fuga&hage=tara">リンク</a>

じゃなかったでしたっけ?

ネスケ7.1(Win版)で試したら、前者は思い通りの動作して、
後者は思い通りの動作をしてくれなかったもので
(hoge=fugaをうけとってくれなかった)

なんか自分、他のことと勘違いしてます?

すくなくとも、html中の特殊文字を書くときと、
hiddenフィールド内に書くときは、&で正しいかったかと思いますが・・・
325nobodyさん:03/08/12 09:57 ID:???
&&&&&&&&&&&&&&&&  ←体育座りをしている人々
326nobodyさん:03/08/12 10:16 ID:???
>>324
&amp;が正しい。
(アンパサンドは便宜的にいわゆる全角)

でも、そもそも、自分でCGI組んでいるんだったら、
アンパサンドじゃなくてセミコロンを区切りにすればいいのに。
327nobodyさん:03/08/12 10:48 ID:???
セミコロン派ってどのくらいいるんだろうね。
MSのサイトはたまにセミコロンになってるのあるなぁ。
328nobodyさん:03/08/12 11:15 ID:???
最近、スラッシュがいいかなとか思ってたりする。
329nobodyさん:03/08/12 12:53 ID:???
じゃあオレは * を使うことにする
330nobodyさん:03/08/12 14:25 ID:???
>>328
一瞬PATH_INFOってことかと思ったが、

hoge.cgi?key1=value1/key2=value2/key3=value3

ってやると

QUERY_STRING: key1=value1/key2=value2/key3=value3
PATH_INFO: (null)

ってなるのか(Apache)。
しかし、ブラウザでフォームの送信すると & で繋がってくるわけだから
別の文字にするのはなんか嫌だな。
331nobodyさん:03/08/12 15:57 ID:???
最近はセミコロンが推奨されてますよ。
332nobodyさん:03/08/12 17:28 ID:???
>>331
誰(どこの団体)が推奨してるの?
333nobodyさん:03/08/12 17:50 ID:???
334nobodyさん:03/08/12 18:24 ID:???
>>333
W3Cかよ……知らなかったよ_| ̄|○

じゃあ、アンパサンドとセミコロン両対応にせにゃならんてことか。
335nobodyさん:03/08/12 18:59 ID:???
GETだけにしちゃえば、とりあえずアンパサンドは無視できるけど。
古い仕様はたぶんこの先もずっと引きずりつづけるから、面倒だね。
336nobodyさん:03/08/12 19:38 ID:???
>>335
現状の殆どのブラウザはフォームの内容を送ってくるときにアンパサンドで繋ぐよ。
GETもPOSTも同じ。multipartは別だけど。
337324:03/08/13 01:56 ID:???
2ちゃんって、&amp;(←便宜上アンパサンドは全角)て書いても、
も&で表示されちゃうのね。。。しらなかった。

ところで、実は、(>>324だと両者が同じためわからないと思うので再掲しますが)
ネスケ7.1(Win版)で、
<a href="foo.cgi?hoge=fuga&hage=tara">リンク</a>
が正常に動いて、
<a href="foo.cgi?hoge=fuga&amp;hage=tara">リンク</a>(←便宜上アンパサンドは全角)
で正常に変数をうけとってくれないのですよ。。。

よくある一般的な、
$query = $ENV{'QUERY_STRING'};
local(@query) = split(/&/, $query);
foreach (@query) (以下略)
{でやってるんですが・・・
ネスケのバグなのか、あるいは自分のスクリプトがどっかおかしいのか。。。
338324:03/08/13 01:57 ID:???
かんじんなこと言うの忘れてた。
レスくれたみなさん、ありがとうございます。
W3Cがセミコロン推奨してるとは、しらなんだ・・・
339331:03/08/13 02:04 ID:???
>>338
俺そんなに嘘っぽかったかなあ。>>332
340nobodyさん:03/08/13 02:14 ID:???
>>337
それはスクリプトじゃないのかい?
ネスケでもちゃんと動いてるよ
341nobodyさん:03/08/13 02:20 ID:???
>>337
340に同じ。
「正常に変数をうけとってくれない」って、
具体的にどうなるのよ。

>>339
被害妄想。
342nobodyさん:03/08/13 02:30 ID:???
>>337
HTMLの文字実体参照 &lt; とか &amp; とかと、
URLに変数を埋め込む時のやりかたとが、
ごちゃまぜになってないかい?
343nobodyさん:03/08/13 04:05 ID:???
テストテスト

&amp;
&lt;
&gt;
&nbsp;
&quot;
&spades;
&clubs;
&hearts;
&diams;
344332:03/08/13 11:18 ID:???
>>339
漏れが無知だった_| ̄|○

今試してみたけどCGI.pmはセミコロンも対応してるね。
345nobodyさん:03/08/13 11:34 ID:???
そそ。
だから実体参照を意識しなくちゃならないアンパサンドよりも
セミコロンを使った方が常に楽だと思う。

CGIモジュールを使わないにしても、
my @query = split(/[&;]/, $query);
んな風に書き換えるだけでいいから、移行も楽だし。
346324:03/08/13 13:41 ID:???
>>347
え、同じじゃないんですか?

たとえば、
<input type="hidden" name="hoge" value="1<>2<>3">
は間違いで、
<input type="hidden" name="hoge" value="1&lt;&gt;2&lt;&gt;3">
が正しいですよね?

だから、URLに変数を埋め込むときも、
foo.cgi?hoge=1&lt;&gt;2&lt;&gt;3
がただしいと思ったんですけど・・・
347nobodyさん:03/08/13 13:44 ID:???
え?俺?
348nobodyさん:03/08/13 13:52 ID:???
>>346
問題の切り分けをきっちりしないと、いつまで経っても進まんよ。
HTML上&amp;と書くのは正しいし、Navigator7.1で
他の人は問題ないって言っているよね。

最低限再現するソースを用意してみればいいんでない。
問題があると*思い込んでいる*箇所だけじゃなくて全部。
349nobodyさん:03/08/13 13:59 ID:???
>>346
 区切り文字をアンパサンドからセミコロンに
変えても状況は変わらないの?
350nobodyさん:03/08/13 14:38 ID:???
ちなみに
<input type="hidden" name="hoge" value="1<>2<>3"> も
<input type="hidden" name="hoge" value="1&lt;&gt;2&lt;&gt;3"> も
正当なHTML。間違いではない。
が、後者のように記述するよう推奨されている。
                  ~~~~~
双方とも、foo.cgi?hoge=1%3C%3E2%3C%3E3 として送信される。
< と > は、RFC2396 http://member.nifty.ne.jp/moha/rfc/rfc2396j.txt
が定める予約文字でも非予約文字でもないので
%xx 形式にエスケープされて送信される。

<a href="foo.cgi?hoge=1<>2<>3"> も
<a href="foo.cgi?1&lt;&gt;2&lt;&gt;3"> も
HTMLの属性値としては正当。
が、%xx 形式にエスケープされてないので、URLとしては不正。
351324:03/08/13 14:39 ID:???
えっと、言語はPerlなんですが、
うーん、Perlでhtmlをprintしている途中で、
-------------------------------------------------------------
my $HtmlSubsidy_exam_intro;
if (($FlagSoudan == 1) && ($in{'q' . $sw2_num} == 1)){
    foreach $key (sort keys %in){
        $HtmlSubsidy_exam_intro .= qq|$key=$in{$key}&|;
    }

    $HtmlSubsidy_exam_intro = qq|
        <script language="JavaScript">
        window.open('./?|.$HtmlSubsidy_exam_intro.qq|mode=intro','','toolbar=no, width=510, height=170');
        </script>
|;
-------------------------------------------------------------
ってなかんじです。(JavaScriptはここでしか用いてません)
これだとネスケ7.1で正常に動作して、
$HtmlSubsidy_exam_intro .= qq|$key=$in{$key}&|;
のところの&を&amp; にすると、値をちゃんとよんでくれないんですよね・・・。

ところで、本来だと&amp;でサーバに渡して、
local(@query) = split(/&/, $query);
で処理できるわけですが、&amp;から&への変換(?)は、
どこでどのタイミングで行われてるのでしょうか?
Apacheがクエリーストリングを受け取った瞬間?
352324:03/08/13 14:45 ID:???
あ、自分が >>351の後者で質問した内容、
1分差で、>>350さんが答えてくれましたね。
ありがとうございます。
RFC2396 さらっと見しましたが、とりあえず、理屈はわかりました。
これからじっくり読んでみます
353nobodyさん:03/08/13 14:57 ID:???
とりあえず解答は出たね。
Netscape7.1の問題じゃなくて、>>324=>>351
スクリプトがおかしい。

ところで、セミコロンに変えるのを試していれば、
すぐに解決してたような。
354324:03/08/13 15:59 ID:???
>>324=>>351です。

>>353さん
>とりあえず解答は出たね。

いや、&だと正常に動作して、
&amp;だと正常に動作しない(値をちゃんとよみとってくれない)んです。。。
つまり、本来と逆のように思われるのです。

もしスクリプトがおかしいとしたら、
どこがおかしいかご指摘していただけますでしょうか?
355nobodyさん:03/08/13 16:01 ID:???
KENTさんのpatio.cgiを使っているのですが、
「初心者」という文字列を含む名前をエラーではじきたいのですが、
どうすればいいでしょうか?

一応、「初心者」であればエラーを返すようにしています。
if ($i_nam eq "初心者") { &error("任意の名前でお願いします"); }
この場合だと「PC初心者」をはじくことができません。
正規表現を使わなければいけないというのはわかっているのですが、
if ($i_nam =~ /初心者/)
ではダメなんでしょうか?

よろしくお願いします。
356nobodyさん:03/08/13 16:08 ID:???
>>355
スレちがーいー♪ >>1 嫁〜よ〜ぉっ
357355:03/08/13 16:12 ID:???
ごめんなさいです。
http://pc2.2ch.net/test/read.cgi/php/1059043704/l50
へ逝きます。
358nobodyさん:03/08/13 16:33 ID:???
>>354
&amp; → & の変換はHTMLの話。JavaScriptとは関係ない。

HTML
  <a href="foo.cgi?hoge=1&amp;huga=2&amp;hage=3">
  リンククリック時に foo.cgi?hoge=1&huga=2&hage=3 として送出。

JavaScript
  location.href = "foo.cgi?hoge=1&amp;huga=2&amp;hage=3";
  実行時に foo.cgi?hoge=1&amp;huga=2&amp;hage=3 として送出。

locationと同様、window.open() の第1引数(URL値)に含まれる &amp; が
& に変換されないのはJavaScriptの仕様。
Netscape謹製のブラウザで正しく動作しないのは当たり前。

そして、既にこの時点で板違い。→ Web制作 http://pc2.2ch.net/hp/
359nobodyさん:03/08/13 18:47 ID:???
&amp; を&amp; って書いている香具師へ

&amp;amp;って書けばええよ。
360nobodyさん:03/08/13 18:55 ID:???
&amp;amp;は&amp;amp;amp;って書けばいいのか。
361nobodyさん:03/08/13 19:19 ID:???
>>356
ということは、
&amp;amp;amp;は&amp;amp;amp;amp; (ry
362nobodyさん:03/08/13 20:09 ID:kY5HHsty
テストサーバ、redhat7.3の
Apacheを1.3.27から2.0.47にアップグレードした所
あるPerl/CGIが極端に重くなってしまいました。
5分経っても表示されない、という感じなのです。

いろいろ見たところ、
#!/usr/local/bin/perl -w
と-wフラグをつけたモノだけが遅いので試しに外してみたら
サクっと表示しました。
Apache/1.3.27の頃はつけようがつけまいが問題なかったものです。
原因によってはスレ違いかもしれませんが、
原因が皆目見当が付きません。
どなたか心当たりのある方いらっしゃいませんか?
363nobodyさん:03/08/13 21:17 ID:???
>>362
もうなんかダメダメだ
364nobodyさん:03/08/13 21:46 ID:???
>>362
-w ってけっこう厳しく警告をだすためのフラグだっけ?
実行しているソースから警告がでまくっていて処理が遅いと
そんな感じだと思われ
365362:03/08/13 21:54 ID:???
>>364
ホンチャンサーバでは問題なく動いているのです。Apache/1.3.26 (Unix)
テストサーバもApache/1.3.27 (RedHat)の時は問題なく動いてました。

Apache/2.0.47にした途端の症状なのです。
-w付きでチェックしてもシンタックスおっけなんです。
-w外すと問題なく動きます。
366nobodyさん:03/08/13 23:16 ID:???
>>365
さあ?Perl が出力するログをトラップしてerror_logに出力するのに、
Apache2.0では時間がかかるようになったとしか漏れの頭では思いつかないけど。

普通にコマンドラインから # perl hoge.cgi としても実行結果が遅いのか?
それか -wって警告を多めに出すだけだからはずせば?
367364:03/08/13 23:18 ID:???
つーか、CGIと全然関係ないじゃん
すんません、この話にレスするのもうやめます
368324:03/08/14 01:32 ID:???
>>358
>locationと同様、window.open() の第1引数(URL値)に含まれる & が
>& に変換されないのはJavaScriptの仕様。
>Netscape謹製のブラウザで正しく動作しないのは当たり前。

なるほど、これですごい納得しますた。ありがとうございました。
369nobodyさん:03/08/14 01:49 ID:???
>>368
最初っから、JavaScript って言えよ。あほくさ。
370nobodyさん:03/08/14 01:53 ID:???
>>369
>>368は最初から例示が駄目すぎだったね。
こっちもいらん手間かけたよ…。
371nobodyさん:03/08/14 10:43 ID:???
(ちなみに、自分は>>324 ではないんですが・・)
<a href="affiliate.cgi?partner=http://www.abc.net/&location=http://www.foo.jp">りんく</a>
っていうのは、正しいですか?

>>350さんがあげてる
FC2396 http://member.nifty.ne.jp/moha/rfc/rfc2396j.txt
を読んだものの、いまいち意味が理解できず・・・
372nobodyさん:03/08/14 12:55 ID:???
クッキーの
Set-Cookie: $cookiename=$cookievalue; の$cookievalueの部分って、
文字長に制限はあるのでしょうか?
http://www.futomi.com/lecture/cookie/specification.html
にある仕様書を見る限り、なにも文字長については書いてないようですが。
373371:03/08/14 13:15 ID:???
すいません、自己レスですが、URLエンコードということの意味をわかってませんでした。
ただしくは、
<a href="affiliate.cgi?partner=http%3a%2f%2fwww.abc.net%2f&location=http%3a%2f%2fwww.foo.jp">りんく</a>
ですね、失礼しました。
374nobodyさん:03/08/14 20:13 ID:???
>>371

HTMLは

>>350から引用
>ちなみに
><input type="hidden" name="hoge" value="1<>2<>3"> も
><input type="hidden" name="hoge" value="1<>2<>3"> も
>正当なHTML。間違いではない。
>が、後者のように記述するよう推奨されている。
>                  ~~~~~
引用終わり

だと思われ。
375nobodyさん:03/08/14 20:54 ID:???
>>372
たしか1024文字まで。
ただし、「$cookiename=$cookievalue;」 ←これを全部含めて1024文字までだと思った。
つまり、= とか ; とか クッキーの名前 とかもその制限に入る。

たしか。
376nobodyさん:03/08/14 22:16 ID:???
>>372

ttp://www.futomi.com/lecture/cookie/specification.htmlから引用
>一つのクッキーにつき4KBまで。name と OPAQUE_STRING は、
>4KBまでの形式に結合されます。.
引用終わり

全部含めて4096バイトが容量制限。
キャラクタセットによって文字数は左右されるから、自分で調べてね。
377372:03/08/14 22:59 ID:???
>>376
あれ、すいません、見過ごしてたみたいです。
ありがとうございました。
378nobodyさん:03/08/14 23:53 ID:???
なんか、過去ログの>>288とにたような質問なんですが・・・

www.foo.co.jp で発行したクッキーを、
www.bar.co.jp で取得することはできますか?

>>292 で言ってるみたいに、
www.foo.co.jp でクッキーを発行するとき、
「domain=bar.co.jp」とすれば、
www.bar.co.jp で取得できるのかなーと。

なお、今はまだ環境がととのってないので、テストで試してみることができず・・・
379nobodyさん:03/08/15 00:03 ID:???
>>378
できない。ドメイン違うだろうが。
380378:03/08/15 01:46 ID:???
>>379
あ、そうか、仕様として、そもそも発行元のドメインと取得先のドメインが違うとダメってことですか?

つまり、仕様書のdomain の項目で書いてある「後方一致」ってのは、
あくまで同じドメインでの話しってことですか?

(例だした方がわかりやすいかな・・・)
acme.comにおいて、domain=acme.comとしてクッキーを発行すると、
anvil.acme.com ではそのクッキーを取得できるけど、
hoge-acme.comでは、そのクッキーは取得できない。

・・・という理解で間違いないですか?
381nobodyさん:03/08/15 03:18 ID:???
>>380
そういうこと
382378:03/08/15 18:51 ID:???
>>381
やっと理解した。どもです。頭わりーおれ
383山崎 渉:03/08/15 22:33 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
384nobodyさん:03/08/16 12:45 ID:KHB072f8
age
385nobodyさん:03/08/16 15:53 ID:jb3r1JoJ
Perlなんすけど、頻繁に呼び出されるCGIで、設定項目の変数だけで10KB以上使うとまずいですがね。
一般的な共有サーバで動かすことを前提にすると。
386nobodyさん:03/08/16 22:30 ID:grNQSJhA
写真集だよん☆☆☆☆☆☆
http://www.sexpixbox.com/pleasant/teen/index.html
387nobodyさん:03/08/17 21:30 ID:ycQ+dswy
アクセス解析のCGI作ったんですけど、
フレームを使っている性で全部リファラがindexになってしまいます。
使っている鯖はSSIは使えませんし、.htaccessも使えません。

どうすればリファラが取れるんですか?教えてください。御願いします。

すれ違いだったらすいません。
388nobodyさん:03/08/17 23:46 ID:78eH/B6l
javascript でリファラをとって、cgi ヘ渡せ
389nobodyさん:03/08/17 23:47 ID:78eH/B6l
>>385
気にしなくて良し。
390nobodyさん:03/08/17 23:57 ID:???
391nobodyさん:03/08/20 19:32 ID:M8LljIzL
最近、マルチバリューとかいう仕組みで<INPUT>タグのCHECKBOXなどで
<input type=checkbox name="SHUMI" value="PC">パソコン
<input type=checkbox name="SHUMI" value="SP">スポーツ
<input type=checkbox name="SHUMI" value="RD">読書
のようなことができるようですが、これはいつ頃から可能になったのでしょうか?
5年ほど前は
<input type=checkbox name="SHUMI_PC" value="1">パソコン
<input type=checkbox name="SHUMI_SP" value="1">スポーツ
<input type=checkbox name="SHUMI_RD" value="1">読書
のような形でがんばっていたような記憶があるのですが
気のせいでしょうか?

392_:03/08/20 20:02 ID:???
393nobodyさん:03/08/20 20:43 ID:???
>391
上手くやればできる。
今も5年前も10年前も。
394nobodyさん:03/08/20 20:49 ID:???
>>393
えぇ!うまくやればってどういうことですか?
昔も前者の書き方ができたのかどうか聞きたいのですが。
ロジックの問題ではなくHTTPプロトコルレベル、または
WebブラウザとWebサーバーの対応状況の話だと思うのですが・・・
395nobodyさん:03/08/20 20:53 ID:???
HTML2の時にはすでにできてたな
RFC1866あたりだよ
396nobodyさん:03/08/20 20:58 ID:???
>>395
ほうほう。では、IE4くらいだったら余裕っすかね。
397nobodyさん:03/08/20 23:22 ID:???
>>391

つか、今流通してるブラウザで、

<input type=checkbox name="SHUMI" value="PC">パソコン
<input type=checkbox name="SHUMI" value="SP">スポーツ
<input type=checkbox name="SHUMI" value="RD">読書

に対応してないブラウザってあるの?

平気な顔して使ってるんですが・・・
398nobodyさん:03/08/22 00:19 ID:???
今、携帯用のコンテンツを作ってるんだが、
まさか……大丈夫だよな。
399nobodyさん:03/08/22 00:46 ID:???
いや、オゾンホールの影響で電波が飛ばなくなるらしいからな。
もう駄目だろうな。
400nobodyさん:03/08/28 15:42 ID:ER3uJlrJ
www.hoge.com/foo.cgi
では、
●クッキーを発行したあと、
●Location:ヘッダで www.hoge.com/bar.cgi にとばす

の処理をしてます。

で、質問です。
www.hoge.com/bar.cgi の中の処理で、ついさっき発行されたクッキーを読もうとしたとき、
クッキーは読み込めるのでしょうか?

環境依存なのでしょうか?
401nobodyさん:03/08/28 17:18 ID:???
環境依存です。Cookieに対応していないブラウザでは読めません。
402400:03/08/28 18:26 ID:ER3uJlrJ
>>400
あ、ごめんなさい。
「クッキーに対応して、有効にしているブラウザ」の中でを条件に加えてください。
403400:03/08/28 18:27 ID:???
もとい、>>400じゃなく、>>401でした
404nobodyさん:03/08/28 22:09 ID:???
読み込めないの?
試したの?
405nobodyさん:03/08/29 01:22 ID:???
>>400
www.hoge.com/foo.cgi

The page cannot be found
The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.

--------------------------------------------------------------------------------

Please try the following:

If you typed the page address in the Address bar, make sure that it is spelled correctly.

Open the home page, and then look for links to the information you want.
Click the Back button to try another link.
HTTP 404 - File not found
Internet Information Services


--------------------------------------------------------------------------------

Technical Information (for support personnel)

More information:
Microsoft Support
406nobodyさん:03/08/30 08:37 ID:???
例を挙げるときは、example.comを使いましょう。
407nobodyさん:03/08/31 00:28 ID:???
今、CGIを通して、別の画像ファイルを読み込んでそれをブラウザに渡すと言うCGIを作っているんだが・・・

use CGI;
my $q = CGI->new;
my $file = '/hoge/hoge.jpg';
binmode(STDOUT);
$| = 1;
print $q->header(-type=>'image/jpeg');
open ( IN, $file );
binmode ( IN );
while ( <IN> ) {
print STDOUT;
}
close ( IN );
close ( STDOUT );

これで普通は動くよな?
408nobodyさん:03/08/31 00:30 ID:???
なんか、ずっと読み込み中になって終わんないんですよ。
409nobodyさん:03/08/31 01:56 ID:???
>my $file = '/hoge/hoge.jpg';
パスは間違いない?
my $file = './hoge/hoge.jpg'; なら表示されたけど
410nobodyさん:03/08/31 01:58 ID:???
>my $file = '/hoge/hoge.jpg';
こんな場所に画像ファイルを置いてるのか?
ビックリだ。
411407:03/08/31 02:02 ID:???
失礼しました。少し頭が冷えました。言語はPerlです。
こんなことも言い忘れるとはよほど慌てていたようです。

>>409
パスは絶対指定しています。なので、この形式でいいかと。

>>410
ああ、これはサンプルのパスです。正しいのをさらすと、ユーザー名とかがわかってしまうので。

えーと。なんでだめなんだろう。
412nobodyさん:03/08/31 02:30 ID:???
>>411
Content-Length を吐くといいかも知れない。
自信無し。
413nobodyさん:03/08/31 02:36 ID:???
意外とそういう「見せたくなくて伏せてる部分」にバグが潜んでいるかもしれない。
414nobodyさん:03/08/31 03:05 ID:???
例えば、俺の陰毛にはバグが含まれている。
415nobodyさん:03/08/31 03:07 ID:???
はっ。どうせリードパーミッションが無いんだろ。
openのエラー処理してねーし。
416407:03/08/31 21:59 ID:???
>>411
ビンゴでした。吐いたらうまく表示してくれました。
ありがとうございました。

>>413
今後は注意します。ありがとうございました。

>>415
ご助言ありがとうございます。エラートラップもつけました。

>>414
毛ジラミでしたら、早急に医者に行った方が・・・
417nobodyさん:03/09/01 10:36 ID:???
ちなみにオレは試して駄目だったから間にページ挟んでMETAタグで飛ばした
>cookie
418nobodyさん:03/09/02 00:31 ID:tJK7g1eG
Aサーバにあるcgiでcsv形式のデータを作成し、
Bサーバにそれをcsvのデータとして置きたいと思います。

これを実現するにはどうすればいいのでしょうか?
というか、ふつうどうするもんなんでしょうか?

●Aサーバにあるcgiから、(ソケット通信で)FTPかSSHでBにログインして、csvファイルをはき出す。
●Bサーバにもcgiを設け、そこで、AサーバからBサーバを(ソケット通信で)httpで呼び出して、
 Bサーバのcgiがcsvをはき出す

くらいしか思いつかないのですが・・・

あと、Aサーバがhttpsで、Bサーバがhttpの場合、このやりかただとデータは暗号化されますか?
419nobodyさん:03/09/02 00:38 ID:???
いいんじゃない、合理的でかつセキュリティ等、目的に沿っていれば
csvがそのうちxmlになる可能性も考えるとhttp経由がいいかもね

暗号化はあくまでもサーバがhttpsの場合だけ
(クライアントもhttps知っている必要はあるが)

だからBがAを呼び出す状況で無いと暗号化はされません
420nobodyさん:03/09/02 01:01 ID:hJ9owds6
保健室で休息中の少女に何が起こったか・・・
当然のようにHな事態に発展していくのですがいやーリアルリアル。
オマンコからダラダラ流れ出るマン汁、青筋の浮き出たチンチン。
現実ではあり得ないシチュエーションにリアルさがある秀作!
エロアニメがいっぱい。セーラー服美少女実写版も大好評。
今すぐ無料ムービーを!!
http://66.40.59.76/index.html
421nobodyさん:03/09/16 00:39 ID:???
>263
処理中に適当にタイムスタンプでも使ってファイル作って
ソレが存在してる間は処理中と判定させるとか。

で自信でも別スクリプトでも良いから適当にそのファイル名を送って
ソレを一定時間毎に読んで、消えたら完了のページ開くみたいな。

hoge.cgi
 処理開始→判定用一時ファイル作成→Locationで飛ばす→処理終了→ファイル消す→exit()

huga.cgi?filename
 クエリ読む→ファイルがあるかどうか調べる→あったらLocation略→なかったら終了した事を知らせてexit()
 hoge.cgiがタイムアウト等で一時ファイルを消せなかった時の為に有り得ない程時間掛かってたらさくっと消す

素人考えだけど駄目かなー。
422nobodyさん:03/09/16 16:37 ID:???
あるcgiを呼び出したとき、SSLプロトコルできてるか、そうでないかを判別するのに、
一番汎用的な方法ってなんでしょう?
(ちなみに言語はPerlですが、それは本質的なことではないですよね?)

SSL_PROTOCOL環境変数が空か否かで判断するのかな、と思ったのですが、
どうするのがベストでしょうか?
423nobodyさん:03/09/16 20:34 ID:???
>>422
$ENV{'HTTPS'} eq 'on'
424422:03/09/16 23:47 ID:???
>>423
あ、それ初めて見た(つか、見落としてた)さんくすです
425nobodyさん:03/09/17 20:33 ID:???
mod_perlを使ったサーバで、
同じ動作をするcgiが、全く同じ条件でpostメソッドでcgiにアクセスしても、
Internal Server Errorがでるときと正常動作するときがあります。

Internal Server Errorがでても、リロードすると、正常動作してしまうので、
不可思議なのですが・・・。

これは、どんな原因が考えられるのでしょうか?
426nobodyさん:03/09/18 04:23 ID:???
半角カナでフォームに入力されたものを、読み込んでEUCにして
(ちなみにスクリプト自体の文字コードはEUC)

それを、&jcode::convert(\$in{$key}, "jis");
みたくして、JISに変換して(正確にいうと、変換しようとして)、
それをメール本文(もちろんJIS)中に変数として入れたら、
文字化けする可能性ありますか?

もしあるとしたら、
&jcode::euc2jis(\$in{$key});
と明示的に文字コード変換したら、
文字化けがなおる可能性はありますか?

実は文字化けではまってるものの、
文字化けが再現できなくなってしまっていて・・・。
427nobodyさん:03/09/18 10:12 ID:???
>>425
そのCGIのどこかがマズイのでは?

>>426
メールで半角カナは使えません
428425:03/09/20 03:11 ID:???
>>427

でも、リロードしてら正常動作するもんで、手がかりがつかめません。

同じことをしてるのに、違う結果がでるなんで・・・と。わけわからん状態です。
どっから疑っていけばいいんでしょうか?
429nobodyさん:03/09/20 03:37 ID:???
>>428
タイムアウトや負荷ぎりぎりで動いてるとか
どっちにしてもソース見ないとわからんな
430425:03/09/21 16:58 ID:???
>>429
>タイムアウト
いや、タイムアウトの可能性はないかと。
すぐにInternal Server Errorになったので。。。

>負荷ぎりぎりで動いてるとか
でも、これが可能性高そうです。ちょっと調べてみます。
431nobodyさん:03/09/21 17:01 ID:???
>>430
ソースを公開するなり、そちらが情報を提供する気がないのならこれ以上質問するなよ。
こういう掲示板はGive&Takeによって成り立っているって理解している?

432430:03/09/21 21:55 ID:???
>>431
>ソースの公開は、仕事の都合上、できないので、すみません。
あと、いちお、名無しでですが、Giveはこのスレでも他のスレや板でも、してます。いちお。
433nobodyさん:03/09/21 23:31 ID:???
>>432
その現象が起きる20行程度のソースを晒せば?
それでも仕事の都合上無理ってんなら>>431の言う通り。会社の人に聞けば?
y=x+1が与えられてyの値はいくつでしょう?と聞かれても誰もわからんのでは?
434nobodyさん:03/09/22 19:59 ID:???
>>430
どうでもいいよ。何するにしてもPerlのエラーログを調べてから何か言えよ。
435nobodyさん:03/10/17 10:28 ID:M5vTMTcp
PerlでCGIを何本か書いているのですが、ある特定のプログラムで
ページが正常に表示されず、ファイルのDLを始めようとするようです。
同じサーバーの他のプログラムは正常に表示するようで、吐き出す
ヘッダも同じにしてるはずなんですが。
本来相手の環境を調べるべきなのですが、素人なので聞かれてる内容も
理解できないらしく、上手く情報が伝わって来ません。

なにか考えられる原因、思い当たる方いませんか?
436nobodyさん:03/10/17 11:08 ID:???
>>435
それだけの情報で何かわかる人がいるのか?
437nobodyさん:03/10/17 11:26 ID:5bzSqekM
サーバのスクリプティングフィルターが利いてないからじゃないですか?
後は、Webサービスのマッピングをチェックしてみるってのはどうでしょう?
さすがにそれぐらいしか答えようがないですね。
438nobodyさん:03/10/17 12:05 ID:???
>>436
>>437
まあ、そうですよね。
ただ同じサーバーの他のスクリプトでは問題ないようなのです。
もちろん当方からのアクセスではそのスクリプトも含めて全て正常に表示されます。
なんとも再現しないのでわからないのですが、
状況からすると、ある特定の環境で問題を起こすCGIの記述の可能性、
と予想したのですが。
439nobodyさん:03/10/17 12:08 ID:???
>>438
再現しないならまず再現する様にしてくれ
質問内容に書いて無いからわからんがgetで渡してたりするか?
440nobodyさん:03/10/17 13:00 ID:???
>>439
とりあえず最初の閲覧時はgetです。
formからパラメータつけて再帰的に処理する時はPOSTですが。
441nobodyさん:03/10/17 15:28 ID:???
wget等で、受信したヘッダごとみてみるのがいいかも
あと、アドレス欄の最後のパラメタを拡張子と誤解して
誤動作するブラウザがある
442nobodyさん:03/10/17 16:40 ID:???
CGIへのアクセスはクエリを含まない事で分岐して、
http://www.hoge.net/huga.cgi
のようにCGIを直接呼ぶ事で単純に表示するルーチンに飛ばしてます。

で、当人が言うにはブラウザから、
「このファイルは開けません。ファイル huga.cgi」とか、
「検索の結果、以下のソフトウェアが見つかりました。
このソフトウェアを利用するとファイルを開くこと
ができます。
ファイルの種類: Common Gateway Interface」
とか言われるらしいのです。

ただ、それもこの特定のCGIだけなんですよね。

wget試してみます。
443nobodyさん:03/10/17 16:50 ID:???
おお?wgetしてみたら当該CGIは、
Length: unspecified [text/plain]
なんてなってます。
他のCGIは、
Length: unspecified [text/html]
になってるんですが。。。
ヘッダは以下のようにtext/htmlで送出してるはずなんですが。
--
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
--
444nobodyさん:03/10/17 17:00 ID:???
おまいら誰よ?元質問のやつはレス番で名乗れや
445435:03/10/17 17:06 ID:???
すいませんです。
で、Content-type: text/html の送出をスクリプトのなるべく前の
方に持ってきたら
Length: unspecified [text/html]
と表示されました。
これで問題ないかアクセスしてみてもらいます。

しかし、これはどういうわけでしょうか?
後学のためどなたかお分かりの方お教え下さい。
446nobodyさん:03/10/17 17:27 ID:???
>>445
text/plainがスクリプト中のどこにも書かれてないか検索した?
447nobodyさん:03/10/17 17:32 ID:???
1行づつずらしていけば見つかるよ... きっと... _ト ̄|○
448435:03/10/17 17:35 ID:???
>>446
検索していませんでした。
検索しましたが、どこにもありませんでした。

実はこのスクリプト、個別の設定情報を書いた複数の違うhoge.cgiから、
共通ライブラリであるcommon.plをrequireする仕様で、
それぞれのhoge.cgiにはユニークな固有の設定情報のみ記述し、
スクリプトのほとんどはcommon.plにあります。
当初送出するヘッダはcommon.plに書いてあったのですが、
Content-type: text/html のみhoge.cgiに持ってきたら
wgetでhtmlが確認できました。

text/plainはhoge.cgiにもcommon.plにもどこにもありませんでした。
449nobodyさん:03/10/17 21:16 ID:???
微妙にスレ違いかもしんないけど、Sendmailで送るメールって第3者に見られる可能性ありありだよな。
大事な内容をCGIで送信するのにベストな方法ってありまつか?
450nobodyさん:03/10/17 21:34 ID:???
一応CGIの質問なのでここでしていいのかどうか…
何が何だかわからないのでご存知の方いたらご教授願います。

「○○サーチ」というある検索エンジンに自分のサイトを登録しようとしたら、
何度やっても「コマンドが不正です」と出る。
新規登録は動いているからサーチ自体には問題ないようだ。

てことは自分のパソコンに何か原因があるのでしょうか?


451nobodyさん:03/10/17 21:44 ID:???
>>450
君のサイトが拒否されてんだよ。あきらめろ。
452450:03/10/17 21:55 ID:???
>>451
グェッ!そ、そうなんか!?
昨日初めて行ったサーチなんですけど
何でだろう。
453450:03/10/17 21:59 ID:???
いや違う違う、
まだサイトは登録してないから拒否とかはないはず、
登録画面に入るボタンを押すと「コマンド〜」が出たんですよ。
なんなんだほんと。

454nobodyさん:03/10/17 23:48 ID:???
>>453
ドメインで拒否されたんだよ。jpドメイン以外はダメとか。
455nobodyさん:03/10/18 00:04 ID:???
>>453
だから検索エンジンってのがあるように、
登録しようとした君のサイトを自動的に見に行って
登録するにふさわしくないと拒否られたんだって
456nobodyさん:03/10/18 04:12 ID:???
ていうかさ…

使うだけの人間はここで質問するな。
457nobodyさん:03/10/18 04:15 ID:???
>>453
どうやらその検索サイトはHTMLの文法をチェックしているみたいですね。
HTML-lintで90点以上取らないとダメみたいです。
458450:03/10/18 21:13 ID:???
>>454-457
レスサンキュ。登録あきらめることにしたよ…_| ̄|○
さっきいったらサーチがダウソしていてめんどくなりますた

スレ違いすまんな。さらば!
459nobodyさん:03/10/18 23:12 ID:???
>>449
ベストっていったら、
(SSLは必ず使うとして・・・)
●メールは、もし流すなら、
 ウェブサーバ、送信メールサーバ、それを受信するメールサーバとも、
 セキュリティ的に安全なネットワーク内部で完結させること。

とかいいつつ、自分もよく分かってない。
・・・詳しい人フォローきぼんぬ、、、

460nobodyさん:03/10/19 00:13 ID:???
メールデータを何らかの媒体に記録して手渡しする。
461nobodyさん:03/10/19 00:31 ID:???
>>460
道中で襲われる
462nobodyさん:03/10/27 00:03 ID:???
念力
463nobodyさん:03/10/27 10:59 ID:???
メールなんてそんなに覗かれないよ
464nobodyさん:03/10/27 16:10 ID:???
うん、そんなにはね
465nobodyさん:03/10/27 20:46 ID:???
年賀状を覗かれる回数よりははるかに少ないだろうな。
466nobodyさん:03/10/29 12:37 ID:aayFZnQs
formをenctype="multipart/form-data"で送信した場合
windowsでは\r\nContent-Type:となっているけどmacだと\rContent-Type:ってなるんですか?
467nobodyさん:03/10/29 12:41 ID:???
そりゃmacだし・・・とか思ったんだが
仕様上は改行コードに依存せず
常に\r\nじゃないといけなかったかな?忘れた
468nobodyさん:03/10/29 12:52 ID:???
HTTPの仕様は機種に依存しないよ
469nobodyさん:03/10/30 17:06 ID:???
すいません、しつもそです。
CGIで、設置ユーザのドキュメントルートを絶対パスで取得することってできますか?

例えば、test というユーザが、
http://server/~test/cgi-bin/test.cgi
という名前でCGIをアップしたときに、test.cgi で
http://server/~test/
と同じ場所の絶対パス(ex: /home/test/public_html )を取得したいのです。

設置ユーザがサイトの管理者であれば、
$ENV{'DOCUMENT_ROOT'} で、
/var/www/html なんかが取れるんですが、
ユーザ毎にサイトを作れる設定にした場合、
$ENV{'DOCUMENT_ROOT'} では取れませんよね…
470nobodyさん:03/10/30 19:58 ID:???
if($ENV{'SCRIPT_NAME'} =~ m|^(/~[^/]+/)|){
  $path = 'http://' . $ENV{'HTTP_HOST'} . $1;
}else{
  $path = 'http://' . $ENV{'HTTP_HOST'} . '/';
}

こんなところかな?
スマートではないけど。


tu-ka,Perlの話はPerlスレ逝け。
471nobodyさん:03/10/30 20:47 ID:???
>>470

スマン。
取得したいのは絶対パスの方っす。
/home/test/public_html ね。

説明がわかりにくかったかも
一応 %ENV 絡むんで CGIスレで妥当かと思いマスタ
472nobodyさん:03/10/31 01:12 ID:???
                             . - _
              _,..,_         ノ´//⌒ ミヾヽ、_
    _____  ,r'´   ``'' - 、ーニ三彡´〃   ! ゙ゞヾ、_`ヽ
  [|<|____├{             /´  {  l  | // ヽ`ーr' }
    ″       !    `、     '   ノ  l. ||l     i l / l   ああっ、つ、つらいです...
              ',      | ̄``''''ー―- ,'´l  l |!` ‐--| l l l
              ',    |             l  l  |    リ,! l
              ',   |          | | ,!    ' リ
  ,.r''ヽ、        _ ',   |          |. |
 ,'    ` ' ' ' ' ' ' ´  `ヽ   !            | |
/ ,.r'´ ̄ '''''' ─−-........__ ,.r'             | '''"''‐-、
~´                            ̄ ̄ ̄
473nobodyさん:03/10/31 03:44 ID:???
>>472
そういう検査をされたことがある
474nobodyさん:03/10/31 06:04 ID:???
>471
そんなのとって何するんだ?
475nobodyさん:03/10/31 11:40 ID:???
>>474

目的としては、
http://server/~user/cgi-bin/query.cgi?file=/index.html
のようなクエリーで、
/home/user/public_html/index.html
のファイルを取得したいって感じかな?

単純にperlに /index.html を渡すと、
本当にルートからの /index.html になってしまうので、
それをどうにかしようと /home/user/public_html を調べて
/home/user/public_html/index.html としたいってことでつ…
476nobodyさん:03/10/31 13:30 ID:???
>>475
こんなのでできないか?

$path = $ENV{'SCRIPT_FILENAME'};
$path =~ s/$ENV{'SCRIPT_NAME'}//;

あとは$pathにクエリーストリングのファイル名をくっつけてやれば
477nobodyさん:03/10/31 21:18 ID:???
>>469
環境変数 DOCUMENT_ROOT
478nobodyさん:03/10/31 23:37 ID:NZRYtOAF
hbgfb
479nobodyさん:03/11/01 00:07 ID:???
>>472
直腸検査?

>>469
>>477に同意。
バーチャルドメインでもDOCUMENT_ROOTで取れると思うよ。
480nobodyさん:03/11/01 02:11 ID:???
バーチャルドメインなら取れるけどユーザディレクトリは取れないのでは?
481nobodyさん:03/11/01 03:03 ID:???
>>480
あぁ、欲しいのはユーザディレクトリなのね。
「ドキュメントルートを絶対パスで」しか見てなかったよ。

なら、プログラム内や設定ファイルで陽に指定するしか
確実な方法は無いだろうね。 cgi-bin ディレクトリと
ユーザのドキュメントルートの位置関係は設定次第で
いくらでも変わるからね。

cgi-bin ディレクトリがユーザのドキュメントルートの下に
存在するなら >>476 でOK。
482475:03/11/01 10:32 ID:???
>>481

そうっす。ユーザディレクトリ。
やっぱりCGIスクリプト内に直書きするしかないかな…

一応配布CGIとして考えてるんだけど、
CGIをDLするユーザって、
その鯖内の自分のユーザディレクトリパスなんて知らんしね。
下手すりゃ file=/etc/passwd とかってやられそうだ(ガクガクブルブル
(↑これを /home/user/public_html/etc/passwd にできればええんやけど)

483nobodyさん:03/11/01 15:28 ID:???
マウントポイントを知らないと>>482のようなこと言うヤシが・・
484nobodyさん:03/11/01 18:41 ID:???
Macからのフォーム送信だと、半角スペースが%20ではなく%A0になる事があるのですが、
それに関して詳しく書いてあるサイトなどはありませんでしょうか?
googleなどで探してみたのですが、検索ワードが悪いのかいいサイトが見つかりませんでした。
対策なども含めてかかれているサイトがありましたら、どなたかお教えください。
485nobodyさん:03/11/01 19:33 ID:???
>>484
ISO-8859-1 なら %A0 は no-break space (&nbsp;) なので
どっちゃでもいい気もするが。

情報を小出しにせず再現できる条件を全部書いてくれんか。
486nobodyさん:03/11/02 00:02 ID:???
>485
レスありがとうございます。
再現条件は自分ではよくわからないのです。
自分の投稿では普通に%20になっているようで、誰がどの状況になった時に
%A0になるかがはっきりとわからないので。
条件絞りきる力がなく申し訳ありません。

%A0についてですが、どっちゃでもいいとおっしゃられますが、我が家のマシンで
%A0の文字をブラウザで見ると半角の「・」みたいに表示されます。
気にしなければ気にならないのかもしれませんが、できれば解決したいと思っていまして。
Perlの正規表現で置き換えようともしたのですが、%A0は「あ」の2バイト目であったりと
なかなか上手くいきません。
それで資料を探していたのです。
487nobodyさん:03/11/02 02:10 ID:???
>>486
だからぁ、小出しにしないでって言ってるでしょ。(w

「あ」の 2 byte 目が %A0 なのは Shift_JIS 。
Shift_JIS では 1 byte 文字としての A0 は未定義だから
(特定の環境では) 半角の「・」みたいに表示される。

言語は Perl らしいし置換で事が済むのならこの辺。
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
488nobodyさん:03/11/02 12:11 ID:???
>488
・環境
Web上のPerlCGIにてデータを取得している。
送信者はどのような環境かわからない。(条件の限定ができない)
フォームから送信された取得はPerlで行なっているが、その後
取得データをCプログラムで処理することもある。
また、今後Perlで送信データの取得を続けるとは限らない。
スクリプトの文字コードはS-Jisで行ない、結果作成もS-Jisで行なっており、
CプログラミングはVCで行なっている(S-Jis以外使えない)ので、文字コードの変更は困難。
送信フォームもMETAタグにてS-Jis指定を行なっている。
データ取得で使うサーバーはRedHat、Cプログラムを走らせるのはWindows。
S-Jisの状態で%A0を%20に置き換えようとすると「あ」などの文字が化けてしまう。

・目的
%A0が送信されない環境が作れればベスト。
もしくは%A0を%20に上手く置き換える手法を知りたい。
正解のみをここで聞くのではなく、できれば自分できちんと理解し、応用できるようにしたい。


思いつくだけの情報を羅列してみました。
他に足りない情報があればご指摘ください。
紹介されたページはこれからじっくりと読んでみようと思います。
ありがとうございます。
489nobodyさん:03/11/02 12:29 ID:???
>>488
お前自分で何言ってるか分かってる???
Shift-JISなら「あ」=「%82%A0」だから
>%A0を%20に置き換えようとすると「あ」などの文字が化けてしまう。
当たり前
490nobodyさん:03/11/02 12:31 ID:???
>489
それはわかっています。
だからこそ、「上手く置き換える手法」を知りたいのです。
491nobodyさん:03/11/02 12:33 ID:???
つまり、S-Jisで文字化けを起こさないように、%A0で送られてきた半角スペースを
S-Jisの半角スペースである%20に置き換えたいと。
492nobodyさん:03/11/02 12:48 ID:???
>>490,>>491
ってことは
>Macからのフォーム送信だと、半角スペースが%20ではなく%A0になる事があるのですが、
これは本当のことなのか?
てっきりShift-JISの文字列見て%A0を空白と勘違いしただけなんだと思ってた。
先頭から1文字ずつ見ていくしかないだろう。

別の文字コードでどうなるか試してみたら?
493nobodyさん:03/11/02 13:13 ID:???
あれだな。
<FORM accept-charset="Shift_JIS">
を試してみるとか。macのブラウザが対応してるのかどうかは知らん。

あるいは
<FORM enctype="multipart/form-data">
で常にバイナリ送信させるとか。
494nobodyさん:03/11/02 14:21 ID:???
レスありがとうございます。

>492
アクセスログを見たところ、%A0になってしまっていたのはいずれもUAがMac_PowerPCの方でした。
確認できた件数が6件と少ない為に断言はできませんが、Macからの送信で化ける可能性が高いと判断したのですがいかがでしょう?
自分ではMacマシンを所有していないので、正確な調査が行なえず申し訳ありません。

試行錯誤の末、>487のリンク先や、Perlメモの記述を参考に、1文字ずつ見ていくような処理が行なえるようになりました。
これでしばらく様子を見ようかと思います。
別の文字コードで試すというのは、「別文字コードでの送信」という意味でしょうか?
後程、やり方を調べた上で試してみたいと思います。

>493
accept-charasetは知りませんでした。
早速試してみたいと思います。
495nobodyさん:03/11/02 14:22 ID:???
余談になるかもしれませんが、accept-charasetを調べている時に下記ページを見つけました。
ttp://www.att.or.jp/perl/cgi-tech-tips.html
ここに掲載されていた、CGI出力ヘッダでの文字コード指定と.htaccessによるADDType指定も
同時に行なった事を報告させていただきます。
496nobodyさん:03/11/02 14:23 ID:???
>>494
再現性がないと難しいね。
まあ何か分かったらここへまとめてくれ。
497nobodyさん:03/11/02 14:53 ID:???
accept-charaset じゃなくて accept-charset ね。念のため。

自分がこの属性に着目したのは、Operaから文字を投稿するとき
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
と指定していても、送信フォームの内容をShift_JISと判別してくれなかったから。

全部Shift_JISの半角カナで投稿すると、OperaはそれをEUC-JP全角と自動判別して
それをShift_JISに変換してから送信するので、CGI側で受け取った段階で既に文字が化ける。

最初はjcode.plの問題かと思ったけど、jcode.plを外しても同じだったのでほぼ間違いない。
498nobodyさん:03/11/02 15:33 ID:???
長井秀和?
499nobodyさん:03/11/02 16:57 ID:???
Operaでは&nbsp;が化けるらしい
500nobodyさん:03/11/02 22:32 ID:???
>496
自分で確認できないのは厳しいですね。
後から気付いた事とわかった事を少しだけ載せます。

文字化けした6件ともMacのMSIEだった。(MSIE5.16〜5.22)
一部の人の証言ではS-Jisのページで出ていた文字をコピペしたとの事。(全員がそうであるかは不明)

>497
ご指摘ありがとうございます。
危うく間違えるところでした。
501nobodyさん:03/11/04 01:41 ID:ZhxpP0UW
PerlのCGI::Carpモジュールってどのような時に必要になるのか
教えてはもらえませんか?
502nobodyさん:03/11/04 08:06 ID:???
>>501
ぐぐればでる
503501:03/11/04 13:37 ID:???
ちょっと自分で調べてみました。
CGI::Carp素晴らしいですね。

use CGI::Carp qw(fatalsToBrowser);

とやるだけでdieや文法エラーに対してブラウザに
エラー内容を表示してくれなんて。
CGIの開発がかなり楽になりますね。
しかも標準モジュールなので別途インストールの必要は
ないみたい。今まで知らなかったよ。

本来の機能はHTTPDのログにエラー内容を書き込んでくれる
ということでよろしいですか?
504nobodyさん:03/11/04 13:45 ID:???
本来の機能は佐々岡を先発で使うことだ。
505nobodyさん:03/11/04 21:05 ID:Ljvqwop4
Apache 1.3系で

Redirect ^/hoge/abc([0-9]{4})\.html$ http://example.com/index.cgi?a=1&b=$1

で動作させると、

?が%3f &が%26になり、&のところで、ループしているようなURLを吐き出します。

ここで、解決できたのでしょうか?
506nobodyさん:03/11/04 21:33 ID:???
>>505
Apache 限定の話題は Apache スレへ。
http://pc2.2ch.net/test/read.cgi/php/1043851302/

Redirect (mod_alias) じゃなく Rewrite (mod_rewrite) 使えば可能。
507nobodyさん:03/11/04 21:56 ID:xEdoNAPc
普通の掲示板のようなCGIを2chみたいにHTMLで表示したりログ保存したりすることってできるの?
508nobodyさん:03/11/04 22:14 ID:???
そういうふうに作ればできるだろう。
ていうか、そもそも「普通の掲示板」って何だ。2ch型は普通じゃないのか。
509nobodyさん:03/11/04 22:27 ID:???
ヤフーみたいなのが「普通」なのか
それとも駅構内の掲示板が「普通」なのか
510nobodyさん:03/11/05 07:59 ID:???
駅構内の掲示板に1票
511nobodyさん:03/11/05 08:29 ID:???
JR新宿駅東口の掲示板ってあるの?
512nobodyさん:03/11/13 01:19 ID:???
みなさん、CGI(Perl)でのセッション管理はどのようにやってます?
クッキーにログインパスワードを暗号化したものを食わせて、
画面が遷移するたびにその暗号化パスワードと本当のパスワードを認証させるとか。

Apacheのセッション管理モジュールとかは虫で、
Perlだけでできるようなの他にあったらきぼんぬ
513nobodyさん:03/11/13 08:34 ID:???
>>512
例え暗号化していても、クッキーにパスワードを持たせるべきではない。
ログインしたときにセッションIDを持たせて、それで認証するのがセオリー。

セオリーだから細かい部分は調べれば資料はすぐに見つかるはず。
514512:03/11/13 13:22 ID:???
>>513
セッションIDを発行して、それをクッキーに持たせてSSL通信にすれば
今のところPerl-CGIでできる最善の方法かもしれないすね。

セッションIDは、普通、発行時刻とプロセス番号をくっつけてcryptするのが主流なんでしょうか?
まあユニークで、盗聴に耐えうるものであればなんでもいいような気がしますが。
で、セッションはサーバー上に生成するファイルで管理すると。。

本当にこれでセキュリティ上安全なのか不安になったのでみんなに聞いてみたまででつ。。
他にこういうことしてるとかあったら教えてくさい
515nobodyさん:03/11/14 10:39 ID:???
セッションの管理って、
セッションIDにtimeとプロセスIDでユニークにしつつセッション開始時刻をとって、
セッション開始時に発行したセッションIDのファイル名のファイルを作って、
次にセッションIDでアクセスしたときに、毎回セッションファイルリストをチェックして、
存在すれば、そのセッションの開始時刻を見て、制限時間を切れてたら削除。
問題なければセッション継続。

でよろしいか?
てかこれしか思い浮かばん。
516nobodyさん:03/11/14 11:12 ID:???
やってみれ。
517nobodyさん:03/11/14 14:55 ID:???
漢ならやってみれ(何を?)
518nobodyさん:03/11/17 14:42 ID:WakYOncE
入力画面で入力したパラメータをPOSTでcgiに渡してそのcgiから
さらに次のcgiに同じパラメータを渡す事ってできる?
519nobodyさん:03/11/17 15:20 ID:???
もちろんできます
520518:03/11/18 11:25 ID:2RvczggN
やり方を教えてください。
環境はVinelinux2.2+CGI.PM+Perl4です
521nobodyさん:03/11/18 11:39 ID:???
>>520
Perl....4!!??
522nobodyさん:03/11/18 11:51 ID:???
とりあえず自分でできるところまでやってみようよ。
523nobodyさん:03/11/18 14:44 ID:???
漢ならやってみれ(何を?)
524518:03/11/18 19:41 ID:???
GETで受け取るまではわかったのですが
POSTで渡す方法はありますか?
525nobodyさん:03/11/18 19:46 ID:???
POSTでもらうときと同じ事をやればよい
ヘッダのみじゃ不可能なのはわかるよな?
526518:03/11/18 20:23 ID:???

二つ目のcgiへの渡し方がわかりません。
GETなら引数に書いてやればいいのですが
527nobodyさん:03/11/18 20:29 ID:???
>526
検索とかしてみた?
検索したならどういう単語で検索した?
528518:03/11/18 20:33 ID:???
>>527
cgi.pm GET
529518:03/11/18 20:48 ID:???
http://tohoho.wakusei.ne.jp/lng/200003/00030338.htm
を発見しました。
できればはじめのcgiで作ったフォームから次のcgiに渡したいのですが・・・
Javascriptとかを使わないと無理ですか?
530http://mokorikomo.2ch.net/:03/11/18 23:19 ID:???
ura2ch
531nobodyさん:03/11/19 11:00 ID:???
ある画像を、アカウント認証した人だけに見せるページを考えてます。
その場合、認証成功した人が、HTMLのソースを見ると普通に画像のパスがわかってしまい、
アカウントを持っていない人でも、そのURLを教えてもらえれば見れてしまうのですが、
何かいい考えはありますでしょうか?
532nobodyさん:03/11/19 11:43 ID:???
533531:03/11/19 11:56 ID:???
>>532
ありがとうございます。
すいません、情報不足でした。
BASIC認証は使わずに、CGIで認証をした人にだけ見せたいです。

遷移としては、
インデックス⇒ログイン⇒画像ページ⇒HTML内で画像表示
BASIC認証でやる場合、ログイン部分に置けば万事解決ですが、
ログインCGIを使用しているため、
ログインアカウントと、画像を表示するアカウントの二つが存在するのは
あまり望ましくないですね。
534nobodyさん :03/11/19 14:04 ID:???
負荷がかかってもいいんであれば、
cgiに画像を読み込ませてそれを出力すればいいんでないの?
535nobodyさん:03/11/19 17:10 ID:7+Nu5MKS
フリーでメルマガ一斉配信みたいなスクリプトありませんかね〜
探しているのですが有料ばかり(^^;)
536nobodyさん:03/11/19 17:32 ID:???
>>535
【CGI】こんなCGI探してますver.1.1【素材】
http://pc2.2ch.net/test/read.cgi/hp/1067286961/
537nobodyさん:03/11/19 17:33 ID:???
>>533
漏れの案
認証した人だけに見せるページはCGIが吐き出す。
画像のパーミを400とか600にして、直に見ようとしたら403エラーが出るように汁。
これでどうだ。
538nobodyさん:03/11/19 18:16 ID:???
>>537
CGI プログラム経由で吐くなら、画像ファイルをドキュメントルート
以下に置く必要は全く無い。つか >>534 と結婚。

>>533
ログイン CGI とやらが何をする為のものか分からん上に、サーバ
環境も許されている権限も分からん。BASIC認証が使えん理由も
分からん (ログイン処理を変えられるなら、アカウントを .htpasswd
で一括管理すれば済む話) 。

あと本質的に、アカ持ってる奴が画像キャプチャしてバラ撒いたら
終わりなので、こういう部分に力を入れても労多く益少ない上に
正規ユーザが不便なだけ。
539nobodyさん:03/11/20 00:05 ID:nKwXTSg6
[質問事項]
perlのデバッガを使用したいのですが、以下のメッセージが出力されており実行できません。対応方法を教えてください。

Can't locate perl5db.pl in @INC (@INC  contains: /opt/perl5/lib/5.00502/PA-RISC1.
1 /opt/perl5/lib/5.00502 /opt/perl5/lib/site_perl/5.005/PA-RISC1.1 /opt/perl5/li
b/site_perl/5.005 .).
BEGIN failed--compilation aborted.

[環境]
OS:HP-UX11.0
perlのバージョン:version 5.005_02 built for PA-RISC1.1

[補足事項]
@本環境ではperl4と5が共存しております。それぞれのパスは以下のとおり
/usr/contrib/bin/perl    ・・・ver4
/usr/contrib/Q4/bin/perl   ・・・ver5.00502

以上、よろしくお願いします。
540nobodyさん:03/11/20 00:18 ID:???
>>539
そのパスの中にはperl5db.plが見つからないって出てるでしょ
541nobodyさん:03/11/20 05:40 ID:EAgQK2Up
542nobodyさん:03/11/23 12:07 ID:???
CGIを動かす場合、
改行コードは、UNIX系OSならLF、WindowsならCR+LFに変換してUPする必要があるけど
文字コードは、EUCだろうがSJISだろうが、
ブラウザへの出力、フォームからのクエリーストリングなどが、
スクリプトの文字コードと一致するように注意していれば全然問題ないかと思うんだけど、
この考えって問題ある?
543nobodyさん:03/11/23 12:28 ID:???
実は改行コードもあまり関係が無い
544542:03/11/23 12:46 ID:???
>>543
UNIX系OSで、CRLFのCGIを実行するとエラーおきない?
545nobodyさん:03/11/23 12:53 ID:???
それは、1行目のコマンド指定のけつに\r単独でくっつくから
#!/usr/bin/perl\r <-こんな感じ。perl\rってコマンド作ってやるか、
#!/usr/bin/perl --\r みたいに、 オプションをつけることでCRLFでも動作する

つまり、改行コードはCGI動作の本質的な問題ではない
546542:03/11/23 13:02 ID:???
なるほど。

となると、
#! /usr/bin/perl --
ってやっとけば、別にShift_JIS+CRLFでも無問題か。。
配布CGI作るときに、メモ帳でもいじれるようにできそうだね。
547_:03/11/25 05:32 ID:???
1つお聞きしたい事があります。
状況が分かりやすいようにサンプルソースを書いてみました。

<form name="f" method="POST" action="xx.cgi">
<input type="text" name="t1">
<input type="button" name="b1" value="【push】" onClick="f1()">
</form>

<script language="javascript">
function f1(){
document.f.t1.value = "1";
document.f.submit();
}
</script>


上記のコードは【push】ボタンを押した際、t1フィールドの値に"1"がセット
されて、xx.cgiにPOSTされるものです。

Win環境ではしっかりt1の値に"1"がセットされたものが渡るのですが、
Mac環境だとなぜかt1の値がnullになってしまいます。
手動で入力した時は問題なく渡るようなのですが・・・

ちなみにMACの動作環境はOSX、IE6です。

これはMACの仕様なのでしょうか?
期待通りにデータを渡す方法がありませんでしょうか?

もしどなたかご存知の方がいましたらご教授ください。
よろしくお願いします。
548nobodyさん:03/11/25 05:52 ID:???
>>547
それCGIの問題なの?
549nobodyさん:03/11/25 06:59 ID:???
550ぱくちゃん:03/11/25 17:12 ID:UdoS9gNt
WindowsXPでPerlのプログラミングをしています。
ビープ音を鳴らしたいんですけど、どなたか方法を知りませんでしょうか?
551ぱくちゃん:03/11/25 17:14 ID:UdoS9gNt
WindowsXPでPerlによるビープ音の鳴らす方法について知りませんでしょうか?
552nobodyさん:03/11/25 17:21 ID:???
553nobodyさん:03/11/25 19:21 ID:UeVyDd4a
554あらスィー:03/11/25 20:15 ID:???
Common Gateway Interface
555nobodyさん:03/11/26 11:04 ID:???
>>542
Windowsでcgiファイル作ってUnix(Linux)サーバにアップするとき、
FTPソフトによっては、勝手にCRLF->LFに変換してくれる場合があるよ。
556ぱくちゃん:03/11/26 15:50 ID:+ZoCfoLg
お世話になってます。ブラウザ上でprint "\a"を用いたCGIにアクセスさせビープ音
を鳴らそうと思ったのですが、うまく行きません。どうしたらよろしいでしょうか?
557nobodyさん:03/11/26 16:13 ID:???
>>556
ご安心ください。
ちゃんとサーバの方でビープ音が鳴っています。
558ぱくちゃん:03/11/26 16:37 ID:+ZoCfoLg
1台のPC上でサーバーソフトAnHTTPDを用いて、ローカルでCGIにアクセスしているのですが、
「・」が表示され、音はならない状況ですが…
559ぱくちゃん:03/11/26 16:41 ID:+ZoCfoLg
1台のPCでAnHttpdサーバーソフトを用いて、ローカルでCGIにアクセスして
います。「・」が表示され、音はならないようですが...
560nobodyさん:03/11/26 22:02 ID:???
ブラウザが鳴らしてないだけなんじゃない?
ほら、たとえばCRLFを表示しても改行しないでしょ。それと同じで。
561nobodyさん:03/11/26 22:49 ID:???
飾りじゃないのよHTMLは。
562nobodyさん:03/11/27 00:33 ID:???
ハッハァ〜♪
563nobodyさん:03/11/27 09:12 ID:???
uhoxtu
564nobodyさん:03/11/27 10:34 ID:???
コマンドプロンプトでperl -e "print \"\a\""
としても鳴らないね(win xp pro)
perl -e "print \"\n\""
だと改行されんだけど。
565nobodyさん:03/11/27 10:52 ID:???
>>564
ウチでは鳴るけどね
566nobodyさん:03/11/27 12:21 ID:???
win2kでは鳴りますた
コマンドプロンプトでだけど
567ぱくちゃん:03/11/27 14:01 ID:qZERqfQc
Win95でもやってみましたが、だめでした。コマンドプロンプトでは、
XP、95どちらでもできました。あと、ビープ音をならすプログラムをC
で作成し、これをexecコマンドでCGIから呼び出しましたけれど、
音は出ませんでした。
ブラウザはIEVer5とOperaでやってみました。ブラウザが鳴らしていな
いのでしょうか?なにか設定があるのでしょうか?
568nobodyさん:03/11/27 14:08 ID:???
おまえもうちょっとよく考えろよ
全部本人か知らないが、マルチで書きまくってたから
教えてはやれないがな
569nobodyさん:03/12/02 17:48 ID:???
cgiのページ内でアンカーリンクってできないよね?
イメージとしては、
<a href="hoge.cgi#here">アンカー</a>
みたいな。
570nobodyさん:03/12/02 18:22 ID:???
>>569
<a href="hoge.cgi?huga=here">アンカー</a>
クエリで吐き出す内容を変えればいいだろ
571nobodyさん:03/12/02 18:24 ID:???
>>569
普通にできる。
572569:03/12/03 11:17 ID:???
>>570
それだとJavascript必要になりそうだな…

>>571
ほんとだ、普通にいくね…
すまんかった。
573nobodyさん:04/01/11 13:15 ID:upkQsXWI
原因不明のバグで困っています・・・(つд`)
すみません、どなたかわかる方いますでしょうか?

CGI.pm を使ったフォーム送信(ファイルアップロード付き)→DB登録
の処理をするCGIを、SSLをかけたサーバで動作させてます。

フォーム送信する要素数(inputタグ)が少ないうちは問題なく登録できますが、
要素数が多くなる(20個くらい)につれて、以下の2つの症状が出る確立が増えます。
(確立があがるだけなので、要素数が多くても問題なく登録できる場合もあります)

(1) フォーム送信後、読み込み中のまま応答しなくなる。
 →数分後、IEデフォルトの「ページを表示できません」が表示される(IEで見た場合)
 (print STDERR でデバッグしたところ、決まって my $query = new CGI; の部分で止まる)
 ※読み込み中に、ブラウザの中止ボタンを押すと、my $query = new CGI; から先に進みます。
(2) フォーム送信後、CGIの処理に行く前に、「ページを表示できません」が表示される。

再現できるバグならまだいいのですが、上手くいくときといかないときがあるのが辛いです。
CGI.pmのバグかと思い、最新の3.01にバージョンアップしましたが変わりませんでした。
ちなみに実行環境は以下の通りです。

OS: Kondara Linux 2.4.18
WWW: Apache/1.3.29 mod_ssl/2.8.16 OpenSSL/0.9.7c
Perl: ver 5.6.1
CGI.pm: ver 3.01
574nobodyさん:04/01/11 14:24 ID:Ua0H5zjq
一般的にCGIの拡張子って.cgiだと思うけれど
mod_perlで動かすCGIの拡張子って皆さんどう付けています?
べつに拡張子区別したりしないですか?
575nobodyさん:04/01/11 14:57 ID:???
mod_perlで動かすCGI?
576nobodyさん:04/01/11 15:04 ID:Ua0H5zjq
>>575
あは。そうっすね(笑)
Apache::Registryで動かすファイルのことです。
577nobodyさん:04/01/11 22:42 ID:???
mod_perlは拡張子変えるということはわざわざしない。

ScriptAliasで同じディレクトリ内をべつのアドレスに変えるだけさ
578nobodyさん:04/01/15 16:35 ID:WbVNIjHL
http://www.hoge.fuga/1234 で、
http://www.hoge.fuga/index.cgi?1234

と認識させることできる?
579nobodyさん:04/01/15 17:22 ID:???
>>578
rewriteでやれ。CGIには関係ない。
580パソコン使用中@さわらないでね:04/01/15 19:44 ID:gKp4Nezk
2ちゃんみたいな掲示板を
携帯でやりたいんだけど
そうゆうCGIってある?
581nobodyさん:04/01/15 19:51 ID:???
>>580
マルチはやめれ
582nobodyさん:04/01/19 22:34 ID:???
>>578
貴様の目的はPR
583nobodyさん:04/01/23 11:09 ID:???
<!--a_start-->aaaaa<!--a_finish-->
<!--b_start-->bbbbb<!--b_finish-->
<!--a_start-->aaaaa<!--a_finish-->
<!--b_start-->bbbbb<!--b_finish-->
ってかかれてるHTMLがあって
CGIで、flagが1だったら<!--b_start-->〜<!--b_finish-->までを隠して
<!--a_start-->〜<!--a_finish-->を表示。flagが0の場合はbを表示してaを非表示をしたいです。

パターンマッチで置換するのはなんとなくわかるのですけど、
具体的にどうすればいいのかがサパーリです。

すみませんがご教授願います。
584583:04/01/23 11:51 ID:???
$html =~ s/<!--a_start-->.*?<!--a_finish-->//sg unless ( $flag );
$html =~ s/<!--b_start-->.*?<!--b_finish-->//sg if ( $flag );

すいませんいけました。
585nobodyさん:04/01/23 14:46 ID:???
>>583-584
スレ違い
586nobodyさん:04/01/24 00:26 ID:sB1NzHfU
http://pc2.2ch.net/test/read.cgi/php/1072896288/
から誘導されてきましたー。


現在ログをHTMLファイルとして吐き出す掲示板を作っています。
動作自体は問題ないのですが、HTMLをファイルとして吐き出して上書きする
性質上、 パーミッションが606にならざるを得ません。 suExecはナシってことで。

こうしたHTMLファイルをサーバー上に置いた場合、外部から書き換えられる
危険性があるでしょうか。
まあ、普通の掲示板のログファイルが勝手に書き換えられるというのも聞かない
ので大丈夫だと思うのですが。

スクリプトでも埋め込まれると目も当てられないので。

過去ログ全部たどったら、「ダメだ」と「いや大丈夫だ」となってて、どっちでしょう?
587nobodyさん:04/01/24 00:39 ID:???
>>586
じゃあ書き換える前後にパーミッションを変えればいいじゃないの
588586:04/01/24 00:40 ID:sB1NzHfU
>>587
CGI上からのchmodのできないサーバーです。
情報小出しで申し訳ない。
589nobodyさん:04/01/24 00:49 ID:???
>>586
外部から書き換えられる危険性はほとんど無いが、
内部から書き換えられる危険性は結構高い。

例えば、君がそのCGIをどっかのプロバイダの共用サーバ上で動かしているとして、
その共用サーバは suExec 使っていない、つまり全ユーザのCGIが同じ実効uidで動いているわけだが、
そのプロバイダに俺も入会して、同じ共用サーバにアカウントもらったとする。
そしたら俺は、速攻で「そのサーバ上の全ディレクトリを回って606のファイルを見つけるCGI」を組んで
次に「606ファイルを好きに書き換えるCGI」を組んで
俺が将来何か素晴らしいことを思いついた時に踏み台にできるよう準備しておく。
何の役に立つかはよくわからないが、何をやったとしてもまず足が付かないので、理想的な環境だ。

もちろん、俺のようなやつは世の中にそうそういないので、
そんなやつと同じサーバで出会う確率は無視できるほど小さい、と言うこともできる。
590586:04/01/24 01:10 ID:sB1NzHfU
>>589
> その共用サーバは suExec 使っていない、つまり全ユーザのCGIが同じ実効uidで動いているわけだが、
> そのプロバイダに俺も入会して、同じ共用サーバにアカウントもらったとする。
> そしたら俺は、速攻で「そのサーバ上の全ディレクトリを回って606のファイルを見つけるCGI」を組んで
> 次に「606ファイルを好きに書き換えるCGI」を組んで

なるほど。つまり書き込み権限のあるフォルダにHTMLがあればどうにでもなる、と。
707などというパーミッションはとんでもない、ということでいいですか?
サーバー側でホームディレクトリ以下のファイルしか変更できないような対策があれ
ば安心?

サーバーがAppachだとして、管理者がsuExecを導入しない理由ってなに?
とまで聞いたらスレ違いでしょうか。
591nobodyさん:04/01/24 01:23 ID:???
>>590
予想
a. 昔 suexec を入れてなくて そのまま入れる機会を逸している。
b. suexecを知らない
c. suexecはプロセスの起動数が倍になるので、負荷を避けるために導入していない。
 (httpd → CGIなプロセス が httpd → suexec → CGIなプロセスになる)
592nobodyさん:04/01/24 01:47 ID:???
>>591
bは論外として(笑)。
一応いまのところは問い合わせたときに「当面予定はありません」だったのでcかな。

いちおうもう一度、上記のようなケースに対策をとっているのか問い詰めて、
導入を薦めてみます。

とはいっても配布を視野にいれているので、そこそこいろんなサーバーで動かない
となぁ。
選択制でchmodの機能は入れるとして、セキュリティ上は堅いとはいい難い、と・・・。


今日はこれで寝ますが、対策・絶対ダメなど、何か他に情報ありましたらよろしくお願い
します。

>>587>>589>>591 ありがとうございました。
593nobodyさん:04/01/24 09:51 ID:???
HTTP PUTメソッド
594nobodyさん:04/01/24 16:31 ID:PL//gjDg
PerlのCGI.pmを使うときに少しでも軽くするために気をつけるべきことは
ありますか?
595nobodyさん:04/01/24 16:42 ID:???
>>594
use CGI; 行の先頭を # でコメントにすることぐらいかな
596nobodyさん:04/01/25 12:38 ID:???
>>595
CGI.pmは使うなと?
フォームデータのデコード、Cookieの生成、ヘッダの出力にしか
使ってないので自前で作っちゃった方がいいかなぁ。
597nobodyさん:04/01/25 20:21 ID:???
>>596
CGI.pmを別名にして、開いて、要らない部分を消すとか。
598nobodyさん:04/01/25 21:00 ID:???
CGI.pm は重い重いとよく言われていて、実際重いんだが、
HTML::Template や LWP, DBI みたいにもっと重いモジュールをがんがん使う俺様から見ると、
もはや誤差のうち
599nobodyさん:04/01/25 22:33 ID:???
楽をしたいがために、
CGI
HTML::Template
DBI
を同時に使うことはよくある。
600nobodyさん:04/01/25 22:54 ID:???
どう重いの?
601nobodyさん:04/01/25 23:47 ID:???
最初のコンパイルに時間がかかる。

俺の自宅鯖 (Pen4/3G) だと、たいていの CGI は 5〜10msec で実行が終わるが
use CGI と書くだけで 50msec に跳ね上がる。

しかし use HTML::Template は 60msec 食うし
use DBI に至っては 80msec 以上かかる (しかもこれにはDBDのコンパイル時間は入っていない)。

mod_perl でこの辺のモジュールを全部キャッシュしておけば
何も問題なくなるのだが。
602nobodyさん:04/01/26 00:10 ID:???
>>601
そしてその方が、HTML::Template もキャッシュが可能になってさらに速くなると言う。
603594:04/01/26 00:27 ID:???
うーん。まさにCGI、HTML::Template、DBIを使ってるんですよね。
CGI.pm部分だけ自作しても焼け石に水ってことですか。
604nobodyさん:04/01/26 01:01 ID:???
DBIはまだしもHTML::TemplateやCGI.pmなんかいらんだろ
605nobodyさん:04/01/26 09:45 ID:???
>>604
楽がしたいから使うんだけどな。
Perl使いが一番重要視する効率はコーディングの効率だと思うんだけどどうよ。
感覚的なものだけどさ。
606nobodyさん:04/01/26 10:01 ID:???
怠惰、傲慢、短気は perl プログラマの三大美徳ですしな
607nobodyさん:04/01/26 13:17 ID:???
教えてください。perlでログを採取したいので
以下のようにしました。
ただ追加書き込みしているだけですがflockはした方がよいでしょうか?
また、その場合どのようにすればよいでしょうか?

open(FH,">>index.log");
print FH $date_time . "\t" . $host . "\t" . $user_agent . "\t" . $http_referer . "\r\n";
close(FH);
608nobodyさん:04/01/26 13:52 ID:???
>>607
禿しくスレ違い

Perl コーディング初心者質問コーナー Part31
http://pc2.2ch.net/test/read.cgi/php/1072896288/l50

逝ってよし
609607:04/01/26 13:57 ID:???
解決しますた。
610nobodyさん:04/01/26 21:56 ID:???
>>603
HTML::Template は、便利だと思うけどなぁ。
611610:04/01/26 21:56 ID:???
もとい、
>>604
612nobodyさん:04/01/26 22:16 ID:???
HTML::Templateの機能なんて普通に同じ事をコーディングでやるだろ
613nobodyさん:04/01/26 22:42 ID:???
俺、ほとんど同じことをするライブラリを自分で作った後で
HTML::Template を見つけたよ

ループのネストとか「おお俺って賢いじゃん」と思ってたんだがなあ…
614nobodyさん:04/01/27 01:55 ID:???
>>613
ちなみにどんなやり方?
615613:04/01/27 02:13 ID:???
>>614
Template クラスと Tag クラスがあって、
Template オブジェクトに Tag オブジェクトを「貼り付け」る。
Template オブジェクトは HTML::Parser 使ってテンプレートファイルをパースしてって、
それらしいタグにぶつかると、対応する Tag オブジェクトの print メソッドを呼び出して、
戻り値をタグの代わりに挿入する。
Tag クラスは Tag::Base クラスを基底として継承したものをいくつか作ったんだが、
ループするタグだとか、if/unless タグだとか。ネストするときは Tag に Tag を貼り付ける。
将来他に新しいタグを思いついたときにも、同様に Tag::Base を継承したクラスさえ作れば、
Template クラスには一切手を加えずに機能拡張できる、つー。

しかし完成直後に HTML::Template を見つけ、
ほとんど全ての機能が既に実現されていたと知り、
新しいタグを作る気も失せてしまった…
616nobodyさん:04/01/27 02:18 ID:???
>>612
ちりもつもればなんとやらで、
HTML::Templateの作法を頭にいれちゃえば、使い回しきくので便利。
(まぁ、自作のモジュールをすでにそーいうのを作っているならいいけど)
でも、複数人がコーディングしたり引き継ぎとかの場合、
ドキュメントがちゃんとあるから、HTML::Template のほうがいいかなと。
http://member.nifty.ne.jp/hippo2000/perltips/html/template.htm

あと、HTML::Templateってそのまんま置けばつかえる(SSH接続不要)というのも好き。
617nobodyさん:04/01/27 11:03 ID:???
>>616
俺も最初自作のモジュールを使ってたんだけど、やっぱ事実上Perlの
標準であるHTML::Templateの方が引継ぎの時等に便利なんだよね。

ちなみに俺の場合、<TMPL_VAR NAME="hoge">というのがどうしても
嫌だったから、勝手に%hoge%という書式に変更して、newするときに
filterオプションで置換して使ってます。
TMPL_LOOPやTMPL_IFは<!--#tmpl_loop name="hoge" -->みたいに
SSI風書式にしてます。
618:04/01/28 14:22 ID:i/cjCs6g
ちょいと質問です。apache の改造を行っているのですが、まぁそれは良いとして、
CGI 起動するときに環境変数 DOCUMENT_ROOT がなかったらダメですか?
apache 自体にはまったく問題ないんですけど、CGI 開発者としてのご意見きぼん。
619nobodyさん:04/01/28 14:36 ID:???
俺はそんな環境変数使わんが、世の中には
ttp://www.palcom.ne.jp/hosting/support/server_independent.html
みたいな書き方をしているサイトが結構あるらしい
620:04/01/28 14:41 ID:???
>>619 おもいっきりサーバに依存してますね(萎
621nobodyさん:04/01/28 14:44 ID:???
>>618
ttp://hoohoo.ncsa.uiuc.edu/cgi/env.html
なので無くても文句は言いません。
622nobodyさん:04/01/28 14:45 ID:???
>>618
DOCUMENT_ROOT はApacheが独自につけてくれる環境変数みたいなので
なくても、公式のCGIとしてはOKなのでは。
ただし、Apacheにどっぷり遣ったようなCGIプログラムは必要としてるかも。

参考
http://hoohoo.ncsa.uiuc.edu/cgi/env.html
http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html
623622:04/01/28 14:55 ID:???
ってもうレスついてるじゃん… _| ̄|●_
624nobodyさん:04/01/29 15:43 ID:pGuQUw/W
掲示板などのCGIで書き込みボタンを押した時にエラーが出るなどして
ブラウザの戻るボタンで戻る場合、先ほどの書き込み内容が
フォームの中に残っている時と残ってない時があるのですが、
これを確実に残して置く方法ってあるのでしょうか?
625nobodyさん:04/01/29 16:03 ID:???
>>624
俺もそういう方法があれば是非知りたいと個人的には思っているのだが
たぶんブラウザの側の実装や設定の問題なので
CGIからは手出しできないんじゃないかと見ている
626nobodyさん:04/01/29 17:52 ID:???
>>624-625
書き込みを一旦CGIが受け取れて単に内容の不備などによる
エラーなら値をフォームのvalueに入れれば済むだろ。
627nobodyさん:04/01/29 17:59 ID:???
>>626
ブラウザの戻るボタンを使った場合らしいぞ
628nobodyさん:04/01/29 18:01 ID:???
キャッシュさせないようにしておけばいいんじゃない?
629nobodyさん:04/01/29 19:26 ID:???
value="" とかしてると戻ったときに入力された値が表示されない。
どうもIEだとvalueの値が優先されて表示される模様。

経験則なので嘘かもしれないw
630nobodyさん:04/01/29 20:44 ID:???
なゆ板を設置したいのですがCGIの設定が(しかた)
わかりません。
パールを変えただけでは駄目ですよね?
631nobodyさん:04/01/29 23:34 ID:???
>パールを変える
新語キター
632nobodyさん:04/01/29 23:55 ID:???
なゆ板って何よ?
633nobodyさん:04/01/30 00:04 ID:HPifPmuk
>>632
UP板です。
ファイルとかの。
634nobodyさん:04/01/30 02:51 ID:???

 配  布  元  で  聞  け

635nobodyさん:04/01/30 04:10 ID:???
配布元はバー茶の垢デリで亡くなりますた。
636nobodyさん:04/01/30 04:22 ID:???
どっちにしてもスレ違いだから放置するか
637 ◆LLLLLLLLL. :04/01/30 10:45 ID:r6WYD04X
hoge.shtmlとfoo.cgiがあり、
hoge.shtmlのなかに上下に2つfoo.cgiをexec cgiで呼び出す記述をし、
foo.cgiの方で、UserAgentを見て携帯電話の時とPCの時に処理を分け、
それぞれ表示させてるんですが、
携帯ユーザーの時は、上下2つあるうちの下の方は、
何も表示させないようにしたいんです。

cgiからの戻り値をssiに渡すことができるなら、
cgiから、表示させる文字列に加えて、携帯の時はフラグとして1を返し、
フラグが立ってたら下のexec cgiは実行しないような書き方をすると
出来るのではないかと思うのですが、、
何処を探してもそういうことが出来ると書かれたところを見つけられませんでした。

ssiスレを探しましたが無いようで、こちらに書かせていただきました。
何かいい方法無いでしょうか?

#ssi側でUAを判定することで下のexecをさせなくすることはできるのですが、
#cgi内でも表示させる文字列を分けるためUA判定する必要があるので、2度でまなんです

つまりssiとcgiで、変数を共有、若しくは戻り値、引数として値を渡せないかということです。
638637:04/01/30 10:47 ID:???
変なトリップついちゃいました。トリップは無視してください。
間違ってperlスレに書き込みしてしまいましたんで↑はコピペです。
よろしくお願いします。
639nobodyさん:04/01/30 13:59 ID:???
>>637
SSIは全然知らんので求めてる答えとは違うが、
UAが携帯の時に空白文字列を返すんじゃだめなのか?
640nobodyさん:04/01/30 14:01 ID:???
>>638
同じfoo.cgiを実行させてるから出来ないだろう。
おれだったら下はfoo2.cgiにして処理するけど。
641nobodyさん:04/01/30 14:09 ID:???
>>640
引数渡せばいいんじゃん?
foo.cgi?loc=topとfoo.cgi?loc=bottomとか
642637:04/01/30 14:22 ID:???
>>641
それがexec cgiは引数渡せないみたいなんです(とほほさん調べ)
>>640
最悪それでいこうかと考えてたんですけど・・
大きいスクリプトなんで、主な処理を別ファイルにして、
ssiから呼ばれる上用CGIと下用CGI、
それぞれからメインのCGIをrequireしようかと・・

どうやらどうしても変数などを渡すことは出来ないようなんで、
負荷など若干気になりますがそれでいこうかと思います。
有難うございました。
643nobodyさん:04/01/30 14:34 ID:???
exec cgi でやるから引数渡せないんであって
exec cmd なら渡せる(ARGV渡し)
644nobodyさん:04/01/30 14:37 ID:???
exec (cgi|cmd) より include virtual を勧める。
645nobodyさん:04/01/30 14:41 ID:???
ふむ・・・
うちのApache2.0.39だとexec cgiで引数渡せたんだがな・・・
バージョンによって違うのかな?

んで、
SSIで<!--#set var="TYPE" value="TOP">とかやると
$ENV{'TYPE'}でとってこれるみたい
646ありがdです:04/01/30 14:49 ID:???
>>643
ごめんなさい。exec cmd使えない鯖なもんでexec cgiなんです。
>>645
なんか環境によって使えたり使えなかったりらしいです。
うちのローカルでは使えなかったんですけど、
鯖で一回試してみます。
>>644
includeって読み込んで実行してくれるんですか。
ちょっとこっちも試してみます
647訂正:04/01/30 14:50 ID:???
読み込んで実行というか、実行結果を読み込んでくれるって感じですかね。
調べてきます
648nobodyさん:04/01/30 14:54 ID:???
どっちにしても、2つとも実行しないといけないんでわ?
SSIで判定して呼ばないとかは、CGIの範疇を超えてると思うですが。
649nobodyさん:04/01/30 14:56 ID:???
っと
俺もすっかり見落としてたが、
ttp://tohoho.wakusei.ne.jp/wwwssi.htm#If
ここらへん使えばいけそう?
650nobodyさん:04/01/30 15:00 ID:???
>>649
いや、そんなのはわかってて、その分岐の判断材料をcgiから返して欲しいんだが出来ないって話じゃないか?
651nobodyさん:04/01/30 15:40 ID:???
>>645
やはり、exec.cgiで引数は渡せなかったんですが、
(ローカル5.8.0、鯖5.6かな?)

騙されたと思って下のほうの
>SSIで<!--#set var="TYPE" value="TOP">とかやると
>$ENV{'TYPE'}でとってこれるみたい
これをやってみると、ちゃんと変数渡せてました。

これは私が、「引数」などで検索してたため、見つからなかっただけで、
実は当たり前のことなのかもしれませんね。
有難うございました。これで期待通りのことが出来そうです。
652nobodyさん:04/01/30 15:44 ID:???
何度もすいません・・perlのバージョンかいても仕方ないですね
apacheは1.3.29だと思います。
653nobodyさん:04/01/30 16:13 ID:???
>>650
HTTP_USER_AGENTじゃあかんの?>判断材料

まぁ とりあえずSSIでCGIから返り値をとってくるのはムリポ
CGI中でENV書き換えてみたけど普通の方法じゃやっぱり保存できないみたいだし

>>651
思惑どおりにいきそうらしいので何よりです。 カンパレ
654nobodyさん:04/01/30 18:24 ID:???
>>630ですが。
板違いみたいなんですが何処で聞けば良いんでしょう?
655nobodyさん:04/01/30 18:42 ID:???
>>654
君の質問が意味不明だから相手にされないんだよ

CGI設置について質問
http://pc2.2ch.net/test/read.cgi/php/1054216089/

過去ログを読んでテンプレに従って質問してみ
656nobodyさん:04/01/30 20:30 ID:???
ttp://homepage2.nifty.com/gyakuten/gyakutenhp/gyakumain.html
こんなにcgi使ってサーバーに怒られないんですか??
657nobodyさん:04/01/30 21:38 ID:???
>>656
どれ? そのページ見るきがしねぇ
658nobodyさん:04/01/31 00:27 ID:???
いきなりだが、2chのトリップ機能の仕様を教えてくれ。
自分の掲示板に組み込もうと思って。
659nobodyさん:04/01/31 01:38 ID:???
>>658
ぐぐれ。厨じゃなければすぐにわかる。
660nobodyさん:04/01/31 02:24 ID:???
>>659
ぐぐらんとわからん時点で駄目かと
一目見て気がつかんとなー
661nobodyさん:04/01/31 06:20 ID:???
馬鹿がぶら下がってるが気にするなよ。
662658:04/01/31 10:32 ID:???
crypt関数か。

普通に気づかなかった。
投稿者の記事削除機能で使ってたのに。
テンキュー。
663nobodyさん:04/01/31 11:55 ID:???
>>662
>投稿者の記事削除機能で使ってたのに。
厨臭さが漂ってますよ
664nobodyさん:04/02/01 10:14 ID:???
>>663
ほんとだw
665nobodyさん:04/02/03 00:14 ID:???
2ch某板のアクティブなスレッドから、特定IDのレスを抽出するCGI作ってるんだけど、(ニュース系のIDストーカーみたいなの)
どうも安いレンタルサーバーで動かすと激烈に重い。
今、上位100スレの全ログから抽出するのに成功したけど、全部で700以上のスレがあるんだよね。
どうにか軽くする方法ないですかねー。
666nobodyさん:04/02/03 00:27 ID:???
>>665
こうゆうこと言ったら元も子もないがCGIでやることではないような。
クライアント側でやるべきでは?
例えばそのようなIEツールバーを作るとか。
667nobodyさん:04/02/03 01:49 ID:???
>>665
1.定時に巡回してログを収集する(cronか何かで)
2.ログを解析し、DBにぶちこむなり、IDでindexを張るなり(これもcronか何かで)
3.CGIは、DBないしindexを検索するだけ
668nobodyさん:04/02/03 07:01 ID:???
無駄に2chの負荷増やすなよ。
669nobodyさん:04/02/03 09:57 ID:???
find.2ch.net
670nobodyさん:04/02/03 20:53 ID:???
掲示板の作成でwrite.htmlとwrite.cgiとread.cgiと一緒に空のテキストファイル(content.txt)をアップロードしてやるそうです。
利用する技術はopen文、CGIモジュール、param関数、ファイル読み込み、ファイル書き込み、です。
これがwrite.htmlのソースです。

<html>
<body>
<body background=star-k2.gif>
<center>
<font size="7"color="#FF00FF">掲示板のプログラム</font><br>
</center>

<font size="4"color="#00FFFF">氏名</font><br>
<center>
<font size="5"color="#FFFF00">書き込みの内容を指定してください ;</font><br>
</center>
<center>

<form action="write. cgi">
<input type="text" name="contents">
<input type="submit">

</center>
</form>
</body>
</html>

671つづき:04/02/03 20:55 ID:???
これがwrite.cgiのソースです。

#!/usr/bin/perl

print "Content-type:text/html\n\n";
use CGI qw(:standard);
$value = param("contents") ;
???????????????????
?ここに何を入力するかわかりません。?
???????????????????
print "<html><body>";
print "書き込みが終了しました";
print "</body></html>";

これがresd.cgiのソースです。

#!/usr/bin/perl
print "Content-type: text/html\n\n";
??????????
ここに何を入れるか???
?????????????
print ???????
print ???????
print ??????
print ???????

以上です。わっけがわかりません。友達みんなこうゆうの弱いんで今みんなパソコン詳しい人に頼み込み中なんです…
誰か教えてください!
672nobodyさん:04/02/03 21:18 ID:???
>>670-671
自由にソースコード書いていいと思うよ。
673nobodyさん:04/02/03 21:58 ID:???
>>672

レスありがとうございます!
でも…馬鹿ですいませんが、自由にソースコードを書くことすら出来ない
のが現状です…大学の講義で、情報処理関係の講義を選択したのですが、
もうなにがなんだかさっぱりわからなくて…HTMLの基礎をかじったぐらい
の知識しかないので…
もしよろしければ、もう少し教えていただけませんか?
「勝手にしろ」とおっしゃられるかもしれませんが、ホントお願いします!
674nobodyさん:04/02/03 22:35 ID:???
>>673
君がやりたいことを実現してくれるソースコードを書け
675nobodyさん:04/02/03 22:39 ID:???
問題作った香具師も相当なアレだよなぁ。。。
676nobodyさん:04/02/04 04:15 ID:???
ここで宿題を教わろうというアレな香具師とちょうどいいじゃん
677nobodyさん:04/02/04 13:07 ID:???
673です。
痛い香具師なのは十分わかってるんですが…
右も左もわからない状態でして…
やっぱり自分でとことん調べるべきですよね。。
なんとか頑張ります。

ありがとうございましたm(_ _)m
678nobodyさん:04/02/08 23:32 ID:???
Perl初心者スレから誘導されました。

現在mod_perlを使ってるのですが、
時間のかかるスクリプトの場合、途中でブラウザ側が読み込み中止をしても
最後までスクリプトは実行されるものなんでしょうか?
15秒程度のスクリプトで実験したところ、中止した後も最後まで実行されているようでした。

更新作業をするスクリプトで、一旦更新するブロックに入ったら
何があっても最後まで実行させたいのですが、まれに途中で止まってしまっているようで
原因がよくわかりません。


タイムアウト以内に終わるのであれば、ブラウザで読み込みの中止をしても最後まで実行される
ものなんでしょうか?
それとも、fork,execなりsystemなりして別プロセスとして動かしたほうがいいんでしょうか?
679678:04/02/08 23:34 ID:2J+W47Q/
なんかわかりにくくなっちゃったな。
どういうタイミングで、実行中のスクリプトが終了するのかが分からないんです。
680nobodyさん:04/02/08 23:49 ID:???
KENTのスクリプトとか見てるとflock使わないで
symlinkやmkdirを使って自前でロックしてるみたいなんだけど
flockじゃやっぱりロックしきれないのかな?
681nobodyさん:04/02/09 00:50 ID:???
>>678
fork して入出力 (STDIN/OUT/ERR) を閉じれ。
完了確認はメール送るなりなんなりすれ。
http://www.google.co.jp/search?q=CGI+%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88

>>680
Perl の場合は NFS 越しの flock は意味を成さないのと、
flock を実装していない OS に対応する為に、排他処理を
自作ルーチンでやる事がある。これらに当てはまらない
環境で使う事が分かっているなら flock が無難。

…という話は散々既出で嫌がられるので、以後はこの辺に。
http://pc2.2ch.net/test/read.cgi/php/1024795138/
682nobodyさん:04/02/09 00:54 ID:???
なんで mod_perl がCGIなのかと問いつめたい…
flock は CGIとは直接の関係もないのではないかと(ry
683nobodyさん:04/02/09 11:32 ID:???
>>681
専用スレあったのですね。スマソ。
684nobodyさん:04/02/09 12:15 ID:???
>>678
mod_perl のことは難しいので、普通のCGIのケースに限って話をすると、
apache の場合のポイントは二つある。

一点目、apache が CGI を実行するときは、
クライアントとの TCP 接続について結構無頓着で、
CGI からデータが送られてくるまでは感知せず、
データを受け取って、つまりクライアントにデータを送信する段になって、
初めて TCP 接続をチェックして、
ここでようやく「切れてるじゃん」ということに気づく。
気づくと、CGI プロセスを kill しにかかる。

それじゃあ処理が完了するまでデータ送らなきゃ良いじゃん、
という話になるわけだが、まあやっぱりそういうわけにもかず、
二点目として、apache は、一定時間 CGI から出力がないと、
タイムアウトとみなし、CGI プロセスを kill しにかかる。
普通はこっちに引っかかるだろう。

上記は普通の CGI についての話であって、
mod_perl でコンテンツハンドラを書く場合はまた話が異なる。
Apache::Connection クラスには aborted という素敵なメソッドが用意されているぐらいで
いろいろ楽しいことができそうに思うのだが、
詳しいことは mod_perl スレに行って詳しい人に聞いてくれ。
685nobodyさん:04/02/10 19:09 ID:???
Perl+Socketでブラウザと同じリクエストを送るようにして
エロ動画に直リンできるCGIを組んだんだけど
これを公開したら転送量がものすごいことになることに気づいた。
リクエストそのままで指定したURLに飛ばしたりはできない…よね。
やっぱり各自DLして使ってもらうしかない?
686nobodyさん:04/02/10 19:58 ID:???
仕組みが理解できていない典型だな
687685:04/02/10 22:04 ID:???
なんか間違ったこと言ってる?
688nobodyさん:04/02/10 23:33 ID:???
>>685
一つだけいえるのはCGI(サーバー側)でやるべきことではない。
689nobodyさん:04/02/11 10:52 ID:???
>>685
redirectって知ってる?
690685:04/02/11 14:53 ID:???
>>688
できないってことだよね。そうします。ありがとう。

>>689
できるならuser-agent, refererを偽装したまま
redirectする方法を教えてください。
691nobodyさん:04/02/11 15:17 ID:???
>685
CGI proxy なんてやる意味はあまりないぞ
重いだけ
692nobodyさん:04/02/12 04:41 ID:???
>>690
redirect 知ってるならそんなことが出来ないのも分かるよね?
693685:04/02/12 09:35 ID:???
>>691
ふつーにローカルで動かすスクリプトにしました。

>>692
無理だと思ってたけど誰も答えてくれないし
689を見てできるのかなと思ってしまいました。
694nobodyさん:04/02/12 13:42 ID:???
>>693
誰も答えなかったのは、CGIの問題ではないからだと思われ。
695nobodyさん:04/02/12 16:41 ID:???
>>685だと暗黙の要求が見えてこないからねぇ

(エロい人の思考パターン)
 エロ動画に直リン -> httpリクエストを弄らなきゃ!
   -> >>690でやっぱり偽装か -> 無理
(ノーマルパターン)
 各自DL -> 意味あるのか分からんが(;´Д`)リダイレクトで可能
696nobodyさん:04/02/15 07:40 ID:YoBoJyol
cgiからhtmlメールを出すとき(ただし、htmlのみでなく、$boundaryで、
テキストメールとhtmlメールの両方を1通にまとめて送ってます)、
htmlメール部分の文字コードは・・・
●規約としては、どのコードにするのが正しいのでしょうか?
また、
●現実問題として、どのコードににするのが「無難」なんでしょうか?

ご存じのかた、教えていただければ幸いです。
697nobodyさん:04/02/15 07:55 ID:zLVCaZam
Apache2を使用しているのですが、以下のようにcgi-binに設定
したディレクトリにHTMLファイルを置いてもブラウザでその
HTMLを閲覧できません。(permission denied error)
どーしても cgi-bin ディレクトリにHTMLファイルを置きたいのです・・・。
宜しくお願い致します。

<Directory "/usr/local/apache/htdocs/cgi-bin">
SetHandler perl-script
AddHandler cgi-script .cgi .pl
PerlHandler ModPerl::Registry
Options ExecCGI
Allow from all
PerlSendHeader On
</Directory>
698nobodyさん:04/02/15 12:25 ID:bW2T2U/M
ここで質問していいのか分かりませんが
メールフォームで画像も添付できるようにしたいと思っています。
今はココ(ttp://www.annie.ne.jp/~cgipal/doc/palskin.htm)の
palskin mail ver.5というのを使っています。
できればこれに書き足してできれば最高なのですが…
こういう事は可能でしょうか?
699nobodyさん:04/02/15 13:30 ID:???
>>698
【 スクリプト改造工房 PART 7 】
http://pc2.2ch.net/test/read.cgi/php/1063780103/

ちなみにその文面のまま依頼すると叩かれるので注意。
1をちゃんと読むこと。
700nobodyさん:04/02/16 00:41 ID:???
とりあえず >>1 を読んで、意味がわからないならここで質問しても無駄かと。
本当はスルーしたほうがいいんだろうなーとか思いつつ。
701nobodyさん:04/02/26 20:49 ID:???
http://hoge.com/ のCGIから、
http://fuga.com/ に Location でリダイレクトしました。
でもアドレスバーのURLは http://hoge.com/ のまま。
こういうもんなのでしょうか?

リダイレクト後にリロードすると、hoge.com で送信した内容が二重で送信されてしまいます。
これもこういうもんなのでしょうか?
702701:04/02/26 21:06 ID:???
print qq(Location: /\n\n);

だと、アドレスバーはリダイレクト前から変化せず

print qq(Location: http://hoge.com/\n\n);

だと、アドレスバーが http://hoge.com/ になってくれますね。

相対パスだと変化しなくて、
httpからのURLだと変化するようです。。。
とりあえず確認したことをご報告します
703nobodyさん:04/02/26 21:12 ID:vjE+BrRn
 
704nobodyさん:04/02/26 21:22 ID:???
>>701
・・・
705701:04/02/26 21:47 ID:???
>>704

適当に例えたものが、httpになってましたね・・・
706nobodyさん:04/02/26 21:57 ID:???
なんだか微妙にあちこち間違って覚えてるようだな
707nobodyさん:04/02/26 23:29 ID:???
HTTPとCGIについてもっと勉強しれ
708701:04/02/27 00:53 ID:???
>>706,707
すいません、どっかものすごい勘違いしてますでしょうか。。。汗
709nobodyさん:04/02/27 01:42 ID:???
Location: は絶対URIでは
つまり http://からはじめれと
710nobodyさん:04/02/27 02:28 ID:???
711nobodyさん:04/02/27 02:44 ID:???
>>701
http://cgi-spec.golux.com/draft-coar-cgi-v11-03-clean.html#7.2.1.2

hoge.comは中の人に迷惑だからやめれ。
712701:04/02/27 17:15 ID:???
>>709, 710, 711

なるほど。
出直してきまつ。。

ありがとうございました!
713nobodyさん:04/03/02 19:04 ID:AJEsvSvh
HTML出力のサニタイズについてなのですが、現在<>&"'を文字実体参照に置き換えています。
投稿に文字実体参照を使いたいのですが、&をサニタイズからはずすと、どういうマズイことがあるのでしょうか。

文字実体参照と解釈できるものだけ再置換してもいいんですが、特に問題がないようなら外してしまおうかと。

あと、<>についても、どちらか一方だけ文字実体参照に置き換えておけば大丈夫というのは誤りですか?
714nobodyさん:04/03/02 21:36 ID:???
>>713
 君はトンデモなHTMLを出力しても平気なクチ?
最低限Validになってないのは恥ずかしいと思わないのかね。
715nobodyさん:04/03/02 21:44 ID:???
>>714
思わないなぁ。そんな上っ面にはとらわれない主義だから。
もっと本質を見ようね。
716nobodyさん:04/03/02 21:48 ID:???
>>713
>&をサニタイズからはずすと、どういうマズイことがあるのでしょうか。
>あと、<>についても、どちらか一方だけ文字実体参照に置き換えておけば大丈夫というのは誤りですか?

具体的実害は思いつかないが、少なくともHTMLとして文法違反になるのは確か。
予期せぬ表示上の不具合を発生させる可能性は否定できない。
そもそもなんでそんなにサニタイズを端折りたいの?

ちなみに俺は、HTML4.01の仕様に存在する実態参照だけは許して、
それ以外の&は&に置換するルーチンを書いた。
ここに貼り付けようと思ったが長すぎて拒否された。
717716:04/03/02 21:52 ID:???
>ちなみに俺は、HTML4.01の仕様に存在する実態参照だけは許して、
>それ以外の&は&に置換するルーチンを書いた。
>ここに貼り付けようと思ったが長すぎて拒否された。

区切って書いてみる

sub sanitizeamp
{
my ($str) = @_;
# 数値参照は OK (ただし末尾の ; が欠けている場合は補う)
if ($str =~ s/^?(\d+|x[0-9A-Fa-f]+);?/?$1;/) { return $str; }
# HTML4 に実在する文字参照は OK (ただし末尾の ; が欠けている場合は補う)
(続く)
718nobodyさん:04/03/02 21:55 ID:???
elsif ($str =~ s/^&(nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest(続く)
719nobodyさん:04/03/02 21:57 ID:???
|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig
|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof
(途中途中に入っている改行は削除すること)
720716:04/03/02 21:59 ID:???
めんどくさくなったからやめます
721nobodyさん:04/03/02 22:01 ID:???
>>715はなぜサニタイジングするかということ自体を全く理解してないようだ。
それでいて

> 思わないなぁ。そんな上っ面にはとらわれない主義だから。
> もっと本質を見ようね。

とか言っているんだから救いようがない。
具体的に色々問題があるわけだが、馬鹿には教えても無駄のようだから省略。

一見便利そうで利用者・閲覧者全員に迷惑を与える危険性の高いスクリプト
でも作って自己満足していれ。
722713:04/03/02 22:08 ID:???
>>716
サニタイズを端折りたいわけではないです。
具体的にどういう不具合が出るのかを知りたかったので。
実体参照だけ再置換するルーチンを組むのは面倒ではないのですが、&を素通しにしてOKなら処理が速いかな、と。

HTML4.01に準拠するとして、#PCDATAとして扱われるところには<>&"は直接書いてはいけない、という理解でいいですか?

>>721
713です。715は私ではないので。
>一見便利そうで利用者・閲覧者全員に迷惑を与える危険性の高いスクリプト
を作りたくないので、質問しています。よろしければ教えてください。
723716:04/03/02 22:26 ID:???
>>717-720
途中まで書いて中断するのも気持ち悪いからうp
ttp://www.geocities.co.jp/AnimeComic/5498/misc/sanitizeamp.txt
724nobodyさん:04/03/02 22:35 ID:???
>>723

ありがと。サラッとみた感じで、数値の桁数を5ケタ以下にしといたほうがよさそうな。

まあ、あれですか。
<brockquote>また、著者は、「&」の代わりに「&amp;」(ASCII十進38)を用い、文字参照の冒頭――文字実体参照の開始区切り子――と誤解されるのを避けるべきである。</blockquote>
ということですね。

参考になりました。
725716:04/03/03 01:28 ID:???
>>713,>>722
サニタイズを端折った場合の問題を1つ思い出したので書いておく。

" のサニタイズを端折ったら
入力された文字列を value に取った input 要素の表示に異常が出たことがあった。
<input type="text" value="giko"monar"> となるべきところを
<input type="text" value="giko"monar"> になったってことね。

<> のサニタイズについても、< だけやって > を端折ったら
なんか問題が起きたような気がしたがちと今は思い出せん。
726723:04/03/03 01:32 ID:???
>>724
>サラッとみた感じで、数値の桁数を5ケタ以下にしといたほうがよさそうな。

なるほど。
数値実態参照の数値の範囲は16ビットなんだっけ?
?〜?
?x0〜?xFFFF
てこと?
727726:04/03/03 01:57 ID:???
ああ、間違った、
&#0〜&#65535
&#x0〜&#xFFFF
てこと?
728nobodyさん:04/03/03 12:03 ID:???
Unicodeの文字番号を指してるはずだから、
今ではU+FFFFより上にも文字もある予感
729nobodyさん:04/03/09 12:04 ID:TnCgMCud
掲示板とMLとの連携で情報交換システムを稼動させています。
ML登録CGIで掲示板の投稿の配信を受けるかどうか、選択し、
掲示板投稿時に投稿をその設定されたアドレスへメール配信しています。

で、MLアカウントへのメールが来たら、同時に掲示板への新規投稿として
掲示板に放り込みたいのですが、
どんな方法が考えられますか?
アウトラインだけでいいのでどなたか御教授下さいませ。
730nobodyさん:04/03/09 17:04 ID:???
CGIで掲示板を作ろうとしてるんだけど、
規制として、何行以上書き込まないと書き込まれないような
スプリクト記述ってありませんよね?
731nobodyさん:04/03/09 17:07 ID:???
パターンマッチで改行が何回あるか数えたらええんちゃうの?
そういう意味じゃないのかな…
732nobodyさん:04/03/09 17:08 ID:???
>>730
あるでしょ。てか
アドレス入れなきゃ書き込ませない、なんて事はざらなんで、
ある一定の長さの本文じゃなきゃ書き込ませない、なんて
別にそうすればいいだけでは?

733nobodyさん:04/03/09 17:08 ID:???
>>730
改行大杉が出来るんだから改行少なすぎもできるだろ
734nobodyさん:04/03/09 18:34 ID:???
>>730
その程度も自分で判断できないお前には無理
735nobodyさん:04/03/09 18:45 ID:???
>>730
> スプリクト記述ってありませんよね?

ありません。自分で書くしかありません。
できない場合は、掲示板の投稿の改行を数え、だめなやつは管理者権限で削除して下さい。
736nobodyさん:04/03/10 04:52 ID:???
どうせまた「作る」=「設置」なんじゃないの
737nobodyさん:04/03/10 12:37 ID:ZLD/dvfR
OSX Server10.3を使用して、CGIを動かしたいのですが、アクセスすると
http://foo.example.com/cgi-bin/tester
へ接続しにいこうとしてうまくいきません。
以前もこのような症状がおきて、その時教わったのが、vi -b で.cgiファイルを開いて、行の最後に^M か ^B がついていたら、それを、viの画面で何かのコマンド(%s/…)で変換したら問題無く動いたのですが、そのコマンドがどのようなコマンドだったか忘れてしまいました。
実際今はの.cgiファイルを、vi -b で開くと、行の最後には、^Mがついております。
どのようにしたら良いでしょうか。

738nobodyさん:04/03/10 13:01 ID:???
>>729
だれか返事してやれよw

メールアカウントの.forward なりに プログラムを埋め込む
そのプログラムは、直接ログファイルに書き込むなり
その掲示板CGIを呼ぶなりして投稿と同じ処理をCGIにさせるなりする。
739nobodyさん:04/03/10 13:15 ID:???
>>738
> >>729
> だれか返事してやれよw
>
> メールアカウントの.forward なりに プログラムを埋め込む
> そのプログラムは、直接ログファイルに書き込むなり
> その掲示板CGIを呼ぶなりして投稿と同じ処理をCGIにさせるなりする。

ありがとうございます。
/home/ACCOUNT/www/ 以下でCGI動かしてます。
mailのログは
/var/spool/mail/ACCOUNT ファイルにある事は確認しました
telnetから上記mailのログは読めましたし、
/home/ACCOUNT 以下に持って来れましたが
CGIからMail::MboxParser.pm使って中身見ようとしましたが、
当然ながらパーミッションの問題で持って来れませんでした。
その.forward使ってメール着信時に予め/home/ACCOUNT に
ファイルのコピーを持って来ればいいのでしょうが、
肝心の.forwardをどこに置けばいいやらよくわかりません、
宜しければお教えいただくか、ポインタ教えて下さい。
740nobodyさん:04/03/10 15:01 ID:???
>>739
man forward
741nobodyさん:04/03/10 15:06 ID:???
>>739
あー 掲示板CGIでログを解析しないほうがいい。

.forward の中で呼ばれるプログラムは
メールの内容を標準入力に渡されるのでそれを加工して掲示板のログに入れてあげればよいかと。
742739:04/03/10 15:32 ID:tqgEM6Ax
>>741
実は
/home/ACCOUNT/maillists/
にML設定ファイルがあり、それ宛へのメールをCGIで横取りしたいのです。

.forward を書いてみましたが
[email protected]宛てのメールは転送されましたが、
/home/ACCOUNT/maillists/test
で設定した
test@@ACCOUNT.com宛てのメールは転送されてきませんでした
まあ、当然といえば当然ですが。

やっぱり
/var/spool/mail/ACCOUNT をcpしてくるようなスクリプトを書いて
CGIからそれを叩く、って事なんでしょうか
743nobodyさん:04/03/10 17:13 ID:bqGiGoNX
テスト
744nobodyさん:04/03/10 18:13 ID:???
>>742
test のアカウントにも .forward おいたら?

spoolの下からコピーなんて邪道は許せんw
745nobodyさん:04/03/10 18:53 ID:???
>>744
> >>742
> test のアカウントにも .forward おいたら?
>
> spoolの下からコピーなんて邪道は許せんw
はい、そうですね、僕もそうしたくないです。
/home/ACCOUNT/maillists/
これがMLのアドレスリスト記載したファイルの置き場で、
testにアドレスをいくつか改行で入れたものをこの中に入れといてやると

[email protected]で入れたアドレスにメールが配信されます。
/home/ACCOUNT/maillists/
には複数のMLアカウント用のファイルが置いてあります。
/home/ACCOUNT/maillists/.forward
として置きましたが無視されました。

どこに置けばいいんでしょうか…


746nobodyさん:04/03/10 19:34 ID:???
/etc/aliases
747nobodyさん:04/03/10 20:11 ID:???
>>746
> /etc/aliases
調べてみました。
telnetで除きに行きましたが Permission denied
で、見せてもらえませんでした。

現状 [email protected]宛てのメールは
~/.forward で捕まえられそうなので、
全てのMLへ[email protected]を参加させ、
そいつを~/.forward で捕まえてto: MLアドレスなら処理、
見たいな事でやってみようと思います。。
748nobodyさん:04/03/10 20:28 ID:???
"| naniwoyattenndai"
749nobodyさん:04/03/11 00:53 ID:XsdX+AtW
質問です。
自宅サーバ開設の実験として、Kent Webさまよりyybbsをダウンロードして、
文献(Mac OSX Unix的活用講座)の指示通りperlのある場所の指定をし、
アクセス権を正しく設定しましたが、"Internal Server Error"となってしまい
ます。職場/自宅の両方の環境で試しましたが、ダメです。Kent Webさまの
FAQコーナーの事項はすべてチェックしたつもりです。いったいなにがダメ
なのか教えてください!Askaは問題なくうごくのですが・・・
サーバ、クライアントともMac OS X 10.3.2です。
750nobodyさん:04/03/11 01:00 ID:???
>>749
スレ違い >>1-5 を読め
751nobodyさん:04/03/11 02:09 ID:???
いやこのスレでもいいとは思うが

しかし >>749 に書いてある情報だけで
「いったいなにがダメなのか教えてください!」と聞かれても
「あんたという人間自身がダメ」としか答えようがないよ

とりあえずエラーログでも見てみたらどうだ
「エラーログって何?」という状態だったら、自分でCGIを使うのは諦めたほうがいい
752747:04/03/11 11:56 ID:???
>>748
> "| naniwoyattenndai"
どうもヒントありがとうございます。

open Mail, "mail |" or die;
open Back, ">mail.back" or die;
while(<Mail>){print Back;}
close Mail;
close Back;

こんな風にやってみました。
とりあえず1個持ってきてくれましたが、

& Saved 1 message in mbox
Held 673 messages in /var/spool/mail/hoge

なんて事で、溜まりまくってます。
これmailコマンドになんか足してやれば、
未読メールは全部読む、なんて事にならないんでしょうか?
調べましたがわかりませんでした。

でも読んでmboxにセーブされるなら手元にprint
する必要ないですね。

なんかスレ違いになってきてますが、
すんませんがポインタでもお願いします。
753nobodyさん:04/03/11 22:32 ID:???
>>748 は「.forward の中に | を書け」というアドバイスだと思ったんだが…
754747:04/03/12 16:10 ID:???
>>753
> >>748 は「.forward の中に | を書け」というアドバイスだと思ったんだが…

はい、気が付きました。
パイプで処理をプログラムに渡す、って事ですね。
いろいろやってみます。
755nobodyさん:04/03/21 19:08 ID:???
フォームって、リターンキーで送信しちゃうと、ボタン名飛ばないんだね。
ボタン名がクエリに入ってたら処理を分岐してたオレはいったい…

どうしよ。
756nobodyさん:04/03/21 21:44 ID:???
hiddenを使えばいいじゃない
757nobodyさん:04/03/21 21:56 ID:???
複数のtype=submit があって、nameで分岐してるってことじゃないかな。

name無しの時に分岐のどの処理をさせるか、無効操作として再度フォーム表示するかどうか、
それさえ決めればよさそうな.....
758755:04/03/22 11:38 ID:???
>>756

hiddenでフラグ持たせとくかー
なんかすんごいアナログだけど
ボタン一個の時はこれしかないよね。

>>757

そそ。nameで分岐。
name無しは基本的にまたフォームに戻すんだけど、
リターンで送信されたときにもちゃんと飛ばせないトナーと思ったり。

1フォームにsubmitボタンが2個あるときってどうしてますか?
759nobodyさん:04/03/22 14:56 ID:???
まずそういうインターフェイスを見直す。
760nobodyさん:04/03/22 15:59 ID:???
>>759 ならどう見直す?
761nobodyさん:04/03/22 16:20 ID:???
ラジオボタンで選択
762nobodyさん:04/03/22 16:43 ID:???
>>761
現実的じゃないかも。
たしかにラジオボタンだと正確に取得できるが、
実際のフォームとかでそういうの見ないな。(むしろ使いにくい)
763nobodyさん:04/03/22 17:04 ID:???
JavaScriptと<input type="button">組み合わせてOnClickでhiddenの中身を書き換える
764nobodyさん:04/03/22 17:15 ID:???
>>763

JavaScript切ってたら
糸冬
765asdf:04/03/24 11:20 ID:CibVmuL+
xreaの鯖を使用していますが、CGIが動きません。

#!/usr/bin/perl
# アクセスカウンタ

print "Content-type: text/html; charset=Shift_JIS\n\n";

# カウントファイルから読み込み
open(IN, "counter.txt");
$count = <IN>;
close(IN);

# カウント増加
$count++;

# カウントファイルに書き込み
open(OUT, "> counter.txt");
print OUT $count;
close(OUT);

print <<EOL;
<html>
<body>
<p>あなたは $count 人目のお客様です</p>
</body>
</html>
EOL

という死ぬほど簡単なCGIなのに。ファイル名はcounter.cgi
あと、0とだけ書かれたテキストファイルcounter.textをおく。
766asdf:04/03/24 11:21 ID:CibVmuL+
http://ponk.jp/perl_bbs/index.php?page=2
ここのCGIです。

print <<EOL;
<html>
<body>
<p>あなたは $count 人目のお客様です</p>
</body>
</html>
EOL



print"
<html>
<body>
あなたは $count 人目のお客様です
</body>
</html>
"

としたらうごいたけど・・

何が原因なの?
ほかにもいっぱい動かなくて、CGI開発行き詰ってるYO!
767asdf:04/03/24 11:24 ID:CibVmuL+
http://diary.asdf.jp/counter.cgi
↑動かないカウンター

http://diary.asdf.jp/a.cgi
↑動くカウンター

違いは>>766のとおり
768nobodyさん:04/03/24 12:36 ID:???
>>766
> 何が原因なの?
> ほかにもいっぱい動かなくて、CGI開発行き詰ってるYO!

エラーログ見るとか、
チェック用CGIで探るとか、
use CGI::Carp qw(fatalsToBrowser);
するとか、ああとかこうとか、すれよ。
ばかかお前。
勝手に行き詰れよ、あほ。
メーワクだから開発なんかするな、
ちゅうか、カイハツ?それ。
設置じゃねえか、それ。
769nobodyさん:04/03/24 14:21 ID:???
>>766
とりあえず駱駝本を読んでください。
話はそれからです。
770nobodyさん:04/03/24 17:22 ID:???
なぜか初心者は、単なる設置作業を「CGIを作る」と表現するんだな。
しかし普通は「作る」といったら自分でソースを書いて制作することを指す。
回答側はその前提でソースやコーディングをアドバイスすると、分からんとほざく。
いいかげんにしろと。
771nobodyさん:04/03/24 19:38 ID:???
甑を思い出したさ
772nobodyさん:04/03/24 21:07 ID:???
フォームページ(HTML)からHTTPSのCGIにPOSTした際に、
たまーにフォームから送信したはずのクエリがCGIで取得できなかったりするんだけど、
この症状について誰かご存知の方いますか?

wwwはapache, ブラウザはIE6です。
773nobodyさん:04/03/29 23:04 ID:???
復帰乙。
774772:04/04/04 12:06 ID:???
自己レス

「Wininet により空白のヘッダーのみの POST 要求が再送される」
ttp://support.microsoft.com/default.aspx?kbid=831167

激しくこれな気がしました。
SSL+POST時におけるIE6のバグっぽいですね。
IE6だからどうりで今まで正常に動いてたわけだ。

GETにするしかないのかなぁ…
775Perl+XHTMLユーザ:04/04/06 18:50 ID:BdnN1EXa
CGIを作った際に困った・・・のでこちらで質問です
print <<"_EOD_";
Content-type: text/html

<html lang="ja">
<head>
(略)
_EOD_
などとすると、<html lang="ja">の前に改行が入ってしまいます。
また、かといって
print <<"_EOD_";
Content-type: text/html
<html lang="ja">
<head>
(略)
_EOD_
などとするわけにもいかず・・
これは仕様上やむを得ない事なのでしょうか?
776nobodyさん:04/04/06 19:00 ID:???
CGIとは無関係。 >>1
777nobodyさん:04/04/07 11:39 ID:???
777get, zuzaa
778nobodyさん:04/04/10 11:10 ID:brO2qLuh
Perlで掲示板を作成中。

パスワードをcookieに記録すると丸見え。でもユーザーが毎回パスワードを入力
しないようにしたい。
ささやかな抵抗として以下のロジックを実装してみた。

1.cookieには自分を自分自身でcryptして頭2文字を除いたものを記録
2.記事には1をランダムな種でcryptしたものを記録
3.投稿時にパスワードをcookieから取得したのならその文字列をそのまま
 記事に記録されたパスワードとチェック。
4.投稿時にパスワードがcookieから取得されたものでなければ、1と同様の
 処理をしてから、記事に記録されたパスワードとチェック。

なにか問題があるだろうか。

もしくはもっといい方法を知っていれば教えてくれ。
779nobodyさん:04/04/10 15:36 ID:???
780nobodyさん:04/04/10 17:18 ID:???
「cookieに記録すると丸見え」というのがよく分からない。
XSSを危惧してのことならXSSをさせないこと自体が重要。

せいぜい数文字程度の強度しかないユーザーパスワードを種にするより、
管理者が20文字くらいのcryptを勝手に発行してCookieで食わせたほうがいいのでは?
ユーザーがCookieを削除してしまえばそれまでだけどね。

そもそも記事に記録するcryptは見せる必要がない。
不安なら管理者が設定した秘密の種で再cryptして記録する。
781nobodyさん:04/04/10 18:05 ID:???
> 「cookieに記録すると丸見え」というのがよく分からない。
> XSSを危惧してのことならXSSをさせないこと自体が重要。

想定しているのは外部からのアクセスではなく、PCを他者に使われるような環境。
例えば会社のPCとか、ネットカフェのPCで、cookieを無条件で喰わせる様な掲示板
だと、IEのキャッシュを見るなり、cookieを見るなりすると、HNとパスワードが一発で
ばれる。
独特なHNであれば、googleで調べて、書き込んでいる掲示板を特定することも
できる。まあ、自己責任といえばそうだけど。
掲示板ごとにパスワードを変えるのも大変だし、対抗手段としてプレーンなパスを
見えなくすれば、気休めになるかな、という流れ。
782nobodyさん:04/04/10 18:29 ID:???
>>781
Cookieをファイルとして残せば、その端末を使えるユーザーはすべて同等の扱い。
パスワードをcryptしても別の端末からのログインをやりにくくさせるくらい。
→やはり気休め。

最低1度はパスワードを手動で入力させて、
セッションで楽させてあげるまでが限界かの。
783nobodyさん:04/04/10 19:00 ID:???
>>782
そだよねー。
まあ気にしているのはその掲示板に書き込まれたりすることじゃなくて、cookkieから
パスワードの傾向を読み取られて、もっと重要なパスワードを推測されることだから、
ロジックとして穴でなければ実装したほうがいいかな。
自分では掲示板系と重要なパスワードは明確に区別してるけど。

とはいっても私の作ったのだけがそうでもあまり意味ないので、これがポピュラーな
手法になるといいな・・・と期待してみたり。

「パスワードをcookieに記録する」というチェックボックスを投稿フォームに設けて、
ユーザー名やらなんやらだけ記録させるのも選べるようにしよう・・・。
784nobodyさん:04/04/10 19:33 ID:???
つまり「頭2文字を除いたものを記録」というのは、
種となっているパスワードを隠蔽するためだったね。

2文字だと候補が少なすぎて容易にパスワードを予測されてしまうから、
せめて10文字くらいは削ったほうがよいかと。

cryptロジックが公開されていない(もしくは管理者がもつ秘密の種の強度が高い)
という条件なら、候補を出すこと自体もそれなりに難しくはなるけどね。
785nobodyさん:04/04/14 20:05 ID:???
Perlコーディング初心者質問コーナーから誘導されて来ました。

CGIで出力させたリンクが思ったように動かないのです。

Perlで組んだCGI(test1.cgiとします)から
<a href="http://○○○/test2.cgi?item1">アイテム1</a> が出力されるようにし
ブラウザ上の「アイテム1」をクリックすると、確かに test2.cgi が起動するのですが
環境変数の一部が渡っていかない感じで、「item1」というデータが取得できず
望みの結果が得られません。

リンクを含んだデータが表示されている時点で、「ソースを表示」して別のHTMLファイルに保存し
別個に起動すると、そこからリンクした場合はちゃんと test2.cgi に item1 が渡っています。
右クリックから「ショートカットをコピー」して アドレスバーに貼り付けてやってもやはり問題なしです。

どうも、NT+IIS のサーバーでこういう現象になり、 AN HTTPD だと問題ないのですが
既知のトラブルなのでしょうか?
786nobodyさん:04/04/14 22:52 ID:???
>>785
・test2.cgi にジャンプしようとする時,ステータスバーにはどう表示されているか?
・ジャンプ後,アドレスバーにはどう表示されているか?
っていう辺りに興味があります。。。
787nobodyさん:04/04/14 23:02 ID:???
>786
785です。

WEB環境は勤め先なのでうろ覚えですが、

リンク文字にマウスカーソルをもっていったときステータスには

http://*****/test2.cgi?item1

と表示されていたように思います。

ジャンプ後のアドレスバーは明日確認してきます。
788nobodyさん:04/04/15 09:46 ID:???
>>785
環境変数をすべて出力するスクリプトで、リンクから呼んだ
ときにちゃんと渡っているかどうかチェックしてみりゃいいじゃん。

あと、本気で解決する気があるのならNT+IISなんて書き方はしねーよ。
環境にしろ、問題になっている箇所にしろ、もっと具体的に
書くのが当たり前。

なんにしてもここは質問スレじゃないしスレ違い。
誘導自体が間違い。
789nobodyさん:04/04/15 17:23 ID:???
785です。

Env.plというのでやってみたら、渡っている環境変数は半分くらい。
QUERY_STRINGもCONTENT_LENGTH も行ってませんでした。

スレ違い申し訳ありませんでした。
790nobodyさん:04/04/16 22:56 ID:???
すみません、785です。解決したので報告です。

お恥ずかしい初歩的なミスですが、?の後のクエリーを全角文字で書いてました。

受け側もデコードとかしてなくて、それでもクエリーはちゃんと読めて、思ったとおりの
HTMを出力していたのですが、その時点で正常ではなかったようで、そこから飛ぶ
先の環境変数が壊れていました。

お騒がせしました。
791nobodyさん:04/04/17 16:00 ID:ksEVTWBi
誘導されてきました。

GETやPOSTでデータを渡すとき、通常だと
「&」 … @pairs = split(/&/,$buffer);

「=」 … ($name,$value) = split(/=/,$pair);
でデータ切ると思いますが、これを別の文字にできますか?

「&」を「<>」とかに替えてみて、GETだと出来たんですが
POSTで渡すとき強制的に「&」になるようでデータを渡せませんでした。

POSTの時「&」意外にする方法はあるのでしょうか。
お願いします。
792nobodyさん:04/04/17 16:09 ID:???
793nobodyさん:04/04/17 16:11 ID:???
>>791
W3C的にはgetの区切り文字は「;]が推奨されている。

Postの方は変えようがない。
794nobodyさん:04/04/17 16:31 ID:???
>>792 >>793
そうですか・・・ありがとうございました。
別の方法を考えます。
795nobodyさん:04/04/17 18:01 ID:???
なんでそんなことをする必要があるのか理解できん・・・
796nobodyさん:04/04/17 18:12 ID:xkVKwnfm
今通販HP作成してまして
注文ページ1(HTML)で商品選択
注文ページ2(perlcgi)で選択商品の確認+住所等の入力
注文ページ3(perlcgi)で選択商品、住所等の確認
というページを作っていますが、ページ3でページ2に記入漏れがあった場合に
戻るボタンから戻る事を可能としたいんです。普通CGIのページでは戻ったり進んだり
できませんよね?、でも他サイトを見て回っていたらどうやらページ3からページ2へ
戻ることが可能になってるところもありましたので、私もやりたいのですが
調べても方法がわからないまま一日がもう終わりそうなので++;頼りにきてしまいました。
お願いします。

797nobodyさん:04/04/17 19:57 ID:???
戻るボタンつーのはブラウザの戻るボタンかね?
それとも戻るボタンつーのを作ったのかね?
798796:04/04/17 20:01 ID:xkVKwnfm
レスありがとうございます。もどるボタンはhistory.back()でやろうと思ってますので
機能的にはブラウザの戻るボタンと同じです。
799796:04/04/17 20:02 ID:???
久しぶりに来たのでずっとsage忘れてました。ごめんなさい。
800nobodyさん:04/04/17 21:24 ID:???
>>796
ページ3の戻るボタンでページ2にサブミットし直す。
ページ2の方では、ページ3から戻ってきたとき用のコードを書く。
ただそれだけ。
801nobodyさん:04/04/17 21:45 ID:???
すいません、質問させてください。

あるサーバのCGIから別のサーバのCGIに
リダイレクトしつつ、POST送信することはできますか?

Location: http://aiueo/aiueo.cgi?name=value
だとGETになっちゃうので、これをPOSTで送りたいです。

意図としては、上記方法だと、送信データが
ブラウザのアドレスバー表示されてしまうので、
これをなんとか隠したいって感じです。

同じサーバ内ではセッションを使えばできますが、
何せ別のサーバへの送信になるので。。。

ご教授お願いします。
802801:04/04/17 21:46 ID:???
×アドレスバー表示
○アドレスバーに表示

でした。失礼。。。
803796:04/04/17 21:52 ID:???
>>800さんどうもです。
でもそれだと3〜2〜3〜2〜3〜2って何度も繰り返せないんですよね。
私の記述のしかたが悪いのかもしれませんけど、2〜3〜2〜3ってループする度に
ページ3に付けたhidden名の中にhidden名・・・・・で最後にページ1からの値。
みたいな感じになっちゃうんですよね。
とりあえず私が見た戻るを可能にしていたサイトではどうやらsubmitしなおしや
hiddenでリレーするようなのではないようで、普通にブラウザの戻るボタン
で戻れるようになってました。なので延々ループしても問題もないです。
なんかものすごく単純なコマンドがあるのかなって思ってましたけど・・・
「セキュリティ保護のため情報を再送信しないと表示をできません。情報を再送信しますか」
みたいな事を聞かれますが、それを自動でやらせる事ができる記述があるのかな?
みたいに思ってましたが・・・う〜ん。
804nobodyさん:04/04/17 22:25 ID:???
>>801
a. CGI プログラム内で相手サーバに POST リクエストを
 送って結果を受け取り、それをブラウザに返す。

b. CGI プログラムで送信したい値を埋め込み済のフォームを
 生成し、ユーザに submit させる。
805nobodyさん:04/04/17 22:41 ID:???
>>803
3>2>3>2が繰り返せないのは単純に作りがへぼいだけ。
このコーディングを説明されないと書けないようなら向いてないから
辞めた方がいい。

あと、hidden項目なんぞ使わなくてもCookie使うなりDB使うなりでも
いいのだが。

とりあえず勉強し直せ。
あと、その際は基本も読んでおけ。
www.ipa.go.jp/security/awareness/vendor/software.html
806801:04/04/17 23:01 ID:???
>>804

レスありがとうございました。

a. なんですが、確かにLWPモジュールなんかで
結果を受け取ってそれをブラウザにprintすればいいんですが、
その時ブラウザのアドレスバーには
送信元のサーバのURLが表示されますよね?
送信先のサーバが表示されていなければいけないんです。
(そういう意味でリダイレクトという表現をしました)

b. については確かにそうなんですが、
JavaScript を使って onLoad で送信したり、
一度ユーザにボタンを押してもらう方法では
ちょっと厳しいかなーと思ってます。
JSを無効にしていたり、重要なデータになると、
HTMLソースをいじられる可能性があると問題なので。

そういう意味ではサーバをまたがったセッションになるわけですが、
何せ送信先のサーバのCGIはこちらからではいじれないので。。。
807796:04/04/18 10:28 ID:???
>>805
作り方の問題ですか。
ところでDBていうのはDataBaseの略ですか?DBっていうものをほとんど理解してないので
色々サイトを回ろうと思います。
808nobodyさん:04/04/18 11:51 ID:???
>>806
重要なデータは扱うべきではないと思いますけど気のせいかな
809796:04/04/18 17:27 ID:???
なんとかCOOKIEをつかってのsubmitしなおしで注文の引きつぎできるようになり2>3>2>3の
繰り返しもできるようになりましたが、もっともっと勉強が必要みたいです。
また来ます。
810801:04/04/18 22:47 ID:???
>>808

扱わざるを得ないとしたら、
この方法だと手詰まりですかね。。。(汗
811nobodyさん:04/04/19 00:22 ID:dIBR14RC
LWPモジュールを使っていろいろと試して遊んでいます。
で、質問なのですが、
proxyを設定するために

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->proxy(http => 'aaa.aaa.aaa:80');
$req = HTTP::Request->new('GET',"http://www.google.com");
$res = $ua->request($req);
print $res->content;

としたのですが、何も表示されません。
プロキシが生きていることは確認しました。
どうすればよいですか?
812nobodyさん:04/04/19 00:48 ID:???
>>811
本当に何も表示されないんだったら俺の手にも負えないな

ちなみに俺のところでそのコードをそのまま実行したら
501 Protocol scheme 'aaa.aaa.aaa' is not supported
と表示されたよ
813811:04/04/19 01:37 ID:???
さっきは何も表示されなかったはずなのに、も一度やってみたら、
501 Protocol scheme ' ' is not supported
だそうで。
プロキシのアドレスにスキームhttp://を追加したらうまくいきました
てかHTTP::Lite使った方がいいじゃん
失礼しましたm_ _m
814nobodyさん:04/04/19 01:45 ID:dIBR14RC
perlでのhttpアクセスにおいてリファラを任意に設定することは
できないのですか?少し前質問スレで無理って結論されていた
のですが、本当に無理なのですか?
身近なところでiriaなんかもリファラ設定できますよね?
あと、win32api使えばできたような・・・・
815nobodyさん:04/04/19 02:03 ID:???
>>814
できます
816nobodyさん:04/04/19 07:23 ID:???
>>814
プロキシかブラウザを作るしか。

(IEコンポーネントを利用した等の)ブラウザ作ればいくらでも可能。
CGIじゃないけど。
817814:04/04/19 09:29 ID:???
>>815さん、それはperlだけで可能ということですか?
具体的にどうすればよいのでしょうか?プロキシを作ればできるという意味ですか?
それともソケットをいじるだけでできるものなのですか?

>>816さん、できればperl単体でやりたいのですが、なんとかならんでしょうか・・・
818nobodyさん:04/04/19 10:45 ID:???
ん?
Referer: ヘッダ付ければそれで済むことやん。
819nobodyさん:04/04/19 12:06 ID:???
>>816
httpの仕様をよく勉強しましょうね
820814:04/04/19 12:37 ID:???
>>818
その通りでした--;
一連の流れでてっきりperlではリクエストヘッダいじれないものだとばかり・・・・
http://member.nifty.ne.jp/hippo2000/perltips/HTTP/Request.html
↑らへんを参考にやればちゃんとできました。
use LWP::UserAgent;
require HTTP::Headers;
$ua = LWP::UserAgent->new;
$h = new HTTP::Headers;
$h->user_agent('momomo');
$h->referer('http:://localhost.com/');
$req = HTTP::Request->new(GET,'http://www.taruo.net/e/?',$h); #確認用に診断くんへアクセス
$res = $ua->request($req);
でも一つ分からないことがありますので最後に質問させてください。
解説ではHTTP::Requestオブジェクトの生成時に指定する引数の3番目にHTTP::Headersオブジェクト
へのリファレンスを指定せよとあったのですが、\$hとしたらエラーになってしまいました。\をはずした
らうまくいきましたが、これって問題ないのですか?それとも僕の頭がおかしくて勘違いしてる?
821nobodyさん:04/04/19 12:57 ID:???
>>820
おかしくはないけれども後者。リファレンスのリファレンスだからね(^・^)チュッ
822814:04/04/19 13:18 ID:???
>>821
$hはもともとリファレンスだったのですね。
よく分かりました。ありがとうございます。
・・・・・・ブチュ
823814:04/04/19 14:53 ID:???
何度もすみませぬ。
LWPを使ったアクセスを診断くんで確認したところHTTP_TEなる環境変数を
吐いているようで、んでもってHTTP_TEはプロキシ判定材料の一つなそうな。
もともとwebや掲示板等を巡回するようなツールを想定していたのですが、
こんなものを吐いていたら一部の厳格なプロキシはじきを通れません><
で、消してしまおうと思い。
$h->remove_header('te');
の一文を挿入したのですが、消えてくれません。書き方がまずいのかと思い、
teをHTTP_TEにしてみましたが変化なし、別の環境変数(referer等)はちゃんと
消せました。(user_agentは無理でしたが(そらそうか))
アドバイスお願いします。
824796:04/04/19 15:31 ID:???
「このページは他人に見られることのないように保護をされています。」

っていう通販HPの注文ページを見かけますが、私も自分のHPに保護をしたいページ
があるのでできるように勉強したいのですが、何について勉強すればいいのかわかりません。
今までhtml,javascript,perl等はいろんなホームページを回って勉強しましたので
今回もどこかのHPで勉強しようと思ってますが、どこかおすすめありませんか?
なにぶんどんな技術なのか言語がなんなのかさっぱりわかりませんので、どうゆう
キーワードで検索をかければいいかわかりません。どうぞよろしくお願いします。
825nobodyさん:04/04/19 15:49 ID:uFMZjudZ
>>824
https ssl
826nobodyさん:04/04/19 15:52 ID:???
>>823
俺も同じことやろうとして、消せなかったんでめんどくさいけどSocketモジュール使った。
消す方法があるのなら俺も知りたい。
827nobodyさん:04/04/19 16:59 ID:???
>>823

$h = new HTTP::Headers;
sub HTTP::Headers::AUTOLOAD {
(shift->_header($1, @_))[0] if $HTTP::Headers::AUTOLOAD =~ /::([a-z_]\w+)$/;
}
$h->te('');
$h->chubou('教えてください');
$h->kami('俺にまかせろ');
$h->chosakuken('消すよ♪');

$ENV{'HTTP_TE'}をundefにしたければHeaders.pm書き換えないと無理っぽい
828nobodyさん:04/04/19 17:06 ID:???
sub remove_header
{
 my($self, @fields) = @_;
 my $field;
 my @values;
 foreach $field (@fields) {
  $field =~ tr/_/-/ if $TRANSLATE_UNDERSCORE;
  my $v = delete $self->{lc $field};
  push(@values, ref($v) ? @$v : $v) if defined $v;
 }
 return @values;
}

だそうです。。。
829796:04/04/19 18:32 ID:???
>>825
ありがとうございます。
ところで例えばp1で住所等個人情報入力フォームがあり
p2で入力した内容の確認ができ、p3でそれを送信するといった場合に、
p1で入力された情報をp3まで引き継ぐ必要があるわけですが、どうやって
その入力データの引き継ぎをするのが理想的でしょうか?私が今できる事と言ったら
hiddenかcookieを使っての引継ぎくらいですが、セキュリティ的にどちらでするべきか
迷っています。どちらにしろSSLで保護はしますので安全だろうと思ってますが自信がもてないので
アドバイスお願いします。
cookieの場合ブラウザに個人情報がブラウザが閉じるまで?もしくは任意の時間残ってしまいますよね?
hiddenはソースを開けば見れる。←これは問題ないですよね?
830816:04/04/19 19:23 ID:???
>>814
質問スレの流れからrefererを偽装する話だと思ったら、
クライアントを作る話か。こんちくしょうって感じ。
以下、UserAgentバージョン2.024で動作したスクリプト。

use LWP::UserAgent;
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, ('SendTE' => 0));

my $ua = LWP::UserAgent->new(agent=>'My-crawler/1.0');

my $url = 'http://192.168.0.11/~test1/env.cgi';
my $referer = 'http://example.net';

my $response = $ua->get($url, referer=>$referer);
($response->is_success) or die 'response: ',
$response->code, ' ', $response->message;
print $response->content;
exit;

# httpが分かれば、直接IO::Socket::INETの方が便利。

>>819
もう一度rfc2616を読んでおくよ。
831816:04/04/19 19:26 ID:???
あ、urlを替えるの忘れてた。
適宜変更してね。
832814:04/04/19 21:17 ID:???
>>830
できました!本当にありがとうございました!もうちょっといじってからSocket
でもやってみようと思います(無理か・・・・w
refererの存在って例のITmediaの一件以来かどうかはしらないけどいまいち
存在意義がないような・・・出力をクライアントに依存するせいでいくらでも偽装
できるし、そもそも最近のセキュリティツールはreferer自体吐かないようになっ
てるのも多いし。refererを何かの判定に使おうとしたら結局ユーザビリティ低下
させるだけなのかな。
833nobodyさん:04/04/19 21:41 ID:???
>>829
あのさぁ、この前紹介したページ見た?
というか、Webセキュリティについて何も知らないのが明らか
なんだから、こんなところで一つ一つ質問していないで、
一から勉強しなおせ。

今のまま個別の実装の仕方を覚えたところで穴だらけの
駄目通販サイトができるだけ。
まぁ、素人の作った通販サイトなんてそんなもんだが。
834796:04/04/19 23:10 ID:???
>>833もちろんありがたく見させてもらってます。htmlの勉強始めてから1ヶ月
くらいで、勉強自体はずっと進行形です。HPとかは一方的なのでわかったり
わからなかったりするので、ここで行き詰まった部分のアドバイスをもらうと
他のわからなかった部分も理解できたりするもので。2chってhow toのいい掲示板だなあ
と思ってましたが、あまりにも私の話はレベルが低すぎて迷惑ですかね。
レベル的に軽いスレ違いですね;私くらいの人間が行っても迷惑にならないスレって
ありますか?
835nobodyさん:04/04/20 15:07 ID:???
>>834
ありません。まず日本語勉強してきてね。
836nobodyさん:04/04/20 17:31 ID:???
>>834
趣味でやってるようなものならともかく、通販みたいに商売でやるものを
素人がわからないで手を出すなよ。
金を払って作ってもらったものを参考にとか、仕組みを完全に理解するまで
勉強してからやれよ。
837nobodyさん:04/04/20 17:42 ID:???
サイトやスクリプトの「素人っぽさ」って、案外簡単に感づかれるよ。
「絶対に誰にも何も聞かずに自分ですべて調べて1からシステムを構築できる」レベルになるまで
そういうのには手を出さないほうがいい。
838nobodyさん:04/04/20 20:19 ID:???
>>837
素人っぽさってどう言う所で判断してる?
俺の場合、何がどうと言う事ではなくエディタで開いて3秒くらいで
ゴミ箱行きかどうか決めてるけど。
839nobodyさん:04/04/20 23:11 ID:???
use strictだろ。 Perlなら。
840nobodyさん:04/04/21 00:43 ID:???
確かにモジュール関係の記述は目安になるな
841nobodyさん:04/04/21 23:43 ID:???
>>829
そういう重要な情報はサーバーサイド(通常はDB)に保存し、
Cookieやhiddenにはそれにアクセスするためのキー情報のみを
セットする。そういうのを一般的にセッション管理という。
総当り方式等でセッションをハイジャックされないような仕掛けも必要。
迂闊に手を出さない方が良いと思う。
842796:04/04/22 10:47 ID:???
おはようございます。完全に勉強してからつくるではなくて、勉強しながらつくって
完全に理解できたときに完成と認めてスタートさせようと思ってます。とりあえず
CGI部分の機能はできた?ので、今はちょっとデザイン部分をやってます。
>>829ありがとうございます。凄い参考になります。その路線をがんばって勉強します。
本当ありがとうございます。
843nobodyさん:04/04/22 11:03 ID:???
>>842
もう来るな
844nobodyさん:04/04/22 13:24 ID:???
>>843
真面目に勉強したなら、もう来る必要がなくなくなるからご安心を(w
845nobodyさん:04/04/23 14:57 ID:???
自作モジュール使ったCGIを配布、もしくは設置したけど
モジュールのソースを公開したくない時ってどうしてます?
(モジュールファイルをアップしたくない)

自分管理のサーバ内にモジュールを置いておいて、
外部サーバからLWPでGETさせてevalで利用ってのを考えてみたけど…。
でもそれってCGIソースからモジュールのURL知られてDLされたらおしまいか。
使い勝手も悪そうだし、毎回負荷がかかっちゃうのも問題かー。うーむ。
846nobodyさん:04/04/23 15:03 ID:???
>>845
誰も見ないから安心して公開してください。
847845:04/04/23 15:09 ID:???
>>846
それ言われるとお終い。
848nobodyさん:04/04/23 15:51 ID:???
なんか「ホームページのソースを見せたくない」に似てるな。
849nobodyさん:04/04/23 17:01 ID:???
そんなに恥ずかしいソースを書いてるのか
850nobodyさん:04/04/23 17:25 ID:???
perl の場合なら

1. perlcc でコンパイルして配布する
2. perlapp でバイナリ化して配布する

どっちにしてもポータビリティは無くなるが
851nobodyさん:04/04/24 15:57 ID:RLkwArNt
質問があります。

ttp://i-meishi.jp/design/flower.html

ここのように一つデザインを選んだら、次の注文フォームで
自動的にデザイン番号が入力されるようにするにはどうすれ
ばいいのですか?
フツーのフォームメールCGIでできますか?
よろしくお願いします。
852nobodyさん:04/04/24 16:44 ID:???
値を渡せ。さすれば道は開けるであろう。
853851:04/04/24 16:52 ID:???
>>852

値を渡すとは

****.cgi?****=****

みたいなヤツですよね?
もう少し具体的に教えていただけないでしょうか?
厨ですみません・・・
854サバティさん:04/04/24 21:19 ID:???
>>845
RPC でぐぐっちょみ☆
855nobodyさん:04/04/24 23:13 ID:???
>>853
わからないなら無理だからあきらめな
856851:04/04/25 07:05 ID:+y7H56mQ
>>855
どうも違うみたいですね。
ページから別ページのフォームの特定テキストボックスに値を渡すにはどうすればいいのでしょうか?
解説しているページなどあれば教えていただけるとうれしいです。
857nobodyさん:04/04/25 07:59 ID:???
>856
受け取った方のCGI(のフォーム)でそのvalueをセットしておく?
858851:04/04/25 09:28 ID:???
>>857
そうすると商品(デザイン)の数だけフォームを用意しないといけませんよね?
なんかスマートでないというか・・・
859nobodyさん:04/04/25 09:47 ID:???
>>851=858
ど素人は一つ一つ聞かないで、一から勉強しれ。
藻前が必要としていることが書いてあるCGIの本なんて2000円もしない。
Web上にもいくらでも資料がある。

>>1をよく読んでからどっか行け。
860nobodyさん:04/04/25 13:00 ID:???
>>859
まあまあ、それでなくても過疎板なんだからお客さんは大事にしないと…

>>858
基本中の基本だからCGIの勉強をしてれば自ずとわかるようになる。
2ちゃんで安易に回答を得ることは、自分の成長の芽を摘む事とさも似たり。
精進したまえ。
861nobodyさん:04/04/25 13:19 ID:???
>>851
似たようなCGIを探している人がいたから、こっちで一緒に探したら?

【CGI】こんなCGI探してますver.13
http://pc5.2ch.net/test/read.cgi/hp/1081608108/156
862851:04/04/25 18:15 ID:YwE1vg2P
>>861
それ私です。(^_^;
誰も心当たりがないみたいで・・・
863nobodyさん:04/05/01 12:39 ID:???
携帯3キャリア対応のCGIを作ろうと思ってるんですが、
モバイル対応CGI作成における情報・TIPSが
載ってるサイトを知ってる人いますかね??

書籍類も無いみたいだし…
864nobodyさん:04/05/01 12:42 ID:???
いろんなサイトにちょっとずつ情報が散らばってるから、
それを自分で調査、収集、整理して利用すべし。
865nobodyさん:04/05/01 14:41 ID:???
866nobodyさん:04/05/02 22:56 ID:VyPHEPB5
特定のディレクトリだけ公開したいんだけど
ディレクトリ内のファイルをリスト化してリンク貼ってくれるような
スクリプトありませんか?
867nobodyさん:04/05/02 23:11 ID:???
mod_autoindex

<Direcrory "/path/to/hoge">
Options Index
</Directory>
868nobodyさん:04/05/03 02:56 ID:rRSmxfOR
質問。
CGIで数枚の画像を重ねて、それを一枚の画像に結合することは可能でしょうか。
CSSで画像を重ねることはできました。
アバターの様にいくつか画像を選んでそれを一枚の画像にして表示させたいんです。
ぐぐったり、ヤホージャパンアバターのhtmlソースを確認したところ、外部で処理してるようなのです。
CGI、java、PHP、、、etc、どれを使用して処理しているか解かりませんが・・・(汗
869nobodyさん:04/05/03 03:51 ID:???
>>868
一番簡単なのはFLASHで作る方法。
870nobodyさん:04/05/03 04:34 ID:???
まあ ImageMagick が定石だろうな
871863:04/05/03 11:59 ID:???
>>864,865

情報ありがとう。
公式ページはチェックしてるけど、
CGI開発における情報ってあんまりだったので。。
地道にグぐるしかないかもね。
thx
872nobodyさん:04/05/03 12:30 ID:???
そもそも CGI とは関係ない罠。
873nobodyさん:04/05/08 15:00 ID:vSbIGN9w
@files = glob("./*.*");
foreach $key (@files) { print "<a href=\"$key\">$key</a><br>\n";}

動かしてる鯖は
WinXP Pro/Apache2/ActivePerl/ZoneAlarm

こんな感じでディレクトリ内にあるファイルを
リスト化してリンクしてくれるモノを作ってみたんだが
実際にそのリンクをクリックするとファイルがサイト内にないというような
警告がでてなにもできない
このスクリプトのどこか間違ってますかね?
874nobodyさん:04/05/08 15:33 ID:???
>>873
スレ違い
875nobodyさん:04/05/10 16:02 ID:aYuK5bou
CGIで画像を出力したいのですが、i-mode(P505i)では下記の記述で
出力されるんですが、どうもAUとvodafoneでは表示されないようです。
下はJPEG画像の出力ソースです。なぜなんでしょうか?


open(IN,"ファイル名") || &Error("エラー:ファイル名");

print "Content-type: image/jpg\n\n";

print while (<IN>);
close IN;

すみませんがよろしくお願いします。
876nobodyさん:04/05/10 16:19 ID:???
>>875
image/jpegじゃないの
877875:04/05/10 16:22 ID:aYuK5bou
image/jpgではだめなのですか?
すみません、無知なもので・・・
ドコモはimage/jpgでも表示できるんですが、
image/jpegにしたほうが良いようですね。
ありがとうございました。さっそく直してみます。
878nobodyさん:04/05/11 06:06 ID:???
拡張子とMIMEタイプは違う。
image/jpg なんていうMIMEタイプは登録されていない。
http://www.iana.org/assignments/media-types/image/
879nobodyさん:04/05/11 06:20 ID:???
だね。
Content-type: text/txt\n\n;
なんて書かないのと同じ。
880nobodyさん:04/05/11 10:54 ID:???
たのむから仕事でコード書くときは
CGI、CGI::Sessionなどのモジュールを利用してください。
881nobodyさん:04/05/11 19:06 ID:iWNmrZA1
CGIからMHTを出力したいのですが、うまくいきません。
IEではテキストがそのまま表示されてしまいます。
名前をつけて保存すると、開けるようになるので、
バイナリは一致しているはずなのですが。

MHTのMIMEタイプを調べて、
Content-type: message/rfc822\n\n
を出力しているのですが、これではIEが解釈してくれないのでしょうか。
882nobodyさん:04/05/11 19:48 ID:Ax2GxUUe
抽選cgiを作りたいんです。
内容として一日一回 当選を出す
日付が変わるとリセットされる
プログラム作って頂けませんか
883nobodyさん:04/05/11 19:55 ID:???
>>882
ま、すれちがいなわけなんだが…
884nobodyさん:04/05/11 19:56 ID:???
ま、金くれるんならやってもいいぞ。
885882:04/05/11 20:15 ID:Ax2GxUUe
スレ違いすいません。
886nobodyさん:04/05/15 19:58 ID:AknjjuaO
質問というか相談です。
cgi習得のため日記を書き込む&表示するcgiをPerlで作っているのですが、
ログの整理方法で悩んでいます。

全日記データ(1件1kb程度?)を単一ファイルにすれば、データ壊れた時恐いなあ、とか
逆に1日分を1ファイルにしたらクラスタとかの関係でめちゃくちゃHDD圧迫するんじゃないか・・・
などと迷っております。

現在はdiarylog/200405.datとして1月1ファイルあたりにしようかなと考えておりますが
何らかの危険回避のために意識した方がよいもの、
後々便利になるものなどがありましたらご教授いただけませんか。
主観込み込みで構いませんので後押しをお願いします。
887nobodyさん:04/05/15 20:07 ID:???
>>886
バックアップすればイイのこと。
データを書き込む前にログファイルをどっかにコピーするとか、sendmailで自分宛に送るとか。
888nobodyさん:04/05/15 20:10 ID:???
つけたし。
レン鯖だとすると全データ飛ばしは有り得る話なので、バックアップは自動だろうが手動だろうが必ずしておくべきことだ。
自分のデータは自分で守ろう。
889nobodyさん:04/05/15 20:37 ID:???
>>886
ログにDBM使うのはどうかな?
ハッシュで比較的高速にアクセスできるから1ファイル構成でも、
最近と過去とで2ファイル構成でも悪くない。

バックアップはもちろん必要だけど。
890nobodyさん:04/05/15 20:42 ID:???
>>889
勉強中の初心者に何を勧めてんのよw
891nobodyさん:04/05/15 20:57 ID:???
>>889
唐突でワラタ
892nobodyさん:04/05/15 21:05 ID:???
>>886
他人に自作スクリプトを評価してもらうのが効率のよい習得方法だな。
自分が「これはいい」と思ってた部分が実は糞みそだったりするからな。

ほれ
自作CGIを評価するスレ
http://pc5.2ch.net/test/read.cgi/php/1049514428/l50
893886:04/05/15 22:52 ID:AknjjuaO
みなさまアドバイスありがとうございます!

バックアップ(コピー)をとれば単一ファイルにでき手軽そうですね。

そこで新たに疑問が。
2004年5月15日の日記を読むにはファイル全て読むことになりますよね。
その前日もついでに読むと再びファイル全て読みに行くことになると思いますが、
不要な部分も読むというロスは気にしたほうが良いのでしょうか?
また、みなさんなら何kbくらいのロスからログ形式(もしくは読み取り方法?)の変更を考えますか?

もう一つ似たようなことで、
読み取り専用で開く場合もファイルロック(やバックアップ)をしたほうがいいのでしょうか?
書き込む人は管理者の1人を想定しており、処理に多少時間が掛かっても構わないのですが、
読む場合は[翌日の日記へ>>]ボタンを2秒1回くらいでぽちぽち押しても耐えられるものを作りたいのです。

---
DBMというのはググってもよく理解できず
まだ敷居は高そうですが一応心に留めておきます。

まだファイル読み書き部分も作っていませんが、
日記として機能できたら評価スレに行ってみますね。
894nobodyさん:04/05/16 12:50 ID:???
CGI初心者です。
あるCGIから別のCGIにPOSTするにはどうしたらよいですか?
また、その際に送信側でパラメータのセット、
受信側で取得する方法も教えてください。
どなたかお知恵を。
895nobodyさん:04/05/16 12:51 ID:???
↑ちなみにPerlのバージョンが古いので
CGI.pmモジュールは使えません。
896nobodyさん:04/05/16 12:56 ID:???
897nobodyさん:04/05/16 13:07 ID:???
>>896
ありがとうございます。
しかし、残念ながらここのサンプルは
モジュールを使っているようです。
cgi-lib.plを使って同じことはできないのでしょうか?
898nobodyさん:04/05/16 13:41 ID:???
>>897
サンプルを丸写ししろという意味でなく、そういったサイトで HTTP や
CGI の基本を勉強しろという意味なんだがな。それがいやなら
サンプルが動く環境を整えるか、金払って作ってもらえ。
899nobodyさん:04/05/16 14:04 ID:???
裏を返せばSocket使えない環境しか与えられてない、というのは
使うのを薦められない何らかの理由があると考えていいんじゃね?
900nobodyさん:04/05/16 15:55 ID:???
CGI.pm使ってPOSTする方法を教えてください。
901nobodyさん:04/05/16 16:28 ID:???
>>900
CGI.pmはCGIアプリのためのモジュールだから用途が違う。(POSTをするじゃなくてPOSTを受ける方)

自分からPOSTするにはLWP系のモジュールが便利。
ttp://search.cpan.org/~gaas/libwww-perl/
902nobodyさん:04/05/16 16:46 ID:???
>>901
ありがとうございます!
903886:04/05/17 09:01 ID:bRPhhdmX
日記cgiがどうのと質問した>886(=>893)です。

「(CGI-Perl)読み取り専用で開く場合ファイルロックは必要か」
という疑問は、検索の仕方が悪いのか解説されたページが見付かりません。

ファイルが壊れるというのは物理的な干渉でなく、
時間差の引き起こす上書きだという認識なので読み取り専用の場合は気にする必要が無いと思うのです。
この考えは間違っていますか?

スレや板を間違ってる気ならしてきました。
904nobodyさん:04/05/17 09:41 ID:???
905886:04/05/17 10:06 ID:???
>>904
共有ロックと排他ロックですか。
分かりやすそうなページがたくさんヒットしました。
今日中に解決できそうです。
http://pc5.2ch.net/test/read.cgi/php/1024795138/
google経由でこんなスレも見つけたので今日帰ってからでも読んでみます。
ありがとうございました!
906nobodyさん:04/05/17 15:28 ID:???
>>905
Data::Dunper 結構便利だよね。
DBM紹介して、初心者に紹介するもんじゃねえって言われてた人いたけど、
ま、これも似たようなもんかもしれんけど、
DB使うほどもんでなし、かといってフラットファイルだとかったるいってのは

$database = do "$log_file" or die "$log_file: $!\n";
とかやって取り込み、
print LOG Dumper($database );
とかやってる。

結構お手軽。
907886:04/05/17 17:39 ID:???
>>906
色々調べてみました。Data::Dumperのようですね。
便利そうなのですがファイル構造はせいぜい2次元ですし、
1行1レコード、先頭の日付8桁の数字をキーくらいにしか考えておらず
このスクリプトではDumperのお世話になるほどでは無いかなと感じました。
情報ありがとうございます。
908nobodyさん:04/05/19 17:04 ID:???
>>907
> ファイル構造はせいぜい2次元

ふーん、そうなの?
909886:04/05/20 15:54 ID:???
>>908
はい。
ファイルの中身の構造はcsvのようにカンマと改行で分けています。
もし語弊がありましたらすみません。
910nobodyさん:04/05/20 21:28 ID:???
>>909
あ、いやいや、そっちの扱うデータが、って事なのね。納得。
ただ、joinしたりsplitしたりして変数に格納したり、とかするんなら、
やっぱ便利だと思うけど、、、Data::Dumper
僕はね。
911nobodyさん:04/05/20 21:41 ID:???
>>910
でも、doするとなると、CGIなら少し危険になりますね。
SuExecじゃなければ、また...
912nobodyさん:04/05/20 22:02 ID:???
だからDBMでいいやん。排他ロックもできるのあるし。
913nobodyさん:04/05/20 23:20 ID:???
>>912
うるせぇぞ本7
914nobodyさん:04/05/24 13:36 ID:guXgj1Rh
こんなCGI探してますスレッド ver.9
http://pc2.2ch.net/test/read.cgi/php/1051456859/

が落ちていて、新しいスレがないようなので、
すみませんがこちらに書かせていただきます。

よく2chでのやり取りに捨てアドが使われますが、
これを手軽にするために公開鍵暗号を使ったらどうか、と考えました。
概要は

アイディアとしては宅配ボックスのようなもの。
ネットの掲示板のように、誰でも利用でき、
俗に捨てアドと言われるような取得の手間はかからない。

利用者が秘密鍵Aを決めると、自動的に公開鍵Bを生成し、
それをメールや掲示板に貼り付ける。

利用者にメッセージを送りたい人はそのURLをクリックすると
公開鍵Bで暗号化したものをCGIにアップできる。

アップされたデータそのものは誰でも見ることができるが、
公開鍵Bではそれは復元できず、秘密鍵Aを持つ人しか読めない。

このようなものをご存知ありませんか。
915nobodyさん:04/05/24 14:10 ID:???
公開鍵暗号とか面倒くさいことを言わなくても、
普通の鍵つきメッセージボックスでいいんじゃない?

1.受け取りたい人がメッセージボックスを作成、パスを決める
2.送りたい人が投函する
3.主がパスで読む、他の人は読めない

目的は達成できそうな予感
916nobodyさん:04/05/24 16:04 ID:???
>>914
【CGI】こんなCGI探してますver.13
http://pc5.2ch.net/test/read.cgi/hp/1081608108/
917nobodyさん:04/05/25 09:10 ID:???
ていうか2ショットチャットで十分
918nobodyさん:04/05/27 23:32 ID:???
フォームで大量のテキストを受け取りたいのですが、
一定量を超えるとボタンを押しても切り替わりません。
どうやればいいのでしょう?
919nobodyさん:04/05/28 01:32 ID:???
>>918
どうやっているのでしょう?
920nobodyさん:04/05/28 11:00 ID:???
どうやってるか分からんからなんとも言えんが、
もしGETで受け取ってるならPOSTに直せ。
921nobodyさん:04/06/01 12:28 ID:???
http://foo/bar/baz
というURLを受け取ってそれがディレクトリなのかファイルなのかを知るのはどうやるの。
922nobodyさん:04/06/01 18:51 ID:???
923nobodyさん:04/06/12 23:57 ID:H/qBX9ep
1. 一秒間に一度文字列を出力する。
2. 形式は"行番号 本文"
3. ブラウザでテキストを選択すると行番号は選択されずに本文を複数行選択できる。
ということをやりたいのですが可能でしょうか。
普通に<PRE>などで出力すると1.は可能で3.が不可能に、
テーブルを使うと3.は可能で1.が不可能になってしまいます。
924nobodyさん:04/06/13 00:54 ID:???
>>923
1.の動作はむっちゃブラウザ依存じゃん。3.もかな?
行番号の形式が許せるなら<OL>(Ordered List)はいけるかも。
925nobodyさん:04/06/13 01:12 ID:???
>>923
板違い
926nobodyさん:04/06/13 13:34 ID:???
できるけど、サーバ負荷が迷惑
927nobodyさん:04/06/13 15:57 ID:???
そんなことをHTTPでやろうとするな
928nobodyさん:04/06/13 18:07 ID:???
ブラウザのタイムアウトで切られるのが落ち。
929nobodyさん:04/06/28 17:33 ID:???
Javascriptで文字列を一括格納して、一秒ごとに出力する処理のほうがいいんじゃ?
すんげー見た目悪いけど、3.は<TEXTAREA>を二つ使って、片方は行番号、もう片方に本文を出力すれば、
行番号は選択できんようになるが。
ダサいけどな。
お前さんが何をしたいのかがわからん。
930nobodyさん:04/06/30 18:44 ID:???
>>923
JavaScriptならできる。
931nobodyさん:04/07/05 06:22 ID:KmrVPKaj
SSIの話題ってどこですれば良いの?
932nobodyさん:04/07/05 11:46 ID:???
GET と POST の違いで、GETは送信できる内容の長さに制限がある、
との記述を見かけますが、これは何による制限でしょうか?
HTML1.1のRFCを読みましたがそのような記述はないようです。
それともそのような制限はないということですか?
933932:04/07/05 11:51 ID:jPcBhI9p
age
934nobodyさん:04/07/05 12:23 ID:???
>HTML1.1のRFCを読みましたがそのような記述はないようです。
935nobodyさん:04/07/05 12:29 ID:???
POST/GETの違いと言うより
URLとして許容される最大長、という話だと思いますが、
私も以前RFCなどを調べてみて結局よくわからなかった経験があります。

Specification ではなく実装上の制限としては、
Internet Explorer で扱える URL の最大長は 2,083 character だそうです
(MSDN Support Q208427)。
httpサーバや proxyサーバにはこれより短い制限で実装されているものがあるかもしれません。
936nobodyさん:04/07/05 15:35 ID:???
>>932
標準としてどうなってるかはHTTP1.1(RFC2616)の3.2.1参照。

結局HTTP1.1としては制限はないことになっているが、世の中の
clientやproxyが扱えないと意味はないのでそこは実装がどうなっ
てるかを調べるしかない。

安全側に振るならNoteにあるように255まででやめとけ。危ない方
に振る場合も935が紹介したIEの制限を越えるのはやめとくのが
いいだろう。独自clientしか使わないなら別だが。
937nobodyさん:04/07/05 18:15 ID:???
web鯖は1kb縛りが主流?
938nobodyさん:04/07/06 01:28 ID:???
ブラウザ側の制限も忘れないでね。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;208427
939nobodyさん:04/07/06 01:30 ID:???
誤爆した。スマソ。
940932:04/07/06 11:25 ID:???
>>934-939
どうもありがとう。
941nobodyさん:04/07/15 19:25 ID:???
<form>に関する質問です。

ユーザがページからログインする際に同時にチャットへログインさせて、
チャットのウィンドウを別ウィンドウで表示させようとしています。

フォームで、
名前 ________ パスワード _______ [ログイン]

と表示させているのですが、このログインのsubmitボタンを押すだけで
現在のページはログイン後の画面、同時に別ウィンドウでチャットのページを
開きたいのです。

<form>は入れ子にできず、submitボタンも一つしかつけられないらしいのですが、
このようなことは可能でしょうか?

よろしくお願いします。
942nobodyさん:04/07/15 19:42 ID:???
>>941
ログイン後の画面にonloadイベント仕込んで
window.open でチャットウインドをオープンさせる、
とかじゃねえか?
JavaScriptね
943941:04/07/15 19:48 ID:???
ちなみにsubmit 先のcgiは ログインページとチャットページで別です。

<from method="post" action="login.cgi">
...
<input type="submit" value="ログイン">
</form>

<from method="post" action="chat.cgi" target="chat">
...
<input type="submit" value="ログイン">
</form>

これだとどっちかしかできません...(T.T)
944nobodyさん:04/07/15 19:52 ID:???
だから、
login.cgiにonLoadイベント仕込んで
window.open でchat.cgiを別ウインドウで開く
とかじゃねえか?
JavaScriptね
945941:04/07/15 19:56 ID:???
>>942
ありがとうございます。

それだとチャットに入るためのウィンドウが開きますが、ログインまで
同時にしてくれないような気がしますが、違うでしょうか?

javascriptでウィンドウを開く時にcgiにname=""など送れますでしょうか?

# ん?
# window.open("chat.cgi?name=hogehoge&pass=hogehoge","chat")
# でオープンすればいいのかな?


946941:04/07/15 19:56 ID:???
入れ違いカキコですいません。
947942:04/07/15 20:07 ID:???
>>945
login.cgiでログイン処理してるわけで、
そのlogin.cgiが吐き出すHTMLに仕込んだJavaScriptに
onLoadイベント仕込んで別ウインドウにchat.cgiを開く。
IDだのなんだののchat.cgiに渡す引数はGETでどーぞ。
948紹介者:04/07/15 20:14 ID:9VjwcHkZ
http://popup15.tok2.com/home2/psycho1014/cgi-bin/ebs-eb/ebs.cgi
面白いんでやってみてください。
949941:04/07/15 20:46 ID:???
>>947
ちょっとそれでコーディングしてみたいと思います。
ありがとうございました。


950nobodyさん:04/07/30 23:50 ID:???
<form onsubmit="location.href='hoge'" target="_blank" ...> の方が楽じゃん?
951nobodyさん:04/07/30 23:58 ID:???
なんじゃそりゃ・・・
952nobodyさん:04/08/29 14:22 ID:???
今簡単な掲示板作りに挑戦してるんですが、
改行の事でつまづいてしまいました。

書き込みされた本文が改行を何回されたのか?
というのはどうやったら分るのでしょうか?

色々と試してみましたがどうも上手くいきません。
何か方法がありましたら何卒ご教授下さいませ。
953nobodyさん:04/08/29 14:58 ID:???
954nobodyさん:04/08/29 21:59 ID:???
>色々と試してみましたがどうも上手くいきません。

こう書くひとは実は何も試してないことが多い
試したんならどうやったのか、どううまくいかないのか書くこと
955nobodyさん:04/08/30 12:02 ID:???
>>954
禿同。
956nobodyさん:04/09/03 18:01 ID:???
オリジナルのエラーページを作成しています。
エラーの元になっているファイル/フォルダのURLをオリジナルのエラーページに表示させようと
http://<!--#echo var="SERVER_NAME" --><!--#echo var="REQUEST_URI" -->
というコマンドと環境変数を使っていますが、
オリジナルのエラーページのURLが表示されます

ステップサーバー(http://stepserver.jp)というレンタルサーバーを利用しており、
そのサポートに問合せましたが、上記の記述で問題ない、との回答でした。

何かアドバイス・ヒントを頂けないでしょうか?
957nobodyさん:04/09/04 00:01 ID:???
アパッチのドキュメントを撃墜して来い。話はそれからだ。
958nobodyさん:04/09/11 23:30:56 ID:???
ここの、
ttp://www.tryhp.net/oldscript.htm
books.lzhというリレー小説CGIをダウンロードして設置したんですが、何故か管理者メンテナンスモードがエラーになります。
パスはもちろん合っていますし、パーミッションも確認しましたが間違っているところはないです。
どうかご教授願えませんでしょうか?
959958:04/09/11 23:32:14 ID:???
因みに鯖はAAA!CAFEです
960nobodyさん:04/09/12 02:02:50 ID:???
作者に聞け。
それにスレ違い。
961958:04/09/12 02:14:00 ID:???
スレ違い失礼しました。
吊ってきます
962nobodyさん:04/09/22 14:51:15 ID:???
掲示板を改造してユーザが期限内に投稿した俳句にユーザがログインをして点数を
つけるように改造して使っています。
ログインすると俳句が200程表示され、各俳句に1-10点と未選択のradioボタンが
表示されます。はじめは未選択がcheckedとなっています。

今のところ、未選択が1つでもcheckedになっているとjavascriptでエラーを出し、
CGI内部でも、採点されてない俳句がありますとエラーを出すようにしています。

中には2時間もかけて採点したが、javascriptがonでなく、CGI側でエラーに
なり、ブラウザで戻るとタイムアウトで採点したものが全て消えるという
ことになってしまいます。

radioボタンをチェックしたものが消えない、又は記憶、復帰させる方法は
ないものでしょうか?













963nobodyさん:04/09/22 15:15:47 ID:???
200個も一気に採点させなければよろし
964962:04/09/22 16:32:04 ID:???
>>963
例えば50個ずつをページ遷移させてながら評価していくという意味でよろしい
でしょうか?

ログインと言ってもパスワードが合っているかチェックしているだけなので、
セッションなど利用していません。
できれば、セッションを使わない方法があればありがたいです。

radioボタンの状態をどこか(クッキーなりサーバなりローカルPCなり)に記憶する
ことはできないという認識はあっていますでしょうか?

965nobodyさん:04/09/22 17:15:46 ID:???
何でそういう認識につながるのか理解不能
966nobodyさん:04/09/22 19:23:55 ID:???
CGI側で、もう一度入力を促すフォームを出力すりゃいいじゃん
967962:04/09/22 19:33:12 ID:???
>>966
200個中198個採点してあったのが送信されてきたら、次のページでエラーを表示し
残り2個だけを表示して入力させるという形ですよね?

すごく良さそうです。シンプルなのに気が付きませんでした。


968nobodyさん:04/09/22 20:06:21 ID:???
>>967
それセッション管理してないでできるのか?
969962:04/09/22 22:13:10 ID:???
>>968
あー、できないですねー。

セッションまでいかず、ユーザ名と採点配分を記録した一時ファイルを作れば
できそうな気もします。セッションハイジャックとかはないと思うので。

やっぱりいい方法はないのですかねぇ。

# cookieがradioの状態を保持してくれればなぁ...

970nobodyさん:04/09/22 22:22:22 ID:???
>>969
( ゚Д゚)ハァ?
971nobodyさん:04/09/22 22:35:45 ID:???
普通にcookieに仕込めますが

>>970
2が揃いすぎですよ
972nobodyさん:04/09/23 01:44:04 ID:???
採点された物はhiddenで持ち越せばええやん。
973nobodyさん:04/09/23 01:57:46 ID:???
うん、そう。
別に整合性がとれなかったりセキュアにする必要もないし。
974962:04/09/23 11:44:50 ID:???
>>972
あ、そうか。なるほど、それでいけそうですね。
# 恥ずかしい…
975nobodyさん:04/09/24 08:56:49 ID:???
(・ε・)キニシナイ!!
976nobodyさん:04/09/26 22:57:31 ID:???
素人で悪いんですが、教えてください
このtたびc言語でカウンタを作ったんです
それで実装しようとWEB鯖のほうで実装しようとしたんですがうまくいきません
鯖側でのディレクトリ構造
〜(鯖アドレス)/www/(自分のhtml置き場所) からCGIを呼び出したいんですが
〜(鯖アドレス)/cgi/(cgiファイル置き場所) にCGIファイルを置かなければならないそうです
アドレスはhttp://(鯖アドレス)/~(自分ID)/(自分のhtml) というカンジです
この場合htmlからcgiを<--#exec >で呼び出すには、パスはどうしたらよいでしょうか
教えてください 鯖はLINUXです
977nobodyさん:04/09/27 00:18:00 ID:???
978 :04/09/29 17:30:58 ID:???

979nobodyさん:04/09/29 22:33:36 ID:rZcAXTiW
web上でlinuxのパスワードを変更させたり
メール転送設定(.forward)が出来るcgiって有りませんか?
980nobodyさん:04/10/06 11:31:10 ID:???
>>979
Webmin&Userminでどうだべ。
981nobodyさん:04/10/07 02:57:56 ID:???
あれはな
982nobodyさん:04/10/07 03:00:13 ID:???
どうでもいいがまだまだ次スレは必要なさそうだな。
983nobodyさん:04/10/07 18:37:48 ID:???
980を過ぎたら足切りがあるよ?
984nobodyさん:04/10/07 23:13:08 ID:???
もう立てたほうがいいな。
俺は立てられんから頼む。
985nobodyさん:04/10/07 23:55:17 ID:???
とりあえず1のテンプレ最新版
過去ログは任せた

CGIの運用に関する質問スレッドです。

※ CGIはウェブサーバ上でユーザプログラムを動作させるための仕組みであり、
Perl等特定の言語に依存するものではありません。

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

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

過去ログ・関連スレッドは>>2-10あたりに
986nobodyさん:04/10/08 01:56:06 ID:???
987nobodyさん:04/10/08 18:26:45 ID:???
質問させて下さい、言語はperlです
CGIで html を出力する時に、
<a href="hoge.html#jump"> と同じ事をやりたいのですが、
どうもやり方がわかりません

print 'content-type: text/haml', "\n";
print '<html><head><title>cgi test</title></head><body>'
print '<a name="#jump">jump先</a>';
print '</body></html>';
exit;

どなたか方法をご存知ありませんでしょうか
988nobodyさん:04/10/08 18:51:00 ID:???
>>987
> <a href="hoge.html#jump"> と同じ事をやりたいのですが、

意味不明。
http://seo.seo-search.com/seo/sample01.html

> print 'content-type: text/haml', "\n";

print "Content-Type: text/html; charset=Shift_JIS\n\n";
989nobodyさん:04/10/09 10:04:13 ID:???
次スレ立つまで保守
990nobodyさん:04/10/09 20:58:33 ID:???
さらに保守
991nobodyさん:04/10/09 22:51:04 ID:???
いや保守しなくていいからスレ立てろと。

俺は一昨日、昨日と試みたが無理だった。
992nobodyさん:04/10/09 23:41:53 ID:???
次スレ立てようと思うんだがスレタイはどうするんだ?
CGIだけど、なんか質問ある? Part 12
でいいか?
993nobodyさん:04/10/10 00:05:58 ID:???
次スレ

CGIだけど、なんか質問ある? Part 12
http://pc5.2ch.net/test/read.cgi/php/1097334246/
994nobodyさん:04/10/10 00:06:21 ID:???
役だってないから次スレはいらない。
Perl系の他のスレに自然吸収でいいだろ。空気嫁。
995nobodyさん
>>992
駄目に決まってるだろ。少しはログ嫁