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

CGI: Common Gateway Interface part 11

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん03/06/14 22:26ID:F9qlqHNx
CGIの運用に関する質問スレッドです。

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

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

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

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

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

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

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

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


やめた。で、本題↓

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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





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

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

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

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

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

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

0115nobodyさん03/07/08 11:49ID:???
本当にCGIの運用ネタを扱うなら、そんなに需要があるわけでも
ないんじゃない?
0116nobodyさん03/07/08 11:53ID:???
スレタイ1つでこんなにも変わるとはね。
0117nobodyさん03/07/08 11:55ID:???
今までいかにスレ違いの質問が多かったってことか。
0118nobodyさん03/07/08 12:38ID:???
そもそもCGIなんて話すことほとんどないしな。
CGI/1.1の話に花でも咲かせようか?
0119nobodyさん03/07/08 14:36ID:???
CGI/1.1 って何だよ?(藁
0120nobodyさん03/07/08 14:39ID:???
>>119
「何だよ」って何だよ?(藁
0121nobodyさん03/07/08 14:48ID:???
>>119
知らなかったらググる
0122nobodyさん03/07/08 15:19ID:???
PerlスレよりWebProg 初心者スレに流れてるんだよね
0123nobodyさん03/07/08 18:11ID:???
それは良い傾向。
「コーディング」の一言が効いたのだろうか。
0124nobodyさん03/07/09 11:34ID: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以下だとどうのこうのっていうのが、
あったかと記憶にあるのですが、
なんだったでしょうか?
0125nobodyさん03/07/09 11:39ID:???
>>124
激しくスレ違いな気がするが

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

言語はPerlです。

0151nobodyさん03/07/17 00:29ID:???
方法?Perlの書き方ならPerlスレに池!
0152nobodyさん03/07/17 00:35ID:???
>>150
マルチポスト?
http://pc2.2ch.net/test/read.cgi/php/1056730690/680
0153nobodyさん03/07/17 12:52ID:???
#! /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]

たったこれだけのスクリプトなのにリンク元によって動作が違うなんて
一体何が原因なのだろうか。
0154nobodyさん03/07/17 13:03ID:jvbzuuVH
Locationヘッダでリダイレクトするとき、
print "Location: http://www.foo.com/file/thanks.html\n\n";
でなく
print "Location: ../file/thanks.html\n\n";
のように相対パスで書くと、
確か、なんらかの条件(環境)のときに、
正常に動作しない・・・という記憶があるのですが、
どういう条件(環境)でしたっけ。
0155nobodyさん03/07/17 14:09ID:???
>>154
RFC2616 HTTP/1.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
絶対URIに「すべき」と書かれているのに、
相対URIを薦めているバカサイトはどこだ?晒してみ。
0156nobodyさん03/07/17 14:31ID:???
>>155
どうしたら>>154から「相対URIを薦めているバカサイト」などというものが読みとれるんだ?
0157nobodyさん03/07/17 14:45ID:???
>>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且つ相対パスな指定はどっち的にも不可。
0158nobodyさん03/07/17 15:51ID:???
>>157のリンク、パスワード入れないと見れないのねん。。(´・ω・`)ショボーン
0159nobodyさん03/07/17 16:09ID:???
>>158
書いてあるじゃん
016015803/07/17 16:17ID:???
ホントダ!!
_| ̄|○ 吊に逝てきまつ
016115403/07/18 00:09ID:???
>>155
他人がつくったcgiを改修せなあかんのですが、
そのcgiの中に、print "Location: ../file/thanks.html\n\n";
があったもんで・・・。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

の出力結果と

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

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

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

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

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

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

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

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

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

ヘッダを見るツールですが、「httpReq」でいいのでしょうか?
DLして使える状態にしました。
0185nobodyさん03/07/26 08:17ID:???
度々すいません。
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
0186nobodyさん03/07/26 11:57ID:???
質問するやつは名前にレス番を入れろよ
0187nobodyさん03/07/26 13:15ID:???
>>185
HTTP/1.1 400 Bad Request
はおかしいだろ。
perl(CGI?)の方はまだしもtext(HTML?)の方が400なのは変だ。
ブラウザでちゃんと見えてるのか?webmekuriのマニュアル嫁。
HTTP/1.1 200 OKになるまで帰ってくるな。
0188nobodyさん03/07/26 13:20ID:???
ってかアドレス晒せば一発。こっちから見てやるよ。
0189nobodyさん03/07/26 13:23ID:???
>>188
「やっぱりブラウザでも見れねぇぞ!」なんて言うどうでもいい情報のために何でそんな面倒くさいことせんといかんのだ。
0190nobodyさん03/07/26 13:33ID:???
>>189
別にそんなに面倒じゃないよ。
多分彼はツールの使い方を間違ってるんだよ。
もう説明するの面倒くさいからアドレス晒してくれた方が楽。
0191あぼーんNGNG
あぼーん
0192nobodyさん03/08/01 14:39ID: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とかの意味がよくわかりません
解説しているページがあったらお教え願います
0193あぼーんNGNG
あぼーん
0194nobodyさん03/08/01 14:57ID:???
url encode decode でぐぐれ
019519203/08/01 15:18ID:???
>>194
謝謝
0196あぼーんNGNG
あぼーん
0197あぼーんNGNG
あぼーん
0198あぼーんNGNG
あぼーん
019919203/08/01 18:41ID:dlG1lsZs
ぐぐってみたんですけど
漢字コードの変換の解説しか出ないんですけど
+ とか xがなんでててくるのかがわかりません
0200ponpon03/08/01 19:02ID:???
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の場合はエラーなく作成できました。
どなたか、わかる方教えてもらえないでしょうか?お願いします。
0201nobodyさん03/08/01 22:33ID:???
>>199
いや、書いてあるだろう……
ぐぐったんなら複数のページを参考にしてみれ。

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

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

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

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

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

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

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

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

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



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

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

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

すると、「同じ作業をやっていない。」なのかなー
0224nobodyさん03/08/04 16:46ID: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で)を行う。
}

こんな流れの処理です。
※次に続く
022522403/08/04 16:47ID: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にしたいのですが、
その方法がよくわかりません。
そもそも可能でしょうか。
022622403/08/04 16:49ID:CNOu+lh/
あ、言語はperlです。
0227nobodyさん03/08/04 17:17ID:???
>>226
Perl のみでは不可能。
削除できるんなら別にいらない機能かと思われ。
(ようするに誤送信する香具師が悪い)

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

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

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

やっぱりこの機能をあきらめるか、あるいはこの時点でとりあえず仮であれ
なんであれディスクに書き込む必要がある、って事ですね。
0229nobodyさん03/08/04 17:47ID:???
すいません、教えてください。
メールの添付ファイルを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( $_ );
}

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

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

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

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

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

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

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

皆様に幸あれ。
0253nobodyさん03/08/05 02:31ID:???
>>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から勉強しなおせ。
というか、人の話を聞かないようならプログラムやめろ。マジで。
025422403/08/05 02:56ID:???
>>253
聞いてるってばよ。
ありがとうございました。

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

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

というか、GDやらしってて、この程度の発想がでてこんのが不思議であるわけだが・・・
0256nobodyさん03/08/05 10:21ID:???
javascriptを使うのが楽な気がするが
0257nobodyさん03/08/05 12:08ID:???
>>254
おまえ、人間やめろ
0258nobodyさん03/08/05 13:34ID:???
なぁなぁ、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 ;
}

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

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

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

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

こんなイメージです。

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

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

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

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

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

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


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

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

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;

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

#! /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となると、両方ともダメでした。。。
0275nobodyさん03/08/05 21:06ID:???
いわゆる泥沼ってやつだな。
027626903/08/05 21:30ID:???
>>272
あと「戻る」で戻ってきた場合の処理もされてたかな。
0277初心者03/08/05 22:00ID:rGA945yM
こんばんわ 初心者です。
質問なんですが、自分iswebで無料ホームページを作っているのですが、
cgiについてよくわかりません。
パーミッションを変更してアップロードするだけでいいのですか?
0278nobodyさん03/08/05 22:17ID:???
>>277
まずは勉強しんしゃい。
http://dir.yahoo.co.jp/Computers_and_Internet/Internet/World_Wide_Web/CGI___Common_Gateway_Interface/Guides_and_Tutorials/
0279nobodyさん03/08/06 00:43ID:s3UpSeM9
>>263
フレームは使用禁止ですか?

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

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

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

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


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

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

▼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>


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

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

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

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

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

これで正解。いったいここは何の板なのかと思ってしまう・・・
0298nobodyさん03/08/08 11:27ID:???
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' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と言われてしまいます。どうすればいいのでしょうか?
0299nobodyさん03/08/08 13:13ID:???
>>298
perl foo.cgi key1=name=1&key2=name=2&key3=name=3&key4=name=4&key5=name=5
は?
0300nobodyさん03/08/08 17:35ID:???
ある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回の予定ですが)することを考えているのですが、
これに関して、何回までという制限はあるのでしょうか?

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

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

せっかくですから、>>304-305さんは好きなだけ車輪の再発明に勤しんでください。
0307nobodyさん03/08/10 11:18ID:???
>>306イチイチうるせーよ。半島にカエレ
0308nobodyさん03/08/10 11:50ID:???
307の負け。
お前は帰んなくていいから、デテクンナ
0309nobodyさん03/08/10 12:29ID:???
↑オマエモナ
0310nobodyさん03/08/10 14:17ID:???
↑オマエモナ
0311nobodyさん03/08/10 21:18ID:???
↑オマエモナ↓
0312nobodyさん03/08/11 00:31ID:???
お、俺も!?
0313nobodyさん03/08/11 00:49ID:???
(・∀・)ニヤニヤ
0314nobodyさん03/08/11 09:54ID:???
→オレモナ
0315nobodyさん03/08/11 16:44ID: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アクセス内で発行されたクッキーは、
そのアクセス内では読み取れないという、ことなんでしょうか?)

0316nobodyさん03/08/11 16:53ID:???
>>315
ヘッダが終了しないとクッキーがセットされないんじゃない?
つまり1行目でクッキーを送信してるけど、実際は3行目で\n\nとしてヘッダを
完結させてやるまでクッキーのセットが保留されているのかも。
クッキー読み込みを表示の直前にして再度試してみて。
031731603/08/11 17:02ID:???
書いてから気が付いたけど、クッキーの取得ってCGI実行時点での環境変数を
見てるだけだから、発行して同時に取得はできないのかもしれない。
発行した場合はクッキーを読まずに、その発行したデータをそのまま使うように
すればいいと思う。または$ENV{HTTP_COOKIE}を自分で書き換えちゃうとか。
0318nobodyさん03/08/11 17:34ID:???
>>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
0319nobodyさん03/08/11 19:33ID:2ChtRC4J
こちらはそれほど大きくはないですけれど
柔らかくて揉み心地のよさそうなオッパイの持ち主です。
上のお口と下のお口をフルに使っての4Pシーンは見所満載!
オマンコの奥深くに突き立てられていくチンチンが気持ちよさそうです。
無料ムービーはここから
http://www.exciteroom.com/
0320_03/08/11 19:44ID:???
http://homepage.mac.com/hiroyuki45/hankaku_b01.html
0321_03/08/11 19:45ID:???
http://homepage.mac.com/hiroyuki45/
0322_03/08/11 19:48ID:???
http://homepage.mac.com/hiroyuki45/hankaku09.html
032331503/08/11 23:16ID:???
>>316-318
なるほど、よく理解しました。
やっぱ、表面的な知識じゃ、こういうときぼろがでるね。

>>318
Cookie仕様書は英文で、なんとか読んでた(でも半分くらいしかわからず)んだけど、
日本語訳があったとはしらなんだ。ありがとうございます。
0324nobodyさん03/08/12 09:39ID:???
すいません、
<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フィールド内に書くときは、&で正しいかったかと思いますが・・・
0325nobodyさん03/08/12 09:57ID:???
&&&&&&&&&&&&&&&&  ←体育座りをしている人々
0326nobodyさん03/08/12 10:16ID:???
>>324
&amp;が正しい。
(アンパサンドは便宜的にいわゆる全角)

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

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

ってやると

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

ってなるのか(Apache)。
しかし、ブラウザでフォームの送信すると & で繋がってくるわけだから
別の文字にするのはなんか嫌だな。
0331nobodyさん03/08/12 15:57ID:???
最近はセミコロンが推奨されてますよ。
0332nobodyさん03/08/12 17:28ID:???
>>331
誰(どこの団体)が推奨してるの?
0333nobodyさん03/08/12 17:50ID:???
>>332 W3C
http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/appendix/notes.html#h-B.2.2
0334nobodyさん03/08/12 18:24ID:???
>>333
W3Cかよ……知らなかったよ_| ̄|○

じゃあ、アンパサンドとセミコロン両対応にせにゃならんてことか。
0335nobodyさん03/08/12 18:59ID:???
GETだけにしちゃえば、とりあえずアンパサンドは無視できるけど。
古い仕様はたぶんこの先もずっと引きずりつづけるから、面倒だね。
0336nobodyさん03/08/12 19:38ID:???
>>335
現状の殆どのブラウザはフォームの内容を送ってくるときにアンパサンドで繋ぐよ。
GETもPOSTも同じ。multipartは別だけど。
033732403/08/13 01:56ID:???
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) (以下略)
{でやってるんですが・・・
ネスケのバグなのか、あるいは自分のスクリプトがどっかおかしいのか。。。
033832403/08/13 01:57ID:???
かんじんなこと言うの忘れてた。
レスくれたみなさん、ありがとうございます。
W3Cがセミコロン推奨してるとは、しらなんだ・・・
033933103/08/13 02:04ID:???
>>338
俺そんなに嘘っぽかったかなあ。>>332
0340nobodyさん03/08/13 02:14ID:???
>>337
それはスクリプトじゃないのかい?
ネスケでもちゃんと動いてるよ
0341nobodyさん03/08/13 02:20ID:???
>>337
340に同じ。
「正常に変数をうけとってくれない」って、
具体的にどうなるのよ。

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

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

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

CGIモジュールを使わないにしても、
my @query = split(/[&;]/, $query);
んな風に書き換えるだけでいいから、移行も楽だし。
034632403/08/13 13:41ID:???
>>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
がただしいと思ったんですけど・・・
0347nobodyさん03/08/13 13:44ID:???
え?俺?
0348nobodyさん03/08/13 13:52ID:???
>>346
問題の切り分けをきっちりしないと、いつまで経っても進まんよ。
HTML上&amp;と書くのは正しいし、Navigator7.1で
他の人は問題ないって言っているよね。

最低限再現するソースを用意してみればいいんでない。
問題があると*思い込んでいる*箇所だけじゃなくて全部。
0349nobodyさん03/08/13 13:59ID:???
>>346
 区切り文字をアンパサンドからセミコロンに
変えても状況は変わらないの?
0350nobodyさん03/08/13 14:38ID:???
ちなみに
<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としては不正。
035132403/08/13 14:39ID:???
えっと、言語は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がクエリーストリングを受け取った瞬間?
035232403/08/13 14:45ID:???
あ、自分が >>351の後者で質問した内容、
1分差で、>>350さんが答えてくれましたね。
ありがとうございます。
RFC2396 さらっと見しましたが、とりあえず、理屈はわかりました。
これからじっくり読んでみます
0353nobodyさん03/08/13 14:57ID:???
とりあえず解答は出たね。
Netscape7.1の問題じゃなくて、>>324=>>351
スクリプトがおかしい。

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

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

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

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

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

よろしくお願いします。
0356nobodyさん03/08/13 16:08ID:???
>>355
スレちがーいー♪ >>1 嫁〜よ〜ぉっ
035735503/08/13 16:12ID:???
ごめんなさいです。
http://pc2.2ch.net/test/read.cgi/php/1059043704/l50
へ逝きます。
0358nobodyさん03/08/13 16:33ID:???
>>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/
0359nobodyさん03/08/13 18:47ID:???
&amp; を&amp; って書いている香具師へ

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

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

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

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

なるほど、これですごい納得しますた。ありがとうございました。
0369nobodyさん03/08/14 01:49ID:???
>>368
最初っから、JavaScript って言えよ。あほくさ。
0370nobodyさん03/08/14 01:53ID:???
>>369
>>368は最初から例示が駄目すぎだったね。
こっちもいらん手間かけたよ…。
0371nobodyさん03/08/14 10:43ID:???
(ちなみに、自分は>>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
を読んだものの、いまいち意味が理解できず・・・
0372nobodyさん03/08/14 12:55ID:???
クッキーの
Set-Cookie: $cookiename=$cookievalue; の$cookievalueの部分って、
文字長に制限はあるのでしょうか?
http://www.futomi.com/lecture/cookie/specification.html
にある仕様書を見る限り、なにも文字長については書いてないようですが。
037337103/08/14 13:15ID:???
すいません、自己レスですが、URLエンコードということの意味をわかってませんでした。
ただしくは、
<a href="affiliate.cgi?partner=http%3a%2f%2fwww.abc.net%2f&location=http%3a%2f%2fwww.foo.jp">りんく</a>
ですね、失礼しました。
0374nobodyさん03/08/14 20:13ID:???
>>371

HTMLは

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

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

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

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

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

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

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

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

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

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

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

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

すれ違いだったらすいません。
0388nobodyさん03/08/17 23:46ID:78eH/B6l
javascript でリファラをとって、cgi ヘ渡せ
0389nobodyさん03/08/17 23:47ID:78eH/B6l
>>385
気にしなくて良し。
0390nobodyさん03/08/17 23:57ID:???
>387
http://pc2.2ch.net/test/read.cgi/php/1060808783/171
マルポ
0391nobodyさん03/08/20 19:32ID: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">読書
のような形でがんばっていたような記憶があるのですが
気のせいでしょうか?

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

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

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

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

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

の処理をしてます。

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

環境依存なのでしょうか?
0401nobodyさん03/08/28 17:18ID:???
環境依存です。Cookieに対応していないブラウザでは読めません。
040240003/08/28 18:26ID:ER3uJlrJ
>>400
あ、ごめんなさい。
「クッキーに対応して、有効にしているブラウザ」の中でを条件に加えてください。
040340003/08/28 18:27ID:???
もとい、>>400じゃなく、>>401でした
0404nobodyさん03/08/28 22:09ID:???
読み込めないの?
試したの?
0405nobodyさん03/08/29 01:22ID:???
>>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
0406nobodyさん03/08/30 08:37ID:???
例を挙げるときは、example.comを使いましょう。
0407nobodyさん03/08/31 00:28ID:???
今、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 );

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

wget試してみます。
0443nobodyさん03/10/17 16:50ID:???
おお?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">
--
0444nobodyさん03/10/17 17:00ID:???
おまいら誰よ?元質問のやつはレス番で名乗れや
044543503/10/17 17:06ID:???
すいませんです。
で、Content-type: text/html の送出をスクリプトのなるべく前の
方に持ってきたら
Length: unspecified [text/html]
と表示されました。
これで問題ないかアクセスしてみてもらいます。

しかし、これはどういうわけでしょうか?
後学のためどなたかお分かりの方お教え下さい。
0446nobodyさん03/10/17 17:27ID:???
>>445
text/plainがスクリプト中のどこにも書かれてないか検索した?
0447nobodyさん03/10/17 17:32ID:???
1行づつずらしていけば見つかるよ... きっと... _ト ̄|○
044843503/10/17 17:35ID:???
>>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にもどこにもありませんでした。
0449nobodyさん03/10/17 21:16ID:???
微妙にスレ違いかもしんないけど、Sendmailで送るメールって第3者に見られる可能性ありありだよな。
大事な内容をCGIで送信するのにベストな方法ってありまつか?
0450nobodyさん03/10/17 21:34ID:???
一応CGIの質問なのでここでしていいのかどうか…
何が何だかわからないのでご存知の方いたらご教授願います。

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

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


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

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

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

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

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

0460nobodyさん03/10/19 00:13ID:???
メールデータを何らかの媒体に記録して手渡しする。
0461nobodyさん03/10/19 00:31ID:???
>>460
道中で襲われる
0462nobodyさん03/10/27 00:03ID:???
念力
0463nobodyさん03/10/27 10:59ID:???
メールなんてそんなに覗かれないよ
0464nobodyさん03/10/27 16:10ID:???
うん、そんなにはね
0465nobodyさん03/10/27 20:46ID:???
年賀状を覗かれる回数よりははるかに少ないだろうな。
0466nobodyさん03/10/29 12:37ID:aayFZnQs
formをenctype="multipart/form-data"で送信した場合
windowsでは\r\nContent-Type:となっているけどmacだと\rContent-Type:ってなるんですか?
0467nobodyさん03/10/29 12:41ID:???
そりゃmacだし・・・とか思ったんだが
仕様上は改行コードに依存せず
常に\r\nじゃないといけなかったかな?忘れた
0468nobodyさん03/10/29 12:52ID:???
HTTPの仕様は機種に依存しないよ
0469nobodyさん03/10/30 17:06ID:???
すいません、しつもそです。
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'} では取れませんよね…
0470nobodyさん03/10/30 19:58ID:???
if($ENV{'SCRIPT_NAME'} =~ m|^(/~[^/]+/)|){
  $path = 'http://' . $ENV{'HTTP_HOST'} . $1;
}else{
  $path = 'http://' . $ENV{'HTTP_HOST'} . '/';
}

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

言語は Perl らしいし置換で事が済むのならこの辺。
http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
0488nobodyさん03/11/02 12:11ID:???
>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に上手く置き換える手法を知りたい。
正解のみをここで聞くのではなく、できれば自分できちんと理解し、応用できるようにしたい。


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

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

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

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

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

>493
accept-charasetは知りませんでした。
早速試してみたいと思います。
0495nobodyさん03/11/02 14:22ID:???
余談になるかもしれませんが、accept-charasetを調べている時に下記ページを見つけました。
ttp://www.att.or.jp/perl/cgi-tech-tips.html
ここに掲載されていた、CGI出力ヘッダでの文字コード指定と.htaccessによるADDType指定も
同時に行なった事を報告させていただきます。
0496nobodyさん03/11/02 14:23ID:???
>>494
再現性がないと難しいね。
まあ何か分かったらここへまとめてくれ。
0497nobodyさん03/11/02 14:53ID:???
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を外しても同じだったのでほぼ間違いない。
0498nobodyさん03/11/02 15:33ID:???
長井秀和?
0499nobodyさん03/11/02 16:57ID:???
Operaでは&nbsp;が化けるらしい
0500nobodyさん03/11/02 22:32ID:???
>496
自分で確認できないのは厳しいですね。
後から気付いた事とわかった事を少しだけ載せます。

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

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

use CGI::Carp qw(fatalsToBrowser);

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

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

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

で動作させると、

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

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

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

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

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

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

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

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

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

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

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

あと本質的に、アカ持ってる奴が画像キャプチャしてバラ撒いたら
終わりなので、こういう部分に力を入れても労多く益少ない上に
正規ユーザが不便なだけ。
0539nobodyさん03/11/20 00:05ID: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

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

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

となると、
#! /usr/bin/perl --
ってやっとけば、別にShift_JIS+CRLFでも無問題か。。
配布CGI作るときに、メモ帳でもいじれるようにできそうだね。
0547_03/11/25 05:32ID:???
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の仕様なのでしょうか?
期待通りにデータを渡す方法がありませんでしょうか?

もしどなたかご存知の方がいましたらご教授ください。
よろしくお願いします。
0548nobodyさん03/11/25 05:52ID:???
>>547
それCGIの問題なの?
0549nobodyさん03/11/25 06:59ID:???
>>547
http://pc2.2ch.net/test/read.cgi/php/1012750353/301
0550ぱくちゃん03/11/25 17:12ID:UdoS9gNt
WindowsXPでPerlのプログラミングをしています。
ビープ音を鳴らしたいんですけど、どなたか方法を知りませんでしょうか?
0551ぱくちゃん03/11/25 17:14ID:UdoS9gNt
WindowsXPでPerlによるビープ音の鳴らす方法について知りませんでしょうか?
0552nobodyさん03/11/25 17:21ID:???
>>550
Perl の話は Perl スレへ。
http://pc2.2ch.net/test/read.cgi/php/1066286828/
http://search.cpan.org/~giulienk/Audio-Beep-0.10/
0553nobodyさん03/11/25 19:21ID:UeVyDd4a
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
http://2chp.net/
0554あらスィー03/11/25 20:15ID:???
Common Gateway Interface
0555nobodyさん03/11/26 11:04ID:???
>>542
Windowsでcgiファイル作ってUnix(Linux)サーバにアップするとき、
FTPソフトによっては、勝手にCRLF->LFに変換してくれる場合があるよ。
0556ぱくちゃん03/11/26 15:50ID:+ZoCfoLg
お世話になってます。ブラウザ上でprint "\a"を用いたCGIにアクセスさせビープ音
を鳴らそうと思ったのですが、うまく行きません。どうしたらよろしいでしょうか?
0557nobodyさん03/11/26 16:13ID:???
>>556
ご安心ください。
ちゃんとサーバの方でビープ音が鳴っています。
0558ぱくちゃん03/11/26 16:37ID:+ZoCfoLg
1台のPC上でサーバーソフトAnHTTPDを用いて、ローカルでCGIにアクセスしているのですが、
「・」が表示され、音はならない状況ですが…
0559ぱくちゃん03/11/26 16:41ID:+ZoCfoLg
1台のPCでAnHttpdサーバーソフトを用いて、ローカルでCGIにアクセスして
います。「・」が表示され、音はならないようですが...
0560nobodyさん03/11/26 22:02ID:???
ブラウザが鳴らしてないだけなんじゃない?
ほら、たとえばCRLFを表示しても改行しないでしょ。それと同じで。
0561nobodyさん03/11/26 22:49ID:???
飾りじゃないのよHTMLは。
0562nobodyさん03/11/27 00:33ID:???
ハッハァ〜♪
0563nobodyさん03/11/27 09:12ID:???
uhoxtu
0564nobodyさん03/11/27 10:34ID:???
コマンドプロンプトでperl -e "print \"\a\""
としても鳴らないね(win xp pro)
perl -e "print \"\n\""
だと改行されんだけど。
0565nobodyさん03/11/27 10:52ID:???
>>564
ウチでは鳴るけどね
0566nobodyさん03/11/27 12:21ID:???
win2kでは鳴りますた
コマンドプロンプトでだけど
0567ぱくちゃん03/11/27 14:01ID:qZERqfQc
Win95でもやってみましたが、だめでした。コマンドプロンプトでは、
XP、95どちらでもできました。あと、ビープ音をならすプログラムをC
で作成し、これをexecコマンドでCGIから呼び出しましたけれど、
音は出ませんでした。
ブラウザはIEVer5とOperaでやってみました。ブラウザが鳴らしていな
いのでしょうか?なにか設定があるのでしょうか?
0568nobodyさん03/11/27 14:08ID:???
おまえもうちょっとよく考えろよ
全部本人か知らないが、マルチで書きまくってたから
教えてはやれないがな
0569nobodyさん03/12/02 17:48ID:???
cgiのページ内でアンカーリンクってできないよね?
イメージとしては、
<a href="hoge.cgi#here">アンカー</a>
みたいな。
0570nobodyさん03/12/02 18:22ID:???
>>569
<a href="hoge.cgi?huga=here">アンカー</a>
クエリで吐き出す内容を変えればいいだろ
0571nobodyさん03/12/02 18:24ID:???
>>569
普通にできる。
057256903/12/03 11:17ID:???
>>570
それだとJavascript必要になりそうだな…

>>571
ほんとだ、普通にいくね…
すまんかった。
0573nobodyさん04/01/11 13:15ID: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
0574nobodyさん04/01/11 14:24ID:Ua0H5zjq
一般的にCGIの拡張子って.cgiだと思うけれど
mod_perlで動かすCGIの拡張子って皆さんどう付けています?
べつに拡張子区別したりしないですか?
0575nobodyさん04/01/11 14:57ID:???
mod_perlで動かすCGI?
0576nobodyさん04/01/11 15:04ID:Ua0H5zjq
>>575
あは。そうっすね(笑)
Apache::Registryで動かすファイルのことです。
0577nobodyさん04/01/11 22:42ID:???
mod_perlは拡張子変えるということはわざわざしない。

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

と認識させることできる?
0579nobodyさん04/01/15 17:22ID:???
>>578
rewriteでやれ。CGIには関係ない。
0580パソコン使用中@さわらないでね04/01/15 19:44ID:gKp4Nezk
2ちゃんみたいな掲示板を
携帯でやりたいんだけど
そうゆうCGIってある?
0581nobodyさん04/01/15 19:51ID:???
>>580
マルチはやめれ
0582nobodyさん04/01/19 22:34ID:???
>>578
貴様の目的はPR
0583nobodyさん04/01/23 11:09ID:???
<!--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を非表示をしたいです。

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

ちなみに俺の場合、<TMPL_VAR NAME="hoge">というのがどうしても
嫌だったから、勝手に%hoge%という書式に変更して、newするときに
filterオプションで置換して使ってます。
TMPL_LOOPやTMPL_IFは<!--#tmpl_loop name="hoge" -->みたいに
SSI風書式にしてます。
061804/01/28 14:22ID:i/cjCs6g
ちょいと質問です。apache の改造を行っているのですが、まぁそれは良いとして、
CGI 起動するときに環境変数 DOCUMENT_ROOT がなかったらダメですか?
apache 自体にはまったく問題ないんですけど、CGI 開発者としてのご意見きぼん。
0619nobodyさん04/01/28 14:36ID:???
俺はそんな環境変数使わんが、世の中には
ttp://www.palcom.ne.jp/hosting/support/server_independent.html
みたいな書き方をしているサイトが結構あるらしい
062004/01/28 14:41ID:???
>>619 おもいっきりサーバに依存してますね(萎
0621nobodyさん04/01/28 14:44ID:???
>>618
ttp://hoohoo.ncsa.uiuc.edu/cgi/env.html
なので無くても文句は言いません。
0622nobodyさん04/01/28 14:45ID:???
>>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
062362204/01/28 14:55ID:???
ってもうレスついてるじゃん… _| ̄|●_
0624nobodyさん04/01/29 15:43ID:pGuQUw/W
掲示板などのCGIで書き込みボタンを押した時にエラーが出るなどして
ブラウザの戻るボタンで戻る場合、先ほどの書き込み内容が
フォームの中に残っている時と残ってない時があるのですが、
これを確実に残して置く方法ってあるのでしょうか?
0625nobodyさん04/01/29 16:03ID:???
>>624
俺もそういう方法があれば是非知りたいと個人的には思っているのだが
たぶんブラウザの側の実装や設定の問題なので
CGIからは手出しできないんじゃないかと見ている
0626nobodyさん04/01/29 17:52ID:???
>>624-625
書き込みを一旦CGIが受け取れて単に内容の不備などによる
エラーなら値をフォームのvalueに入れれば済むだろ。
0627nobodyさん04/01/29 17:59ID:???
>>626
ブラウザの戻るボタンを使った場合らしいぞ
0628nobodyさん04/01/29 18:01ID:???
キャッシュさせないようにしておけばいいんじゃない?
0629nobodyさん04/01/29 19:26ID:???
value="" とかしてると戻ったときに入力された値が表示されない。
どうもIEだとvalueの値が優先されて表示される模様。

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

 配  布  元  で  聞  け

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

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

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

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

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

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

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

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

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

普通に気づかなかった。
投稿者の記事削除機能で使ってたのに。
テンキュー。
0663nobodyさん04/01/31 11:55ID:???
>>662
>投稿者の記事削除機能で使ってたのに。
厨臭さが漂ってますよ
0664nobodyさん04/02/01 10:14ID:???
>>663
ほんとだw
0665nobodyさん04/02/03 00:14ID:???
2ch某板のアクティブなスレッドから、特定IDのレスを抽出するCGI作ってるんだけど、(ニュース系のIDストーカーみたいなの)
どうも安いレンタルサーバーで動かすと激烈に重い。
今、上位100スレの全ログから抽出するのに成功したけど、全部で700以上のスレがあるんだよね。
どうにか軽くする方法ないですかねー。
0666nobodyさん04/02/03 00:27ID:???
>>665
こうゆうこと言ったら元も子もないがCGIでやることではないような。
クライアント側でやるべきでは?
例えばそのようなIEツールバーを作るとか。
0667nobodyさん04/02/03 01:49ID:???
>>665
1.定時に巡回してログを収集する(cronか何かで)
2.ログを解析し、DBにぶちこむなり、IDでindexを張るなり(これもcronか何かで)
3.CGIは、DBないしindexを検索するだけ
0668nobodyさん04/02/03 07:01ID:???
無駄に2chの負荷増やすなよ。
0669nobodyさん04/02/03 09:57ID:???
find.2ch.net
0670nobodyさん04/02/03 20:53ID:???
掲示板の作成で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>

0671つづき04/02/03 20:55ID:???
これが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 ???????

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

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

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

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

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


タイムアウト以内に終わるのであれば、ブラウザで読み込みの中止をしても最後まで実行される
ものなんでしょうか?
それとも、fork,execなりsystemなりして別プロセスとして動かしたほうがいいんでしょうか?
067967804/02/08 23:34ID:2J+W47Q/
なんかわかりにくくなっちゃったな。
どういうタイミングで、実行中のスクリプトが終了するのかが分からないんです。
0680nobodyさん04/02/08 23:49ID:???
KENTのスクリプトとか見てるとflock使わないで
symlinkやmkdirを使って自前でロックしてるみたいなんだけど
flockじゃやっぱりロックしきれないのかな?
0681nobodyさん04/02/09 00:50ID:???
>>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/
0682nobodyさん04/02/09 00:54ID:???
なんで mod_perl がCGIなのかと問いつめたい…
flock は CGIとは直接の関係もないのではないかと(ry
0683nobodyさん04/02/09 11:32ID:???
>>681
専用スレあったのですね。スマソ。
0684nobodyさん04/02/09 12:15ID:???
>>678
mod_perl のことは難しいので、普通のCGIのケースに限って話をすると、
apache の場合のポイントは二つある。

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

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

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

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

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

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

ご存じのかた、教えていただければ幸いです。
0697nobodyさん04/02/15 07:55ID: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>
0698nobodyさん04/02/15 12:25ID:bW2T2U/M
ここで質問していいのか分かりませんが
メールフォームで画像も添付できるようにしたいと思っています。
今はココ(ttp://www.annie.ne.jp/~cgipal/doc/palskin.htm)の
palskin mail ver.5というのを使っています。
できればこれに書き足してできれば最高なのですが…
こういう事は可能でしょうか?
0699nobodyさん04/02/15 13:30ID:???
>>698
【 スクリプト改造工房 PART 7 】
http://pc2.2ch.net/test/read.cgi/php/1063780103/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

区切って書いてみる

sub sanitizeamp
{
my ($str) = @_;
# 数値参照は OK (ただし末尾の ; が欠けている場合は補う)
if ($str =~ s/^?(\d+|x[0-9A-Fa-f]+);?/?$1;/) { return $str; }
# HTML4 に実在する文字参照は OK (ただし末尾の ; が欠けている場合は補う)
(続く)
0718nobodyさん04/03/02 21:55ID:???
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(続く)
0719nobodyさん04/03/02 21:57ID:???
|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
(途中途中に入っている改行は削除すること)
072071604/03/02 21:59ID:???
めんどくさくなったからやめます
0721nobodyさん04/03/02 22:01ID:???
>>715はなぜサニタイジングするかということ自体を全く理解してないようだ。
それでいて

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

メールアカウントの.forward なりに プログラムを埋め込む
そのプログラムは、直接ログファイルに書き込むなり
その掲示板CGIを呼ぶなりして投稿と同じ処理をCGIにさせるなりする。
0739nobodyさん04/03/10 13:15ID:???
>>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をどこに置けばいいやらよくわかりません、
宜しければお教えいただくか、ポインタ教えて下さい。
0740nobodyさん04/03/10 15:01ID:???
>>739
man forward
0741nobodyさん04/03/10 15:06ID:???
>>739
あー 掲示板CGIでログを解析しないほうがいい。

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

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

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

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

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

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


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

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

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

とりあえずエラーログでも見てみたらどうだ
「エラーログって何?」という状態だったら、自分でCGIを使うのは諦めたほうがいい
075274704/03/11 11:56ID:???
>>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
する必要ないですね。

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

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

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

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

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

>>757

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

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

JavaScript切ってたら
糸冬
0765asdf04/03/24 11:20ID: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をおく。
0766asdf04/03/24 11:21ID: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!
0767asdf04/03/24 11:24ID:CibVmuL+
http://diary.asdf.jp/counter.cgi
↑動かないカウンター

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

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

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

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

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

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

GETにするしかないのかなぁ…
0775Perl+XHTMLユーザ04/04/06 18:50ID: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_
などとするわけにもいかず・・
これは仕様上やむを得ない事なのでしょうか?
0776nobodyさん04/04/06 19:00ID:???
CGIとは無関係。 >>1
0777nobodyさん04/04/07 11:39ID:???
777get, zuzaa
0778nobodyさん04/04/10 11:10ID:brO2qLuh
Perlで掲示板を作成中。

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

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

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

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

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

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

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

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

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

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

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

cryptロジックが公開されていない(もしくは管理者がもつ秘密の種の強度が高い)
という条件なら、候補を出すこと自体もそれなりに難しくはなるけどね。
0785nobodyさん04/04/14 20:05ID:???
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 だと問題ないのですが
既知のトラブルなのでしょうか?
0786nobodyさん04/04/14 22:52ID:???
>>785
・test2.cgi にジャンプしようとする時,ステータスバーにはどう表示されているか?
・ジャンプ後,アドレスバーにはどう表示されているか?
っていう辺りに興味があります。。。
0787nobodyさん04/04/14 23:02ID:???
>786
785です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

POSTの時「&」意外にする方法はあるのでしょうか。
お願いします。
0792nobodyさん04/04/17 16:09ID:???
>>791
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4
0793nobodyさん04/04/17 16:11ID:???
>>791
W3C的にはgetの区切り文字は「;]が推奨されている。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

扱わざるを得ないとしたら、
この方法だと手詰まりですかね。。。(汗
0811nobodyさん04/04/19 00:22ID: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;

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

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

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

>>816さん、できればperl単体でやりたいのですが、なんとかならんでしょうか・・・
0818nobodyさん04/04/19 10:45ID:???
ん?
Referer: ヘッダ付ければそれで済むことやん。
0819nobodyさん04/04/19 12:06ID:???
>>816
httpの仕様をよく勉強しましょうね
082081404/04/19 12:37ID:???
>>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としたらエラーになってしまいました。\をはずした
らうまくいきましたが、これって問題ないのですか?それとも僕の頭がおかしくて勘違いしてる?
0821nobodyさん04/04/19 12:57ID:???
>>820
おかしくはないけれども後者。リファレンスのリファレンスだからね(^・^)チュッ
082281404/04/19 13:18ID:???
>>821
$hはもともとリファレンスだったのですね。
よく分かりました。ありがとうございます。
・・・・・・ブチュ
082381404/04/19 14:53ID:???
何度もすみませぬ。
LWPを使ったアクセスを診断くんで確認したところHTTP_TEなる環境変数を
吐いているようで、んでもってHTTP_TEはプロキシ判定材料の一つなそうな。
もともとwebや掲示板等を巡回するようなツールを想定していたのですが、
こんなものを吐いていたら一部の厳格なプロキシはじきを通れません><
で、消してしまおうと思い。
$h->remove_header('te');
の一文を挿入したのですが、消えてくれません。書き方がまずいのかと思い、
teをHTTP_TEにしてみましたが変化なし、別の環境変数(referer等)はちゃんと
消せました。(user_agentは無理でしたが(そらそうか))
アドバイスお願いします。
082479604/04/19 15:31ID:???
「このページは他人に見られることのないように保護をされています。」

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

だそうです。。。
082979604/04/19 18:32ID:???
>>825
ありがとうございます。
ところで例えばp1で住所等個人情報入力フォームがあり
p2で入力した内容の確認ができ、p3でそれを送信するといった場合に、
p1で入力された情報をp3まで引き継ぐ必要があるわけですが、どうやって
その入力データの引き継ぎをするのが理想的でしょうか?私が今できる事と言ったら
hiddenかcookieを使っての引継ぎくらいですが、セキュリティ的にどちらでするべきか
迷っています。どちらにしろSSLで保護はしますので安全だろうと思ってますが自信がもてないので
アドバイスお願いします。
cookieの場合ブラウザに個人情報がブラウザが閉じるまで?もしくは任意の時間残ってしまいますよね?
hiddenはソースを開けば見れる。←これは問題ないですよね?
083081604/04/19 19:23ID:???
>>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を読んでおくよ。
083181604/04/19 19:26ID:???
あ、urlを替えるの忘れてた。
適宜変更してね。
083281404/04/19 21:17ID:???
>>830
できました!本当にありがとうございました!もうちょっといじってからSocket
でもやってみようと思います(無理か・・・・w
refererの存在って例のITmediaの一件以来かどうかはしらないけどいまいち
存在意義がないような・・・出力をクライアントに依存するせいでいくらでも偽装
できるし、そもそも最近のセキュリティツールはreferer自体吐かないようになっ
てるのも多いし。refererを何かの判定に使おうとしたら結局ユーザビリティ低下
させるだけなのかな。
0833nobodyさん04/04/19 21:41ID:???
>>829
あのさぁ、この前紹介したページ見た?
というか、Webセキュリティについて何も知らないのが明らか
なんだから、こんなところで一つ一つ質問していないで、
一から勉強しなおせ。

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

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

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

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

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

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

値を渡すとは

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

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

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

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

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

書籍類も無いみたいだし…
0864nobodyさん04/05/01 12:42ID:???
いろんなサイトにちょっとずつ情報が散らばってるから、
それを自分で調査、収集、整理して利用すべし。
0865nobodyさん04/05/01 14:41ID:???
http://www.au.kddi.com/ezfactory/
http://www.dp.j-phone.com/dp/
http://www.nttdocomo.co.jp/p_s/imode/make/
0866nobodyさん04/05/02 22:56ID:VyPHEPB5
特定のディレクトリだけ公開したいんだけど
ディレクトリ内のファイルをリスト化してリンク貼ってくれるような
スクリプトありませんか?
0867nobodyさん04/05/02 23:11ID:???
mod_autoindex

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

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

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

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


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

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

print while (<IN>);
close IN;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。
0942nobodyさん04/07/15 19:42ID:???
>>941
ログイン後の画面にonloadイベント仕込んで
window.open でチャットウインドをオープンさせる、
とかじゃねえか?
JavaScriptね
094394104/07/15 19:48ID:???
ちなみに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)
0944nobodyさん04/07/15 19:52ID:???
だから、
login.cgiにonLoadイベント仕込んで
window.open でchat.cgiを別ウインドウで開く
とかじゃねえか?
JavaScriptね
094594104/07/15 19:56ID:???
>>942
ありがとうございます。

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

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

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


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


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

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

色々と試してみましたがどうも上手くいきません。
何か方法がありましたら何卒ご教授下さいませ。
0953nobodyさん04/08/29 14:58ID:???
>>952
http://www.hyuki.com/writing/techask.html#level
0954nobodyさん04/08/29 21:59ID:???
>色々と試してみましたがどうも上手くいきません。

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

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

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

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

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

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













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

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

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

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

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


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

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

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

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

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

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

糞マルチに教えることはないからカエレ
0978 04/09/29 17:30:58ID:???

0979nobodyさん04/09/29 22:33:36ID:rZcAXTiW
web上でlinuxのパスワードを変更させたり
メール転送設定(.forward)が出来るcgiって有りませんか?
0980nobodyさん04/10/06 11:31:10ID:???
>>979
Webmin&Userminでどうだべ。
0981nobodyさん04/10/07 02:57:56ID:???
あれはな
0982nobodyさん04/10/07 03:00:13ID:???
どうでもいいがまだまだ次スレは必要なさそうだな。
0983nobodyさん04/10/07 18:37:48ID:???
980を過ぎたら足切りがあるよ?
0984nobodyさん04/10/07 23:13:08ID:???
もう立てたほうがいいな。
俺は立てられんから頼む。
0985nobodyさん04/10/07 23:55:17ID:???
とりあえず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あたりに
0986nobodyさん04/10/08 01:56:06ID:???
とりあえず2の過去ログ最新版
関連スレは任せた

Part 3 http://pc.2ch.net/php/kako/988/988727833.html
Part 4 http://pc.2ch.net/php/kako/1000/10008/1000804655.html
Part 5 http://pc.2ch.net/php/kako/1009/10093/1009331505.html
Part 5.01 http://pc.2ch.net/php/kako/1015/10151/1015127347.html
Part 6 http://pc.2ch.net/php/kako/1019/10195/1019561283.html
Part 7 http://pc.2ch.net/php/kako/1025/10259/1025930486.html(スレタイをPart6と誤記)
Part 8 http://pc.2ch.net/php/kako/1032/10327/1032704121.html
Part 9 http://pc2.2ch.net/php/kako/1041/10415/1041530204.html
Part 10 http://pc2.2ch.net/php/kako/1048/10486/1048686475.html
Part 11 http://pc5.2ch.net/test/read.cgi/php/1055597189/
0987nobodyさん04/10/08 18:26:45ID:???
質問させて下さい、言語は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;

どなたか方法をご存知ありませんでしょうか
0988nobodyさん04/10/08 18:51:00ID:???
>>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";
0989nobodyさん04/10/09 10:04:13ID:???
次スレ立つまで保守
0990nobodyさん04/10/09 20:58:33ID:???
さらに保守
0991nobodyさん04/10/09 22:51:04ID:???
いや保守しなくていいからスレ立てろと。

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

CGIだけど、なんか質問ある? Part 12
http://pc5.2ch.net/test/read.cgi/php/1097334246/
0994nobodyさん04/10/10 00:06:21ID:???
役だってないから次スレはいらない。
Perl系の他のスレに自然吸収でいいだろ。空気嫁。
0995nobodyさん04/10/10 00:21:05ID:???
>>992
駄目に決まってるだろ。少しはログ嫁
0996nobodyさん04/10/10 15:12:34ID:???
1000
0997nobodyさん04/10/10 17:53:26ID:???
うめ
0998nobodyさん04/10/10 18:49:47ID:???
梅と
0999nobodyさん04/10/10 18:50:54ID:???
1000nobodyさん04/10/10 18:55:22ID:???
1000とり
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。