CGI: Common Gateway Interface part 11
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/06/14 22:26ID:F9qlqHNx※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 あたりに
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さらに次のcgiに同じパラメータを渡す事ってできる?
0519nobodyさん
03/11/17 15:20ID:???0520518
03/11/18 11:25ID:2RvczggN環境はVinelinux2.2+CGI.PM+Perl4です
0522nobodyさん
03/11/18 11:51ID:???0523nobodyさん
03/11/18 14:44ID:???0524518
03/11/18 19:41ID:???POSTで渡す方法はありますか?
0525nobodyさん
03/11/18 19:46ID:???ヘッダのみじゃ不可能なのはわかるよな?
0526518
03/11/18 20:23ID:???二つ目のcgiへの渡し方がわかりません。
GETなら引数に書いてやればいいのですが
0527nobodyさん
03/11/18 20:29ID:???検索とかしてみた?
検索したならどういう単語で検索した?
0529518
03/11/18 20:48ID:???を発見しました。
できればはじめのcgiで作ったフォームから次のcgiに渡したいのですが・・・
Javascriptとかを使わないと無理ですか?
0530http://mokorikomo.2ch.net/
03/11/18 23:19ID:???0531nobodyさん
03/11/19 11:00ID:???その場合、認証成功した人が、HTMLのソースを見ると普通に画像のパスがわかってしまい、
アカウントを持っていない人でも、そのURLを教えてもらえれば見れてしまうのですが、
何かいい考えはありますでしょうか?
0532nobodyさん
03/11/19 11:43ID:???http://httpd.apache.org/docs-2.0/howto/auth.html
http://support.microsoft.com/default.aspx?scid=kb;ja;324276
0533531
03/11/19 11:56ID:???ありがとうございます。
すいません、情報不足でした。
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:???【CGI】こんなCGI探してますver.1.1【素材】
http://pc2.2ch.net/test/read.cgi/hp/1067286961/
0537nobodyさん
03/11/19 17:33ID:???漏れの案
認証した人だけに見せるページはCGIが吐き出す。
画像のパーミを400とか600にして、直に見ようとしたら403エラーが出るように汁。
これでどうだ。
0538nobodyさん
03/11/19 18:16ID:???CGI プログラム経由で吐くなら、画像ファイルをドキュメントルート
以下に置く必要は全く無い。つか >>534 と結婚。
>>533
ログイン CGI とやらが何をする為のものか分からん上に、サーバ
環境も許されている権限も分からん。BASIC認証が使えん理由も
分からん (ログイン処理を変えられるなら、アカウントを .htpasswd
で一括管理すれば済む話) 。
あと本質的に、アカ持ってる奴が画像キャプチャしてバラ撒いたら
終わりなので、こういう部分に力を入れても労多く益少ない上に
正規ユーザが不便なだけ。
0539nobodyさん
03/11/20 00:05ID:nKwXTSg6perlのデバッガを使用したいのですが、以下のメッセージが出力されており実行できません。対応方法を教えてください。
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
以上、よろしくお願いします。
0541nobodyさん
03/11/20 05:40ID:EAgQK2Up0542nobodyさん
03/11/23 12:07ID:???改行コードは、UNIX系OSならLF、WindowsならCR+LFに変換してUPする必要があるけど
文字コードは、EUCだろうがSJISだろうが、
ブラウザへの出力、フォームからのクエリーストリングなどが、
スクリプトの文字コードと一致するように注意していれば全然問題ないかと思うんだけど、
この考えって問題ある?
0543nobodyさん
03/11/23 12:28ID:???0545nobodyさん
03/11/23 12:53ID:???#!/usr/bin/perl\r <-こんな感じ。perl\rってコマンド作ってやるか、
#!/usr/bin/perl --\r みたいに、 オプションをつけることでCRLFでも動作する
つまり、改行コードはCGI動作の本質的な問題ではない
0546542
03/11/23 13:02ID:???となると、
#! /usr/bin/perl --
ってやっとけば、別にShift_JIS+CRLFでも無問題か。。
配布CGI作るときに、メモ帳でもいじれるようにできそうだね。
0547_
03/11/25 05:32ID:???状況が分かりやすいようにサンプルソースを書いてみました。
<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の仕様なのでしょうか?
期待通りにデータを渡す方法がありませんでしょうか?
もしどなたかご存知の方がいましたらご教授ください。
よろしくお願いします。
0549nobodyさん
03/11/25 06:59ID:???http://pc2.2ch.net/test/read.cgi/php/1012750353/301
0550ぱくちゃん
03/11/25 17:12ID:UdoS9gNtビープ音を鳴らしたいんですけど、どなたか方法を知りませんでしょうか?
0551ぱくちゃん
03/11/25 17:14ID:UdoS9gNt0552nobodyさん
03/11/25 17:21ID:???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:UeVyDd4ahttp://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:???0555nobodyさん
03/11/26 11:04ID:???Windowsでcgiファイル作ってUnix(Linux)サーバにアップするとき、
FTPソフトによっては、勝手にCRLF->LFに変換してくれる場合があるよ。
0556ぱくちゃん
03/11/26 15:50ID:+ZoCfoLgを鳴らそうと思ったのですが、うまく行きません。どうしたらよろしいでしょうか?
0558ぱくちゃん
03/11/26 16:37ID:+ZoCfoLg「・」が表示され、音はならない状況ですが…
0559ぱくちゃん
03/11/26 16:41ID:+ZoCfoLgいます。「・」が表示され、音はならないようですが...
0560nobodyさん
03/11/26 22:02ID:???ほら、たとえばCRLFを表示しても改行しないでしょ。それと同じで。
0561nobodyさん
03/11/26 22:49ID:???0562nobodyさん
03/11/27 00:33ID:???0563nobodyさん
03/11/27 09:12ID:???0564nobodyさん
03/11/27 10:34ID:???としても鳴らないね(win xp pro)
perl -e "print \"\n\""
だと改行されんだけど。
0566nobodyさん
03/11/27 12:21ID:???コマンドプロンプトでだけど
0567ぱくちゃん
03/11/27 14:01ID:qZERqfQcXP、95どちらでもできました。あと、ビープ音をならすプログラムをC
で作成し、これをexecコマンドでCGIから呼び出しましたけれど、
音は出ませんでした。
ブラウザはIEVer5とOperaでやってみました。ブラウザが鳴らしていな
いのでしょうか?なにか設定があるのでしょうか?
0568nobodyさん
03/11/27 14:08ID:???全部本人か知らないが、マルチで書きまくってたから
教えてはやれないがな
0569nobodyさん
03/12/02 17:48ID:???イメージとしては、
<a href="hoge.cgi#here">アンカー</a>
みたいな。
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:Ua0H5zjqmod_perlで動かすCGIの拡張子って皆さんどう付けています?
べつに拡張子区別したりしないですか?
0575nobodyさん
04/01/11 14:57ID:???0576nobodyさん
04/01/11 15:04ID:Ua0H5zjqあは。そうっすね(笑)
Apache::Registryで動かすファイルのことです。
0577nobodyさん
04/01/11 22:42ID:???ScriptAliasで同じディレクトリ内をべつのアドレスに変えるだけさ
0578nobodyさん
04/01/15 16:35ID:WbVNIjHLhttp://www.hoge.fuga/index.cgi?1234
と認識させることできる?
0580パソコン使用中@さわらないでね
04/01/15 19:44ID:gKp4Nezk携帯でやりたいんだけど
そうゆうCGIってある?
0583nobodyさん
04/01/23 11:09ID:???<!--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を非表示をしたいです。
パターンマッチで置換するのはなんとなくわかるのですけど、
具体的にどうすればいいのかがサパーリです。
すみませんがご教授願います。
0584583
04/01/23 11:51ID:???$html =~ s/<!--b_start-->.*?<!--b_finish-->//sg if ( $flag );
すいませんいけました。
0586nobodyさん
04/01/24 00:26ID:sB1NzHfUから誘導されてきましたー。
現在ログをHTMLファイルとして吐き出す掲示板を作っています。
動作自体は問題ないのですが、HTMLをファイルとして吐き出して上書きする
性質上、 パーミッションが606にならざるを得ません。 suExecはナシってことで。
こうしたHTMLファイルをサーバー上に置いた場合、外部から書き換えられる
危険性があるでしょうか。
まあ、普通の掲示板のログファイルが勝手に書き換えられるというのも聞かない
ので大丈夫だと思うのですが。
スクリプトでも埋め込まれると目も当てられないので。
過去ログ全部たどったら、「ダメだ」と「いや大丈夫だ」となってて、どっちでしょう?
0588586
04/01/24 00:40ID:sB1NzHfUCGI上からのchmodのできないサーバーです。
情報小出しで申し訳ない。
0589nobodyさん
04/01/24 00:49ID:???外部から書き換えられる危険性はほとんど無いが、
内部から書き換えられる危険性は結構高い。
例えば、君がそのCGIをどっかのプロバイダの共用サーバ上で動かしているとして、
その共用サーバは suExec 使っていない、つまり全ユーザのCGIが同じ実効uidで動いているわけだが、
そのプロバイダに俺も入会して、同じ共用サーバにアカウントもらったとする。
そしたら俺は、速攻で「そのサーバ上の全ディレクトリを回って606のファイルを見つけるCGI」を組んで
次に「606ファイルを好きに書き換えるCGI」を組んで
俺が将来何か素晴らしいことを思いついた時に踏み台にできるよう準備しておく。
何の役に立つかはよくわからないが、何をやったとしてもまず足が付かないので、理想的な環境だ。
もちろん、俺のようなやつは世の中にそうそういないので、
そんなやつと同じサーバで出会う確率は無視できるほど小さい、と言うこともできる。
0590586
04/01/24 01:10ID:sB1NzHfU> その共用サーバは suExec 使っていない、つまり全ユーザのCGIが同じ実効uidで動いているわけだが、
> そのプロバイダに俺も入会して、同じ共用サーバにアカウントもらったとする。
> そしたら俺は、速攻で「そのサーバ上の全ディレクトリを回って606のファイルを見つけるCGI」を組んで
> 次に「606ファイルを好きに書き換えるCGI」を組んで
なるほど。つまり書き込み権限のあるフォルダにHTMLがあればどうにでもなる、と。
707などというパーミッションはとんでもない、ということでいいですか?
サーバー側でホームディレクトリ以下のファイルしか変更できないような対策があれ
ば安心?
サーバーがAppachだとして、管理者がsuExecを導入しない理由ってなに?
とまで聞いたらスレ違いでしょうか。
0591nobodyさん
04/01/24 01:23ID:???予想
a. 昔 suexec を入れてなくて そのまま入れる機会を逸している。
b. suexecを知らない
c. suexecはプロセスの起動数が倍になるので、負荷を避けるために導入していない。
(httpd → CGIなプロセス が httpd → suexec → CGIなプロセスになる)
0592nobodyさん
04/01/24 01:47ID:???bは論外として(笑)。
一応いまのところは問い合わせたときに「当面予定はありません」だったのでcかな。
いちおうもう一度、上記のようなケースに対策をとっているのか問い詰めて、
導入を薦めてみます。
とはいっても配布を視野にいれているので、そこそこいろんなサーバーで動かない
となぁ。
選択制でchmodの機能は入れるとして、セキュリティ上は堅いとはいい難い、と・・・。
今日はこれで寝ますが、対策・絶対ダメなど、何か他に情報ありましたらよろしくお願い
します。
>>587>>589>>591 ありがとうございました。
0593nobodyさん
04/01/24 09:51ID:???0594nobodyさん
04/01/24 16:31ID:PL//gjDgありますか?
0595nobodyさん
04/01/24 16:42ID:???use CGI; 行の先頭を # でコメントにすることぐらいかな
0596nobodyさん
04/01/25 12:38ID:???CGI.pmは使うなと?
フォームデータのデコード、Cookieの生成、ヘッダの出力にしか
使ってないので自前で作っちゃった方がいいかなぁ。
0598nobodyさん
04/01/25 21:00ID:???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 でこの辺のモジュールを全部キャッシュしておけば
何も問題なくなるのだが。
0603594
04/01/26 00:27ID:???CGI.pm部分だけ自作しても焼け石に水ってことですか。
0604nobodyさん
04/01/26 01:01ID:???0605nobodyさん
04/01/26 09:45ID:???楽がしたいから使うんだけどな。
Perl使いが一番重要視する効率はコーディングの効率だと思うんだけどどうよ。
感覚的なものだけどさ。
0606nobodyさん
04/01/26 10:01ID:???0607nobodyさん
04/01/26 13:17ID:???以下のようにしました。
ただ追加書き込みしているだけですが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:???禿しくスレ違い
Perl コーディング初心者質問コーナー Part31
http://pc2.2ch.net/test/read.cgi/php/1072896288/l50
逝ってよし
0609607
04/01/26 13:57ID:???0612nobodyさん
04/01/26 22:16ID:???0613nobodyさん
04/01/26 22:42ID:???HTML::Template を見つけたよ
ループのネストとか「おお俺って賢いじゃん」と思ってたんだがなあ…
■ このスレッドは過去ログ倉庫に格納されています