トップページ⇒php
983コメント345KB

CGIだけど、なんか質問ある?part4

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/09/18 18:17ID:plR9HC2E
print "くだらねぇー質問はココから始めろや!\n";

print<<HTML_END;
<a href="http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833" target="_blank">旧スレ</a>
HTML_END
0052名無しさん@お腹いっぱい。01/10/03 01:57ID:52wgSISs
>>51
いちおう念のために聞いておきますけど、
自分のサイトで発行したクッキーだけでいいんですね?

いや以前どっかのスレで、訪問者のPCに入ってるクッキーを
セキュリティホール突いて全部取得したいとかいう
邪悪なやつがいたので。。。
0053FREAKES01/10/03 02:23ID:iOlT3Zgg
自宅サーバーを立てたのですが
CGIの掲示板をおいたところ自分で見ることは、できたのですが
友達に見てもらってもエラーがでてしまいます
パーミッションが違うと言われましたが
どうなんでしょう
WINだとパーミッションは、関係ないと思うのですが
ぜひ、お願いします
http://www.freakes.dyn.to/
0054名無しさん@お腹いっぱい。01/10/03 02:34ID:rmSH5DLs
<A href="http://127.0.0.1/aska.cgi"><IMG src="image.gif" border="0" width="136" height="59"></A>

そら見れんワ
0055FREAKES01/10/03 02:37ID:iOlT3Zgg
すいません
マジで困っています
教えていただけませんか?
0056名無しさん@お腹いっぱい。01/10/03 02:38ID:???
俺のサーバーにこんなの(aska.cgi)入ってね-もん
0057名無しさん@お腹いっぱい。01/10/03 03:00ID:???
>>55
マルチポストやめれ
127.0.0.1で見れるわけがない
0058名無しさん@お腹いっぱい。01/10/03 18:08ID:???
優しいなぁ、>>57は。ちゃんと答えを教えてあげてるじゃん。
俺だったら氏ねの一言で終わりだもんな。
0059名無しさん@お腹いっぱい。01/10/04 14:04ID:nOAoqb9A
画像を返すCGIを作っているのですが、このとき、画像を2つ返すことは
できるでしょうか(ウィンドウが2つ開く感じ)。
0060名無しさん@お腹いっぱい。01/10/04 14:38ID:nOAoqb9A
連続質問ですみません。フォームに複数のsubmitボタンをつけて
それぞれ違うCGIを呼び出すことは可能でしょうか。
submitにname=を付けて区別するというところまでは
わかったのですが、actionでどう指定したら良いかが
わからないのです。
0061名無しさん@お腹いっぱい。01/10/04 14:47ID:???
#!/usr/bin/perl
$name=<STDIN>;
if($name eq "60"){
print "逝って良し";
     }
0062名無しさん@お腹いっぱい。01/10/04 14:50ID:ZexXU3iQ
<?php
$name = '61';
if($name == 61){
echo "61=ドキュソ";
}
?>
0063名無しさん@お腹いっぱい。01/10/04 15:20ID:???
前の行で $name='61' としておいて if ($name == 61) も
糞も無いと思うのだが。

>>60
submit で actionするCGI を変更するには javascriptを使う必要があります。
CGIでは出来ません。

Web製作板へのJavaScript質問スレッドへどうぞ。

# cgiでどのsubmitボタンが押されたか判別してredirectする方法も有るけど。
0064名無しさん@お腹いっぱい。01/10/04 15:33ID:nOAoqb9A
>>63 ありがとうございます。
Web制作板へ逝ってきます。
00655101/10/04 22:02ID:???
>>52
荒らしがきてるんで、そいつのクッキー全部覗きたかったんだけど、
後で調べてみたら、それは簡単に出来そうにないんですね。
0066名無しさん@お腹いっぱい。01/10/05 13:38ID:uprQiXAY
フリーのCGIをちょっと加工するくらいしかできない厨房(年食ってるけど)です。
質問させてください。
1つの掲示板で、多言語OKにするには、どうしたら良いのでしょう?
現在、アメリカの無料ゲストブックを借りて使っていますが、自前のものに
替えたくて、いろいろと探しています。
日本のCGIだと、jcode.plが必須で、それだと中国語等はどうもうまく行かない
ような気がします。
日本のCGIから日本語機能(?)を取り除く方法ってありますか?
0067名無しさん@お腹いっぱい。01/10/05 16:44ID:xs79T5cc
>>66
日本語で書き込まれても中国語で書き込まれても、
文字コードをUTF-8に統一して保存および表示すれば、
混在可能だと思う。

