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

CGI: Common Gateway Interface part 11

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

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

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

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

過去ログ・関連スレッドは >>2-5 あたりに
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です。

■ このスレッドは過去ログ倉庫に格納されています