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 あたりに
0378nobodyさん
03/08/14 23:53ID:???www.foo.co.jp で発行したクッキーを、
www.bar.co.jp で取得することはできますか?
>>292 で言ってるみたいに、
www.foo.co.jp でクッキーを発行するとき、
「domain=bar.co.jp」とすれば、
www.bar.co.jp で取得できるのかなーと。
なお、今はまだ環境がととのってないので、テストで試してみることができず・・・
0380378
03/08/15 01:46ID:???あ、そうか、仕様として、そもそも発行元のドメインと取得先のドメインが違うとダメってことですか?
つまり、仕様書のdomain の項目で書いてある「後方一致」ってのは、
あくまで同じドメインでの話しってことですか?
(例だした方がわかりやすいかな・・・)
acme.comにおいて、domain=acme.comとしてクッキーを発行すると、
anvil.acme.com ではそのクッキーを取得できるけど、
hoge-acme.comでは、そのクッキーは取得できない。
・・・という理解で間違いないですか?
0383山崎 渉
03/08/15 22:33ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0384nobodyさん
03/08/16 12:45ID:KHB072f80385nobodyさん
03/08/16 15:53ID:jb3r1JoJ一般的な共有サーバで動かすことを前提にすると。
0386nobodyさん
03/08/16 22:30ID:grNQSJhAhttp://www.sexpixbox.com/pleasant/teen/index.html
0387nobodyさん
03/08/17 21:30ID:ycQ+dswyフレームを使っている性で全部リファラがindexになってしまいます。
使っている鯖はSSIは使えませんし、.htaccessも使えません。
どうすればリファラが取れるんですか?教えてください。御願いします。
すれ違いだったらすいません。
0388nobodyさん
03/08/17 23:46ID:78eH/B6l0389nobodyさん
03/08/17 23:47ID:78eH/B6l気にしなくて良し。
0390nobodyさん
03/08/17 23:57ID:???http://pc2.2ch.net/test/read.cgi/php/1060808783/171
マルポ
0391nobodyさん
03/08/20 19:32ID:M8LljIzL<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:???0393nobodyさん
03/08/20 20:43ID:???上手くやればできる。
今も5年前も10年前も。
0394nobodyさん
03/08/20 20:49ID:???えぇ!うまくやればってどういうことですか?
昔も前者の書き方ができたのかどうか聞きたいのですが。
ロジックの問題ではなくHTTPプロトコルレベル、または
WebブラウザとWebサーバーの対応状況の話だと思うのですが・・・
0395nobodyさん
03/08/20 20:53ID:???RFC1866あたりだよ
0397nobodyさん
03/08/20 23:22ID:???つか、今流通してるブラウザで、
<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では、
●クッキーを発行したあと、
●Location:ヘッダで www.hoge.com/bar.cgi にとばす
の処理をしてます。
で、質問です。
www.hoge.com/bar.cgi の中の処理で、ついさっき発行されたクッキーを読もうとしたとき、
クッキーは読み込めるのでしょうか?
環境依存なのでしょうか?
0401nobodyさん
03/08/28 17:18ID:???0402400
03/08/28 18:26ID:ER3uJlrJあ、ごめんなさい。
「クッキーに対応して、有効にしているブラウザ」の中でを条件に加えてください。
0404nobodyさん
03/08/28 22:09ID:???試したの?
0405nobodyさん
03/08/29 01:22ID:???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:???0407nobodyさん
03/08/31 00:28ID:???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'; なら表示されたけど
0410nobodyさん
03/08/31 01:58ID:???こんな場所に画像ファイルを置いてるのか?
ビックリだ。
0411407
03/08/31 02:02ID:???こんなことも言い忘れるとはよほど慌てていたようです。
>>409
パスは絶対指定しています。なので、この形式でいいかと。
>>410
ああ、これはサンプルのパスです。正しいのをさらすと、ユーザー名とかがわかってしまうので。
えーと。なんでだめなんだろう。
0413nobodyさん
03/08/31 02:36ID:???0414nobodyさん
03/08/31 03:05ID:???0415nobodyさん
03/08/31 03:07ID:???openのエラー処理してねーし。
0416407
03/08/31 21:59ID:???ビンゴでした。吐いたらうまく表示してくれました。
ありがとうございました。
>>413
今後は注意します。ありがとうございました。
>>415
ご助言ありがとうございます。エラートラップもつけました。
>>414
毛ジラミでしたら、早急に医者に行った方が・・・
0417nobodyさん
03/09/01 10:36ID:???>cookie
0418nobodyさん
03/09/02 00:31ID:tJK7g1eGBサーバにそれを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:???処理中に適当にタイムスタンプでも使ってファイル作って
ソレが存在してる間は処理中と判定させるとか。
で自信でも別スクリプトでも良いから適当にそのファイル名を送って
ソレを一定時間毎に読んで、消えたら完了のページ開くみたいな。
hoge.cgi
処理開始→判定用一時ファイル作成→Locationで飛ばす→処理終了→ファイル消す→exit()
huga.cgi?filename
クエリ読む→ファイルがあるかどうか調べる→あったらLocation略→なかったら終了した事を知らせてexit()
hoge.cgiがタイムアウト等で一時ファイルを消せなかった時の為に有り得ない程時間掛かってたらさくっと消す
素人考えだけど駄目かなー。
0422nobodyさん
03/09/16 16:37ID:???一番汎用的な方法ってなんでしょう?
(ちなみに言語はPerlですが、それは本質的なことではないですよね?)
SSL_PROTOCOL環境変数が空か否かで判断するのかな、と思ったのですが、
どうするのがベストでしょうか?
0425nobodyさん
03/09/17 20:33ID:???同じ動作をするcgiが、全く同じ条件でpostメソッドでcgiにアクセスしても、
Internal Server Errorがでるときと正常動作するときがあります。
Internal Server Errorがでても、リロードすると、正常動作してしまうので、
不可思議なのですが・・・。
これは、どんな原因が考えられるのでしょうか?
0426nobodyさん
03/09/18 04:23ID:???(ちなみにスクリプト自体の文字コードはEUC)
それを、&jcode::convert(\$in{$key}, "jis");
みたくして、JISに変換して(正確にいうと、変換しようとして)、
それをメール本文(もちろんJIS)中に変数として入れたら、
文字化けする可能性ありますか?
もしあるとしたら、
&jcode::euc2jis(\$in{$key});
と明示的に文字コード変換したら、
文字化けがなおる可能性はありますか?
実は文字化けではまってるものの、
文字化けが再現できなくなってしまっていて・・・。
0428425
03/09/20 03:11ID:???でも、リロードしてら正常動作するもんで、手がかりがつかめません。
同じことをしてるのに、違う結果がでるなんで・・・と。わけわからん状態です。
どっから疑っていけばいいんでしょうか?
0430425
03/09/21 16:58ID:???>タイムアウト
いや、タイムアウトの可能性はないかと。
すぐにInternal Server Errorになったので。。。
>負荷ぎりぎりで動いてるとか
でも、これが可能性高そうです。ちょっと調べてみます。
0431nobodyさん
03/09/21 17:01ID:???ソースを公開するなり、そちらが情報を提供する気がないのならこれ以上質問するなよ。
こういう掲示板はGive&Takeによって成り立っているって理解している?
0432430
03/09/21 21:55ID:???>ソースの公開は、仕事の都合上、できないので、すみません。
あと、いちお、名無しでですが、Giveはこのスレでも他のスレや板でも、してます。いちお。
0433nobodyさん
03/09/21 23:31ID:???その現象が起きる20行程度のソースを晒せば?
それでも仕事の都合上無理ってんなら>>431の言う通り。会社の人に聞けば?
y=x+1が与えられてyの値はいくつでしょう?と聞かれても誰もわからんのでは?
0435nobodyさん
03/10/17 10:28ID:M5vTMTcpページが正常に表示されず、ファイルのDLを始めようとするようです。
同じサーバーの他のプログラムは正常に表示するようで、吐き出す
ヘッダも同じにしてるはずなんですが。
本来相手の環境を調べるべきなのですが、素人なので聞かれてる内容も
理解できないらしく、上手く情報が伝わって来ません。
なにか考えられる原因、思い当たる方いませんか?
0437nobodyさん
03/10/17 11:26ID:5bzSqekM後は、Webサービスのマッピングをチェックしてみるってのはどうでしょう?
さすがにそれぐらいしか答えようがないですね。
0438nobodyさん
03/10/17 12:05ID:???>>437
まあ、そうですよね。
ただ同じサーバーの他のスクリプトでは問題ないようなのです。
もちろん当方からのアクセスではそのスクリプトも含めて全て正常に表示されます。
なんとも再現しないのでわからないのですが、
状況からすると、ある特定の環境で問題を起こすCGIの記述の可能性、
と予想したのですが。
0441nobodyさん
03/10/17 15:28ID:???あと、アドレス欄の最後のパラメタを拡張子と誤解して
誤動作するブラウザがある
0442nobodyさん
03/10/17 16:40ID:???http://www.hoge.net/huga.cgi
のようにCGIを直接呼ぶ事で単純に表示するルーチンに飛ばしてます。
で、当人が言うにはブラウザから、
「このファイルは開けません。ファイル huga.cgi」とか、
「検索の結果、以下のソフトウェアが見つかりました。
このソフトウェアを利用するとファイルを開くこと
ができます。
ファイルの種類: Common Gateway Interface」
とか言われるらしいのです。
ただ、それもこの特定のCGIだけなんですよね。
wget試してみます。
0443nobodyさん
03/10/17 16:50ID:???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:???0445435
03/10/17 17:06ID:???で、Content-type: text/html の送出をスクリプトのなるべく前の
方に持ってきたら
Length: unspecified [text/html]
と表示されました。
これで問題ないかアクセスしてみてもらいます。
しかし、これはどういうわけでしょうか?
後学のためどなたかお分かりの方お教え下さい。
0447nobodyさん
03/10/17 17:32ID:???0448435
03/10/17 17:35ID:???検索していませんでした。
検索しましたが、どこにもありませんでした。
実はこのスクリプト、個別の設定情報を書いた複数の違う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:???大事な内容をCGIで送信するのにベストな方法ってありまつか?
0450nobodyさん
03/10/17 21:34ID:???何が何だかわからないのでご存知の方いたらご教授願います。
「○○サーチ」というある検索エンジンに自分のサイトを登録しようとしたら、
何度やっても「コマンドが不正です」と出る。
新規登録は動いているからサーチ自体には問題ないようだ。
てことは自分のパソコンに何か原因があるのでしょうか?
0453450
03/10/17 21:59ID:???まだサイトは登録してないから拒否とかはないはず、
登録画面に入るボタンを押すと「コマンド〜」が出たんですよ。
なんなんだほんと。
0455nobodyさん
03/10/18 00:04ID:???だから検索エンジンってのがあるように、
登録しようとした君のサイトを自動的に見に行って
登録するにふさわしくないと拒否られたんだって
0456nobodyさん
03/10/18 04:12ID:???使うだけの人間はここで質問するな。
0457nobodyさん
03/10/18 04:15ID:???どうやらその検索サイトはHTMLの文法をチェックしているみたいですね。
HTML-lintで90点以上取らないとダメみたいです。
0458450
03/10/18 21:13ID:???レスサンキュ。登録あきらめることにしたよ…_| ̄|○
さっきいったらサーチがダウソしていてめんどくなりますた
スレ違いすまんな。さらば!
0459nobodyさん
03/10/18 23:12ID:???ベストっていったら、
(SSLは必ず使うとして・・・)
●メールは、もし流すなら、
ウェブサーバ、送信メールサーバ、それを受信するメールサーバとも、
セキュリティ的に安全なネットワーク内部で完結させること。
とかいいつつ、自分もよく分かってない。
・・・詳しい人フォローきぼんぬ、、、
0460nobodyさん
03/10/19 00:13ID:???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:aayFZnQswindowsでは\r\nContent-Type:となっているけどmacだと\rContent-Type:ってなるんですか?
0467nobodyさん
03/10/29 12:41ID:???仕様上は改行コードに依存せず
常に\r\nじゃないといけなかったかな?忘れた
0468nobodyさん
03/10/29 12:52ID:???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:???$path = 'http://' . $ENV{'HTTP_HOST'} . $1;
}else{
$path = 'http://' . $ENV{'HTTP_HOST'} . '/';
}
こんなところかな?
スマートではないけど。
tu-ka,Perlの話はPerlスレ逝け。
0471nobodyさん
03/10/30 20:47ID:???スマン。
取得したいのは絶対パスの方っす。
/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' | '''"''‐-、
~´  ̄ ̄ ̄
0474nobodyさん
03/10/31 06:04ID:???そんなのとって何するんだ?
0475nobodyさん
03/10/31 11:40ID:???目的としては、
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:???こんなのでできないか?
$path = $ENV{'SCRIPT_FILENAME'};
$path =~ s/$ENV{'SCRIPT_NAME'}//;
あとは$pathにクエリーストリングのファイル名をくっつけてやれば
■ このスレッドは過去ログ倉庫に格納されています