特定の文字コードをUTF-8にコンバートするのは難しくない。
今のunixにはlibiconvという文字コード変換ライブラリや、
それを使ったiconvコマンドがあるし。

問題は書き込まれた文字コードの判定だ。
日本語だけという条件であっても、自動判別させようと思うと
Shjift_JISとEUC_JPを間違えることがあるぐらいだから、
中国語が入ったらさらに混乱必至ではないか(想像ですけどね)。

だったらブラウザから書き込むときに、もう最初っからUTF-8で
送信させればいいわけだ。
それは具体的にどうするか、ってのは正直スマンが知りません。
誰かフォロー頼む。
0068名無しさん@お腹いっぱい。01/10/05 16:46ID:???
>>66
>日本のCGIから日本語機能(?)を取り除く方法ってありますか?
ありますよ。でもスクリプト見ないと何も言えない。
00696601/10/05 18:26ID:IlecsqKU
67さん、68さん、ありがとうございます。
現在使っているフリーのゲストブックはアメリカものなので、間違いなく
jcode.plは無関係で、英語はもちろん、中国語Big5,中国語GBでも
書込みOKです。(ブラウザで文字コードを変えればきちんとそれぞれ
読めます。当然、同時に全てをきちんと表示することは出来ませんが、
読めれば良いので問題ありません。)
ですから、英語のゲストブックCGIを使えば良いのでしょうが、ただでさえ
CGI素人なのに英語では更に厳しいので、日本のCGIを使いたいと思った
わけです。

>68さん
いただいて来たスクリプトをテキストでアップしてみました。
↓
ttp://members.tripod.co.jp/k_napper/nyaponika.txt
これのどこを削ったりアレンジしたりすれば良いのか、ちょっと
わからないのです。
ご教授いただけると、とっても助かります。
0070名無しさん@お腹いっぱい。01/10/05 19:47ID:???
>>69
CGI改造スレのほうに回答が誤爆されてたヨ
http://ebi.2ch.net/test/read.cgi/php/988808396/392-394n
0071名無しさん@お腹いっぱい。01/10/06 02:00ID:MEgHrhMk
FORMのtextareaのデータを、改行毎に分割したい場合、
split("\n", $data)
でいいのでしょうか? 改行コードってどんな端末からでも\n?
0072名無しさん@お腹いっぱい。 01/10/06 02:12ID:???
勿論違うよ、どんなのかは調べてもらうとして
普通は $data =~ s/\r\n|\r/\n/g; こんなのが前に入る
0073名無しさん@お腹いっぱい。01/10/06 02:41ID:MEgHrhMk
なるほど! ありがとうございました>>72
0074名無しさん@お腹いっぱい。01/10/06 02:49ID:???
質問させて下さい。
CGIでテキストデータを生成して、クライアント側に
保存させるにはどうやったら良いのでしょうか?
テキストデータには、text/plainなどのヘッダを
付けたくないのです。
0075名無しさん@お腹いっぱい。01/10/06 03:34ID:???
保存ってクライアントを操作するって事だったら無理だよ?
もろにCGIの仕様に引っ掛かるもん
単にクライアントにコピペで保存してもらうだけなら
テキストエリアに吐き出してREADONLYとでもしとけば良いけど。。
ヤバ文字が含まれそうだったらちゃんとエスケープしてね。
無料サーバのファイルマネージャみたいな感じで
0076名無しさん@お腹いっぱい。01/10/06 03:34ID:KSO8kPZM
↓これについて教えていただけますか?
http://natto.2ch.net/test/read.cgi?bbs=hp&key=999946244&st=804&to=804&nofirst=true
0077名無しさん@お腹いっぱい。01/10/06 03:59ID:???
>>76
適当にまとめると,
クッキーで連続投稿を防止しようとしてるが,IEとネスケで動作が違う。実装の違いを教えれ。
ってことかな?

クッキーは勝手にネスケが開発してたので
仕様はnetscapeのサイトにあったはず。
W3Cの規格にはまだなってない。
ブラウザごとの実装の違いは知らない。

クッキーは拒否されることもあるので,
連続投稿規制はサーバーにIPとかを保存するようにするのが一般的。
0078JAPU01/10/06 04:16ID:???
RFC にはなっているけどね。
(RFC 2109: HTTP State Management Mechanism)

Netscape のサイトにあるのはこれだね。
http://www.netscape.com/newsref/std/cookie_spec.html

# Netscape のサイト分かりにくすぎ。
0079名無しさん@お腹いっぱい。01/10/06 09:27ID:???
>>75 ありがとうございます。
えっと、テキストデータを生成して、保存させるための
ダイアログを出したいという感じです(あとはクライアントに
おまかせ)。
できればこのとき、デフォルトのファイル名もこちらで
準備したいです。
0080名無しさん@お腹いっぱい。01/10/06 10:32ID:???
>>79
ヘッダを、
Content-disposition: attachment; filename="hoge.txt"
Content-type: application/octet-stream
にしたときは、ブラウザは保存ダイアログを出すべきだ、
…とRFC2616の19.5.1節に書いてあるよ。

ただし強い勧告(SHOULD〜)じゃなくて弱気な勧め(should〜)だし、
すべてのブラウザがこのRFCに準拠してるかどうか、非常に疑わしい。。。

昔のIEなんかだと、どんなHTTPヘッダを付けても
中身がテキストっぽければ画面に表示しちゃったからなあ。
0081名無しさん@お腹いっぱい。01/10/06 10:48ID:???
>>79
そう言う意味だったのかー、ゴメソ
昔テキストのDLカウンター付けたくてちょっとやった事があったな
僕も>>80氏に激しく同意です。mustにして欲しい所だ
application/zipとか吐けばかなりの確立でDL窓出せるんだけどねー
ただCGI通したいだけならLocationで飛ばすとか
0082名無しさん@お腹いっぱい。01/10/06 10:49ID:???
追
application/zip吐くとファイル名が.cgiになるので凄くダサいです
今のブラウザの実装は知らないけど
0083名無しさん@お腹いっぱい。01/10/06 10:57ID:???
ありがとうございます!>>80
ヘッダに書いて、あとはクライアント次第ということで
行こうと思います。助かりました。
0084名無しさん@お腹いっぱい。01/10/06 11:06ID:???
>昔のIEなんかだと、どんなHTTPヘッダを付けても
今でもそう、つーかバイナリ判別の精度が上がってるような  (-_-..
0085名無しさん@お腹いっぱい。01/10/06 11:21ID:MEgHrhMk
テキストの場合どうするんだろ?
text/plainだとブラウザで表示されちゃう率が高いから
application/octet-streamにするって感じ?
シフトJISそのまんま流すからapplication/octet-stream?

…ていうか漏れわけわかんないこと書いてる?
ヘッダむずかしー
0086JAPU@神戸もとらだね!01/10/06 11:24ID:???
>>80
テキストファイルなのにapplication/octet-stream 吐き出すのは利用者にとっては迷惑かも知れない。

> 昔のIEなんかだと、どんなHTTPヘッダを付けても
> 中身がテキストっぽければ画面に表示しちゃったからなあ。

今でも中身をみて判断するというダサい実装になっている。
text/plain 吐き出しても HTML っぽければそう解釈するし。

>>82
moe.cgi/nae.zip のようにアクセスすると nae.zip というファイル名で保存できるかもしれない。
00878001/10/06 12:13ID:780019M6
>85-86
あー、そうか。テキストだよな。

>テキストファイルなのにapplication/octet-stream 吐き出すのは
なはは。たしかに。

で、UserAgentを見てWin系なら改行コードを"\r\n"にするとか
小細工をはじめると、泥沼にズブズブ入っていくんですな、きっと。

>text/plain 吐き出しても HTML っぽければそう解釈するし。
がーん。ほんとだ。ダセー>IE5
0088名無しさん@お腹いっぱい。01/10/06 12:24ID:780019M6
>>84
>今でもそう、つーかバイナリ判別の精度が上がってるような  (-_-..
なんか最悪ですな。ヘッダを信用しないのはなぜだ?>MS
サーバ管理者にはmime.typesを管理する能力がないとでも?
あ、それはApacheの話か。。。IISはその辺どーなってんの?
00897601/10/06 13:59ID:???
>>77-78
ありがとうございます。
確かにCookie拒否されたらダメでしたね…。
そこまで考えてませんでした。
IPアドレスなど使って作ってみようと思います。

実装の違いについては、
$ENV{'HTTP_COOKIE'}を両者に吐かせてみても違っているので
もうちょっと調べてみたいと思います。
0090名無しさん@お腹いっぱい。01/10/07 13:18ID:n4Hjc.oI
掲示板だけを運営していたのですが閉鎖する事になり
その事を来て頂いていた皆さんにお知らせしたいのです。
閉鎖にいたっての報告などはHTMLに書きWWWにアップして
いるのですが、そのURLに自動的にジャンプするには
どういったcgiを書けばよいのでしょうか?
掲示板にURLを書けば良い事なのですが掲示板はもう削除して
しまって無いので自動的にそのURLにジャンプするcgiを教えて下さい。
0091名無しさん@お腹いっぱい。01/10/07 13:46ID:???
>>90
CGIなら。
#!/usr/local/bin/perl
print "Location: http://xxx.net/user/info.html\n\n";

.htaccessが使えるなら。
Redirect "/user/bbs/bbs.cgi" "http://xxx.net/user/info.html"
0092名無しさん@お腹いっぱい。01/10/07 17:10ID:n4Hjc.oI
>>91
ありがとうございます。
0093名無しさん@お腹いっぱい。01/10/07 20:05ID:TC4eI282
Cobalt (多分 Qube3 という機種) で Perl の CGI を動かそ
うとしたんですが、トラブってしまいました。

で、調べてみたら環境変数 PATH_INFO の値が変です。
http://hoge.fuge.co.jp/bbs/bbs.cgi
がスクリプトへの URL だとすると、
PATH_INFO=/bbs/bbs.cgi になっています。この値が設定さ
れていると CGI.pm の url(-relative=>1) が undef になり、
また url(-absolute=>1) は空文字列になっちゃうようです。

とりあえず new CGI をする前に $ENV{PATH_INFO} = '' と
して逃げましたが、同様の問題を経験された人はいますか?
あるいは、このサーバの設定が悪かっただけでしょうか…
0094名無しさん@お腹いっぱい。01/10/08 00:40ID:???
それ俺も喰らった事あるなぁ 多分鯖はズィタミだったと思う
丁度今の2chのread.cgiみたいにしてたんで困ったよ
結局正規表現でゴミ取って、使ってたけど鬱陶しいからQUERY使うようにしたよ(´Д`;) ヘナヘナ
原因不明、多分設定がタコだと思ったんだけど
俺も知り鯛あげ!
0095名無しさん@お腹いっぱい。01/10/08 00:41ID:???
下げちゃった・・・
0096名無しさん@お腹いっぱい。01/10/08 11:29ID:???
PATH_INFOが変てーと、原因はなんでしょうね。
触ったことないけどCGIWrapの問題?
古いApacheだとhttpd.confのAlias設定でも問題出るらしい?
00979301/10/08 16:07ID:???
CGIWrap や cobalt-users という ML のアーカイブ
を検索すると、同じような問題が出ていますね。原
因はまだよく分かりませんが。
0098名無しさん@お腹いっぱい。01/10/08 16:20ID:???
>>90
つーか自動的にジャンプさせるぐらい
METAタグでできるだろ。
0099名無しさん@お腹いっぱい。01/10/08 16:38ID:???
>>98
でもMETAタグを含むHTMLデータをbbs.cgiに吐かせるぐらいなら
Locationでいいじゃん?
0100名無しさん@お腹いっぱい。01/10/08 16:47ID:???
>>98
分かりきった事得意げに書くなよ (´Д`;) アウアウー
01019301/10/08 16:50ID:???
問題が起きた CGI.pm のバージョンは 2.56 でした。
もっと新しいバージョンなら url() のコードも変わっ
ているので、問題無いかも。
0102名無しさん@お腹いっぱい。01/10/08 17:11ID:???
>>101
今CGI.pm ver2.752のソースみたら、PATH_INFOを含む部分の
コードが何行かコメントアウトされてますね(笑

そしてCGI.pmのurl()が正しく動作するようになっても
PATH_INFO自体を使いたいという>>94の願いが
天に届くことはなかった。。。ナムナム
01039301/10/08 17:31ID:???
>>102
> 今CGI.pm ver2.752のソースみたら、PATH_INFOを含む部分の
> コードが何行かコメントアウトされてますね(笑

# If anybody knows why I ever wrote this please tell me!
ってアンタ(藁

> そしてCGI.pmのurl()が正しく動作するようになっても
> PATH_INFO自体を使いたいという>>94の願いが
> 天に届くことはなかった。。。ナムナム

url() なら代替案はいろいろありますがねぇ…

http://list.cobalt.com/pipermail/cobalt-users/2000-October/023300.html

AliasMatch と CGIWrap の関係で PATH_INFO が
正しくならないのは、仕方無いのかな…
0104名無しさん@お腹いっぱい。01/10/08 17:52ID:???
I am onanism boy!!
ore no eigoha metyakutya daze!!!!!
0105名無しさん@お腹いっぱい。01/10/08 19:45ID:x261FvpI
現在アンケートページを作ってます。
必須項目が入力されていない場合はエラー用のページに飛ばして、そこに戻る
ボタン(単なるリンク)を用意しています。
その戻るボタンをクリックして最初のアンケートページに戻る際、各質問項目に
前回の値(ユーザーがエラーページに飛ばされる前に入れていた値)をあらかじめ
入れておきたいのですが、どうやれば出来るのか上手く出来るのかが分かりません。

フォームデータはCGI_Lite.pmを使ってます。ヒントでも良いので、よろしくお願いします
0106名無しさん@お腹いっぱい。01/10/08 20:11ID:???
>>105
『ブラウザの「戻る」ボタンを押して戻ってください』
とエラーページに書いておく。カコワルイ?

解決になっていないような気もする。
0107名無しさん@お腹いっぱい。01/10/08 20:15ID:???
>105
foreach(keys %FORM){
print qq(<input type=hidden name="$_" value="$FORM{"$_"}">\n);
}
を、戻るボタンのところに埋め込めば?
0108名無しさん@お腹いっぱい。01/10/08 20:23ID:???
hiddenで渡すか

print<<"_END_";
ブラウザのバックボタンをオシテクレ  w
_END_
0109名無しさん@お腹いっぱい。01/10/08 20:26ID:WEFUx3wE
生IPを抜くCGIありませんか?
0110名無しさん@お腹いっぱい。01/10/08 20:33ID:???
コチラニドウゾ
http://salad.2ch.net/download/
0111名無しさん01/10/08 20:44ID:???
アンケートを受け付けるCGIが直接再入力用のフォームを出力するとかが
一番いいような気がしますが。

どうしてもHTMLで書かれたアンケート入力ページに戻したいという動機があるなら
JavaScript+Cookieとか?
0112名無しさん@お腹いっぱい。01/10/08 20:47ID:???
>>105
「戻らない」っていう方法もあるかも。不備の
ある部分だけのフォームを表示し続ける。OK な
項目は hidden で渡して逝く。

Yahoo Japan ID の登録がそんな感じだったと
思う。

手間がかかる割りに役に立たないような。
0113名無しさん@Windowser01/10/09 10:19ID:???
CGI.pm VERSION3 ってどなたか使った事ありますか?
とりあえず読み込み・初期化(do FILE)だけを比べてみると5倍ほど早いようですが。
0114名無しさん@Windowser01/10/09 11:13ID:???
あーでもまだバグだらけみたいですね。
#line 170 CGI/Object/Html.pm
にバグみっけ。
[CGI.pm version3.01]
0115名無しさん01/10/11 22:51ID:OddRAZgw
perl+cgiで掲示板旁から始めようと思っています。
そこで、とりあえず、ソースをつくって、
コンパイルしようとしたら、

#perl bbs2.cgi
(offline mode: enter name=value pairs on standard input)

というエラー??がでます。
意味が分かりません。

さらに、僕は、このcgiで
use DBI;
use strict;
use CGI;
use Date::Calc qw(Today Add_Delta_Days);
というふうに書いているのですが、
DBIとDate::CalcはCPANからインストールしたのですが、
CGIとstrictそのものは、CPANにおいてなかったませんでした。
この2つのモジュールは最初から入っていますよね??
ちなみにOSはFreeBSDでapacheを使ってます。
0116名無しさん01/10/11 22:52ID:OddRAZgw
ちなみにapacheでも
internal server errorがでます。

昔は、動いたんですが。
0117名無しさん@お腹いっぱい。01/10/11 23:55ID:aIf8/row
>>115
それ、なぜかCGI.pmがフルデバッグモードで動いてるみたいです。
use CGI qw(-no_debug ・・・);
と、-no_debugを指定すると消えませんか。
くわしくはperldoc CGIで"DEBUGGING"の説明を見てください。
011811501/10/12 00:01ID:2WUE5QsI
>>117
ほんとだ!
できました。こういう事がおきると初心者には対処できないです。
CGI、別に何もいじってないんですが。。。
"DEBUGGING"また読んでおきます。
0119名無しさん@お腹いっぱい。01/10/12 00:20ID:???
うちでも昔おんなじことがおきたよ。
バージョンによっては$CGI::DEBUGの初期値が2に設定されてるのでは
ないかと推測。本来は1なんですよね?
ていうか今↓のスクリプトを実行したらDEBUG=1になってた。

use CGI;
print "VERSION : $CGI::VERSION\n";
print "DEBUG : $CGI::DEBUG\n";

実行結果
VERSION : 2.752
DEBUG : 1
0120名無しさん@お腹いっぱい。01/10/12 15:23ID:2WUE5QsI
初心者ですが、頑張って掲示板を完成させてみました。
しかし、以下のソースだと、ページをリロードするたびに、
同じ内容の投稿がなされてしまいます。その改善法を御教示お願いします。
0121part101/10/12 15:24ID:2WUE5QsI
#!/usr/bin/perl

use DBI;
use strict;
use CGI qw(-no_debug);
use Date::Calc qw(Today Add_Delta_Days);

#パスの設定
my $nkf = '/usr/local/bin/nkf';

#オブジェクトの生成
my $q = new CGI;
my $msg = $q->param('msg');
#出力文字コードの設定
open HTML, "|$nkf -e";
select(HTML);
$|=1;
0122part101/10/12 15:25ID:2WUE5QsI
#!/usr/bin/perl

use DBI;
use strict;
use CGI qw(-no_debug);
use Date::Calc qw(Today Add_Delta_Days);

#パスの設定
my $nkf = '/usr/local/bin/nkf';
0123part201/10/12 15:25ID:2WUE5QsI
#html表示
print $q->header(-expire=>'now');
print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD');
print "掲示版";
print $q->hr;
print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi');
print $q->textarea(-name=>'msg',
-rows=>3,
-column=>16);
print "<br>\n";
print $q->submit(-name=>'submit',-value=>'送信');
print $q->end_form;

if ($msg ne '' ){

open(OUT,">> ./bbs2.dat");
print OUT "$msg<HR>\n";
close(OUT);
}
0124part301/10/12 15:26ID:2WUE5QsI

# データファイル内容を表示
open(IN,"./bbs2.dat");
print <IN>;
close(IN);

print $q->end_html;
close(HTML);
0125名無しさん@お腹いっぱい。01/10/12 15:27ID:2WUE5QsI
121 123 124
の順番のソースファイルです。
ソースそのままはれるかと思ったら
"改行多すぎます"
といわれたので、分割しました。
掲示板ぐちゃぐちゃにしてごめんなさい
0126ソースは見てないけど ^-^;01/10/12 15:39ID:???
投稿した後にリロードするとそうなるのはブラウザの仕様ですの
POSTに値がセットされた状態でリロードされるから
いやならLocation: ./script.cgi\n\n か
METAでほげってセッションを分けるですの
0127名無しさん@お腹いっぱい。01/10/12 15:39ID:???
多重投稿を防ぐ方法のメジャーなものには
・直前のデータを読み込んで、内容を比較する
・ワンクッション置く(「無事投稿されました」のようなページを置く)
・最後にLocationで飛ばす
があります。
リロードで送信されるのを避けるにはLocationが適当でしょう。
0128名無しさん@お腹いっぱい。01/10/12 15:42ID:AsTpdvqA
>>120
use DBI;
012912001/10/12 16:15ID:2WUE5QsI
良く理解できました。
ありがとうございます。
頑張ります。
0130名無しさん@お腹いっぱい。01/10/12 21:04ID:YvyJWcYo
AnHttpd使ってローカル環境でCGIのチェックをしているのですが
cookieが上手くブラウザに格納されてくれません。
ひょっとして http://localhost/ だとだめなんでしょうか?

あと path、domeinって省略してもブラウザで勝手に解釈
してくれるんでしたっけ?
013113001/10/12 21:10ID:???
>>130
自己レスです。
cookie吐き出すだけのやつ試してみたらちゃんとlocalhostでも
登録されていました。どうやら他に原因があるようです。
どうもすいませんでした。
0132名無しさん@お腹いっぱい。01/10/13 02:00ID:???
>あと path、domeinって省略してもブラウザで勝手に解釈
>してくれるんでしたっけ?
OK、でもDOTが2つ無いとダメだよ
013313001/10/13 02:09ID:???
cookie登録されない理由わかりました。
HTTP::C\ookiesの

scalar( $cookie_ja->as_string );

で取り出した expires の書式が

Mon, 31, Dec 2001 20:00:00 GMT
じゃなくて
2001-12-31 22:00:00Z

になっていたのが原因でした(なぜにこの書式?)。

>>132
DOT2つというのはどういうことでしょう?
0134名無しさん@お腹いっぱい。01/10/13 02:16ID:???
>>132
DOT2つってHTTP::Cookies使うときでしょ!
おれもハマッたことあるよー。やっぱlocalhostでした。
あれはナニ?Cookieにそんな制限あるんですか?
0135名無しさん@お腹いっぱい。01/10/13 02:21ID:???
ここのドメインの所読んでみて、僕も英語がプアだから
セキュリティ確保なんだけど、実は1つでも良いんだよなあ・・・
http://www.netscape.com/newsref/std/cookie_spec.html
0136名無しさん@お腹いっぱい。 01/10/13 02:23ID:???
DOT2つってこれじゃなくて? -> .
0137名無しさん@お腹いっぱい。01/10/13 02:23ID:???
うわヤな言い方だ
s/僕も/僕は/ (-_-)
013813401/10/13 02:48ID:Deyy6KfQ
>>135
おお。さんきゅ。セキュリティかー。
0139名無しさん@お腹いっぱい。01/10/13 03:34ID:qXCBod/U
またまたcookieについてです。今作っているのが

ローカルマシン
 ↓
CGI( LWP::UserAgent、HTTP::Cookies使用 )
 ↓
目的のサイト

という中継ツールなのですが、「目的のサイト」のcookieを
ローカルマシンに保存することはできました。
しかしそれを「目的のサイト」側から読ませることができません。

具体的には以下のようにやっています。
----------------------------------
$ua = LWP::UserAgent->new;
$ck = HTTP::Cookies->new;
$hd = HTTP::Headers->new;
$req= HTTP::Request->new( 'GET', 'http://www.hoehoe.com/' );

### ブラウザの cookie情報をドメインを書き換えて登録
foreach $ckey ( keys %COOKIES ){
  $ck->set_cookie( , $key, $COOKIES{$key}, '/', '.hoehoe.com', , , ,60*60*24*365*10 );
}

$ck->add_cookie_header( $req );
$ua->cookie_jar( $ck );

$res = $ua->request( $req );
$ck->extract_cookies( $res );
----------------------------------

ドメイン名を書き換えて HTTP::UserAgent に登録って出来るのでしょうか?
0140名無しさん@お腹いっぱい。01/10/13 06:40ID:bzY0j0uY
すみません。
カウンターなんですけど、
ソースにはちゃんと出てるのに
画像が表示されないのはなぜですか?

<img src="cgi-bin4/ecount.cgi?6"width="6" height="13">

こんな感じで設置してるのですけど。
0141名無しさん@お腹いっぱい。01/10/13 07:48ID:???
>140
まず基本的なこととして、カウンターのURLを直接入力してちゃんと表示されるか確認してみよう。
それで表示されたら単なるURLの指定ミス。
表示されなかったらスクリプトの問題。
スクリプトのソースを公開したまへ。
014214001/10/13 08:49ID:bzY0j0uY
>>141
わざわざ有難う御座いますです。
ログファイルのパス:OK!
ログファイルのパーミッション:OK!
画像:./gif/0.gif → OK!
画像:./gif/1.gif → OK!
画像:./gif/2.gif → OK!
画像:./gif/3.gif → OK!
画像:./gif/4.gif → OK!
画像:./gif/5.gif → OK!
画像:./gif/6.gif → OK!
画像:./gif/7.gif → OK!
画像:./gif/8.gif → OK!
画像:./gif/9.gif → OK!
ロック形式:symlink
ロックディレクトリのパス:OK!
ロックディレクトリのパーミッション:OK!

ちゃんとOKでてるのになぜか画像表示されない・・・
0143名無しさん@お腹いっぱい。01/10/13 08:52ID:???
>142
そうじゃなくて。
http;//xxxxxxxx.com/cgi-bin4/ecount.cgi?6
でカウンターは表示されるの?
014414001/10/13 09:01ID:bzY0j0uY
>>143
はい。画像はちゃんと表示されました。
0145名無しさん@お腹いっぱい。01/10/13 09:07ID:???
>144
じゃあ、ソース公開きぼん。
ソースを見ないと画像の表示されない理由はわからないよ。
Content-typeが間違ってるとかじゃないの?
014614001/10/13 09:23ID:bzY0j0uY
ttp://www.kent-web.com/count/ecount.html?

kentのecountなんですけど。。

open(IMG,"$imgdir$view$tail") || &error;
print "Content-type: image\/$mime\n\n";
binmode(IMG);
binmode(STDOUT);
print <IMG>;
close(IMG);

こんな感じなんですが間違っているのかどうか
さっぱり分かりませんです。
0147名無しさん@お腹いっぱい。01/10/13 10:04ID:???
http;//xxxxxxxx.com/cgi-bin4/ecount.cgi?6

で画像が表示されるなら

<img src="cgi-bin4/ecount.cgi?6"width="6" height="13">

が間違ってるんだろ。
0148名無しさん@お腹いっぱい。01/10/13 10:35ID:???
>147
そうだ。
ちょっと眠かったからボケてしまった。
スマソ。>140
0149 01/10/13 11:50ID:???
015013901/10/13 14:33ID:qXCBod/U
>>139

$ck->set_cookie( , $key, $COOKIES{$key}, '/', '.hoehoe.com', , , ,60*60*24*365*10 );

↑でドメイン、パスを書き換えて UserAgentに cookieを登録することは
出来ましたが、目的のサーバーからは見えないようです。

HTTP::UserAgentって自分の $ENV{'HTTP_COOKIE'} を持つことは
できないのですか?
0151名無しさん@お腹いっぱい。01/10/13 14:51ID:???
Cで全ての環境変数を表示させることはできますか?
getenv()をどう使ったら全部表示させられるか教えてください。
■ このスレッドは過去ログ倉庫に格納されています