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

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

■ このスレッドは過去ログ倉庫に格納されています
0001ななし ◆E6qQ.htN7o 03/01/03 02:56ID:H5ub4PWW
CGIの運用に関する質問スレッドです。

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

※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
  ↓
【Perl】初心者コーナー Part18
http://pc.2ch.net/test/read.cgi/php/1037797479/l50

過去ログ・関連スレッドは >>2-5 あたりに
0267nobodyさん03/02/05 13:24ID:???
>>266
何使っても結局はまると思うぞ。
0268nobodyさん 03/02/05 13:32ID:/TzrVcwr
if ( length ($FORM{"number$count"}) == 0){
$num{"$str"} = 0;
}
else{
$num{"$str"} = $FORM{"number$count"};
}

とは何をやっているのですか?
初心者で厨な質問で申し訳ないです

お願いいたします
0269nobodyさん03/02/05 13:33ID:???
>>268
データがあるなら代入して無いなら取りあえず0
0270_03/02/05 14:35ID:KqDONkoE
>>268
if文の意味なしと思われ。
$num{"$str"} = $FORM{"number$count"};
0271nobodyさん03/02/05 15:30ID:???
>>270
$num{"$str"} がぬるぽになることを恐れたんだろう。
0272nobodyさん03/02/05 15:45ID:???
コンナトコロデ アブラヲウッテルトハ
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>271
0273nobodyさん03/02/05 21:06ID:tr4FI/E+
質問です。

Perlで、use IO::Socketを使って、
2chを読んで加工して表示するCGIを作っているのですが、

板自体
http://pc2.2ch.net/php/
は読めるのですが、
http://pc2.2ch.net/test/read.cgi/php/1041530204/l50
などのCGIが出力するスレが読めません。

Found
The document has moved here.

が帰ってきます。どうすれば読めるようになりますでしょうか?
ヒントでも構いませんので、よろしくお願いします。
0274nobodyさん03/02/05 21:15ID:???
Locationヘッダーが指すファイルを読む。
0275nobodyさん03/02/05 21:32ID:gt7kwXPU
激しく厨房な発言ですので注意してください

@niftyでmethod=POSTが使用できるのでしょか?
いろいろ見てはいるのですが解らなかったので
おしえてくほしいです
0276nobodyさん03/02/05 21:36ID:???
@niftyにあるサイトの掲示板の書き込みボタンでも押してみればいいじゃん・・・
027727503/02/05 21:53ID:gt7kwXPU
押しましたけど・・・わからないですよ??
0278nobodyさん03/02/05 21:58ID:???
>>277
すぐさまこの板から出てゆけ。
027927503/02/05 22:00ID:gt7kwXPU
そんなこといわないでくだされ・・・・
BBS設置できなくてこまってるんでつよ・・・
0280nobodyさん03/02/05 22:02ID:???
>>279
エラーがでないなら使えるってことだろうが。
それにCGIを許可しておいてPOSTを禁じるやつがどこにいる。
0281nobodyさん03/02/05 22:02ID:???
>>279
ニフならプロバイダ謹製のがあるんじゃないか?
POSTも分からんのならそういうの使え。
028228003/02/05 22:03ID:???
ところで、CGI専用ディレクトリにおいている?専用のURLでアクセスしている?
確か@niftyはそういう制限があったはず。
028327503/02/05 22:11ID:gt7kwXPU
281
二つひつようなもんで
専用の場所に置いて専用のURLでアクセス
してるんですが、えらーになるんですよ
028427303/02/05 23:15ID:tr4FI/E+
>>274さんありがとうございます。

2chを取得する>>273の件ですが、
Headerを取得してみたところ、

head pc2.2ch.net /test/read.cgi/php/1041530204/l50 80
HTTP/1.1 302 Found
Date: Wed, 05 Feb 2003 14:11:00 GMT
Server: Apache/2.0.44 (Unix) mod_perl/1.99_07-dev Perl/v5.8.0 mod_ssl/2.0.43 OpenSSL/0.9.6g DAV/2 FrontPage/5.0.2.2624 PHP/4.3.0RC3 mod_gzip/2.0.26.1a
Location: http://binbo8.he.net/cgi-bin/error500
Connection: close
Content-Type: text/html; charset=iso-8859-1

となってLocationに期待のものが入ってません。
GETはhostだけ渡してますが、なにかやり方がマズイのでしょうか。

0285nobodyさん03/02/05 23:29ID:???
>>284
$ telnet pc2.2ch.net 80
HEAD /php/ HTTP/1.0
Host: pc2.2ch.net

うしし。
0286nobodyさん03/02/05 23:48ID:???
素直にmonazillaに誘導した方が良くない?
028727303/02/05 23:55ID:tr4FI/E+
>>286さんありがとー
monazillaってとこに言ってきたら、read.cgiの仕様が解説してあって

print $SOCKET "GET $path HTTP/1.0\r\n";
print $SOCKET "Host: $host\r\n";
print $SOCKET "Connection: close\r\n";
print $SOCKET "User-Agent: dummy\r\n";
print $SOCKET "Accept: */*\r\n";
print $SOCKET "Accept-Language: ja\r\n";
print $SOCKET "\r\n";

したら見事読みました! 
0288nobodyさん03/02/06 06:20ID:???
質問です。よろしくお願いします。
ttp://homepage2.nifty.com/yoshi-m/makehp/free_cgi/CGI/counter/now_counter.html
↑上記のサイトにある閲覧者カウンター(現在の訪問者数を数えるCGI)の設置を
試みています。無事、設置できたのですが、同一IPアドレスをチェックする機能が
ついていないので、GOOGLEなどで検索して調べて同一IPのカウントを制限するような
改造を試みたのですが、どうにもうまくいきません。
バカな質問かもしれませんが、どなたか、どうしたら上手くいくかご教授お願いでき
ないでしょうか?
0289nobodyさん03/02/06 07:04ID:???
>>288
具体的にどうやって、どううまくいかないのかを書いてくれないと。
1から10まで手取り足取り教えてもらえると思ったら大間違いだよ。
0290nobodyさん03/02/06 08:54ID:???
>>288
1から10まで手取り足取り教えてほしければこちらへ

【 スクリプト改造工房 PART 5 】
http://pc2.2ch.net/test/read.cgi/php/1028193595/







やってくれる人がいるかどうかはしらんが。
0291nobodyさん03/02/06 12:48ID:???
perlで掲示板組んでます。
いまいちわからないんですが、例えばフォームのvalueで指定した文字(変数?)は
$変数名にそのまま反映するんでしょうか?

初歩的なことを聞いてスマソです。
誰か教えて下さい〜。。もう一人じゃだめぽ。。
0292nobodyさん03/02/06 13:02ID:???
>>291
されない。
0293nobodyさん03/02/06 13:10ID:???
>>291
君にはPHPをすすめる。
0294nobodyさん03/02/06 13:58ID:???
最近はされんけどなw
029529103/02/06 14:09ID:???
>>292
>>293
>>294
されないんでつか。。(・ω・;)
返答ありがとうございました。
0296nobodyさん03/02/06 17:08ID:???
CGI.pmで、こういうのがあったぞ。

IMPORTING ALL PARAMETERS INTO A NAMESPACE:
$query->import_names('R');

This creates a series of variables in the 'R' namespace.
For example, $R::foo, @R:foo. For keyword lists, a vari-
able @R::keywords will appear. If no namespace is given,
this method will assume 'Q'. WARNING: don't import any-
thing into 'main'; this is a major security risk!!!!

最後の1行は、つい最近までPHPのデフォルトの動作だった。
PHPはそんなもんなんだよ。
0297nobodyさん03/02/06 21:19ID:s4S7/zxS
常日頃からパソコン(またはサーバー)で短い時間ごとにメールを受信させ、
そのメールの中身を解析して適切な答えを返す&HTML生成してくれるものは
ありますか?
0298(=`ェ´=) ◆9rperl5mn2 03/02/06 21:28ID:???
>>297 AI搭載?
0299nobodyさん03/02/06 21:36ID:s4S7/zxS
いえいえ、初歩的にOutlookExpressとかで「○分おきに送受信」でもいいです。
0300(=`ェ´=) ◆9rperl5mn2 03/02/06 21:47ID:???
>>299
単に定期的にメールを受信させるだけ?
CGIと関係あるのかな・・・
0301nobodyさん03/02/06 21:49ID:???
>>300
ないと思われ
ブラウザで出力→CGI、という短絡的な考えなんでしょ

ところで300おめこ
0302nobodyさん03/02/06 21:55ID:s4S7/zxS
受信させる方法については>>299でもいいが、
肝心なのはその後で、自動に受信したメールの本文を自動に解析し、
適切な答えを返信する&HTML生成してくれるものを探しています。
0303nobodyさん03/02/06 22:06ID:???
「適当な」っていうのが、フレーム問題が発生しそうな課題ですな。
0304nobodyさん03/02/06 22:07ID:???
>>302
探しています……って、そういう目的ならスレ違いだよ。
0305nobodyさん03/02/06 22:23ID:s4S7/zxS
ご指摘どおり、スレを変えました。
アドバイスありがとうございます。

http://pc2.2ch.net/test/read.cgi/php/1041564353/266-
0306nobodyさん03/02/08 14:13ID:P3EB+0+g
CGIというか、場合によってはHTMLやブラウザの問題なんですが、
以下のような仕様は有名なものなのでしょうか?

あるページAではフレームを切って、
Bという、CGIで作られたサイトを(Aの一部に)表示している。
この時、Bに渡される環境変数HTTP_REFERERは、Perl式で書くと
Win IE6では$ENV{'HTTP_REFERER'}はAのURL。
Mac IE5では$ENV{'HTTP_REFERER'}はundefined。

なぜWinとMacで違うんでしょう。RFCとかでは既定されてないのかな。
0307nobodyさん03/02/08 14:28ID:n3LLA3DF
http://bbs.1oku.com/bbs/bbs.phtml?id=yasuko
★もうすぐ春ですよ★
0308nobodyさん03/02/08 21:48ID:???
>>306
そんなのブラウザに実装によるだろう。諦めろ。

つうかフレームを使うページは(略
0309nobodyさん03/02/09 00:27ID:???
@t = split(/ /, join(/ /, ("1","2","3")));
print $#t;

とすると2ではなくて0と表示されるのは普通?
漏れの環境がオカシイの?
半角スペースでjoinすると、ぴっちり繋がるもんなん?
031030903/02/09 00:39ID:???
スマソ、joinの第一引数は""で囲む、普通の文字列ですた。
0311nobodyさん03/02/09 00:41ID:???
>>309
@t = split(/ /, join(' ', ("1","2","3")));
print $#t;
0312nobodyさん03/02/09 03:56ID:???
ローカル環境のperl.exeが勝手に消滅してるみたいなんだけどなんでかな?
削除した覚えはないのだが??

今までCGIのチェックに使ってきて何の問題もなかったんだけど、不思議。

つい2,3日前までanhttpd使ってて、今日PHPをapacheのモジュールで
動かしてみようとwindows用のapache(以前入れて放置してあった物)を
いじってたらperl/CGIが動かない。
PHPは正常に動くのになんでかな?と思いつつ、パス関係かなとperl.exeを
探したら??無い。あれ?って思ってanhttpdを起動したら昨日まで異常なかった
Perl/CGIがエラーに・・・。
なんでじゃ〜?不思議でしょうがない。こんな事ってあるんだろうか?
0313nobodyさん03/02/09 04:01ID:???
私もPHP入れたらPerlがおかしくなった事あったけど
私の場合は削除はされてなかったんで、パスの指定し直したら直った。
まぁ、Perl再インストールすれば大丈夫じゃないの?
ついでに最新版確認してきてね。
0314nobodyさん03/02/09 04:55ID:???
うちはAN HTTPDで使ってるけど、PHP入れても別におかしくはなってないよ。
ちなみに他ディレクトリで解凍してから、C:\php にコピーして設定という方法で
インスコした。
0315nobodyさん03/02/09 05:32ID:???
>>314
同様の環境。
ただし、perlとphpは同じドライブに入ってないけどw
0316nobodyさん03/02/09 23:57ID:Xc8YBGxY
質問です。
今までPerlでCGIやってたんですが、C言語でCGIを動かそうと思ってます。
色々サイト巡ってとりあえずCygwinをインストールしました。
しかし、Apacheの設定がどうしても分かりません。
Windows+ApacheでC言語のCGIを動かすための説明があるサイト等、
紹介してもらえないでしょうか。
0317nobodyさん03/02/09 23:59ID:???
>>316
拡張子無しを実行条件にしたらどうだい?
0318nobodyさん03/02/10 00:05ID:???
>>316
Perlで書いたものが動けば問題なく動くはずだけど。

コンパイラはcygwin上のgccよりもVC++やBCCの方がいいと思う・・・
0319nobodyさん03/02/10 00:18ID:VClzLIdP
レス多謝です。

>>317
すみません、不勉強なもので意味が分かりませんでした;
差し支えなければ、もう少し具体的に教えて頂けないでしょうか。

>>318
あ、そうだったんですか・・・(恥
BCCはC言語の勉強に前から使ってたんですが、
どうやってCGIとして動くようにすればいいのかが分からず・・・
gccだと gcc -o test.cgi test.c みたいに実行するようなこと書いてあったんですが
BCCの場合はどうすればいいんでしょうか。
0320nobodyさん03/02/10 00:23ID:???
>>318
bcc32のオプションが分からないから答えられないけど、できあがった実行ファイルの拡張子を.cgiにすればよいのでは?
0321nobodyさん03/02/10 00:27ID:VClzLIdP
>>320
printf("Content-type: text/plain\n\n");
printf("Hello, World!");
をBCCでコンパイルし、.cgiにリネームしてウェブ鯖で実行したところ、
ダウンロードダイアログが開いて、
落としたのは「Hello, World!」と書かれたテキストファイル.cgiでした・・・
何故ブラウザで開かれないんでしょうか・・・
0322nobodyさん03/02/10 00:28ID:???
>>321
>printf("Content-type: text/plain\n\n");
原因。
0323nobodyさん03/02/10 00:28ID:???
>>321
Perlで同じようなものを作ったときは問題なく表示されるの?
0324nobodyさん03/02/10 00:32ID:???
ああぁぁぁぁぁああっ
すみません、書き込み直後気付いてtext/htmlにしたらちゃんと出来ました。。
皆さんどうもありがとうございました!
0325nobodyさん03/02/10 00:34ID:???
>>323
はい、Perlだとtext/plainでも表示されたんで、すぐに思い付けませんでした。。。
0326nobodyさん03/02/10 00:34ID:???
text/plainなら大抵の環境でプレーンテキストとして開かれると思うけど^_^;
0327nobodyさん03/02/10 00:35ID:???
>>325
そういう部分は言語によらないはずだよ。
打ち間違わなかった?
032832503/02/10 00:44ID:???
打ち間違いは多分無いと思いますけど・・・
手持ちの「Per;/CGI入門教室」とか言う本も、
最初のとこはtext/plainでやってます。。。
0329nobodyさん03/02/10 03:21ID:???
>>328
ブラウザの仕様だと思われ。
IEではダウンロード、NN7,OPERA,Lynxだと表示。
0330nobodyさん03/02/10 04:33ID:???
>>329
でもPerlではならないって言っているよ。
打ち間違いとしか思えない・・
0331nobodyさん03/02/10 11:46ID:???
MIMEタイプをプレーンテキストにすると、ダウソになることあるよ、perlでも。
0332nobodyさん03/02/10 18:34ID:???
2つのperlファイルがあるんですけど
両方とも1つのcgiを改造して作成しました。

それをローカルでテストすると上手く動くのに
サーバーにアップしたら片方はエラーで動かないんです。

もちろん1行目やパーミッションも同じように設定してます。
何が原因なんでしょうか・・・。
0333nobodyさん03/02/10 19:06ID:???
>>332
それだけで分かれというほうが無理だろ……
0334nobodyさん03/02/10 23:02ID:???
>>332
>もちろん1行目やパーミッションも同じように設定してます。

むしろそれが原因ではないのかと。
033531203/02/11 01:19ID:???
>>312でperl.exeが消滅した件ですが、理由がわかりました。
消滅する前にとあるソフトをインストールしたんですが、そのとき
インストールする前にインストーラーの
「インストールが完了していません。続けますか、やめますか?」
のエラーダイアログが出てそのメッセージをキャンセルしたんですよ。
それがactive perlをインストールした時のものだったわけです。
つまり、前のactive perlが完全にインストールされてなくて、
(インストール時にPCが固まったか何かで)半端なまま使ってたって事です。
それでインストールをキャンセルしたために、使ってたperl.exeが削除
されてしまったって事ですな。
033631203/02/11 01:24ID:???
と言う訳でactive perlを再インストールして解決しました。

>>313
バージョンは5.6.1 build 633 と5.8.0 build 804 ってのが
あったんですが、違いがよく分かんないのでどっちでもいいやって
事で5.8.0 build 804 の方をインストールしてみました。
http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
0337nobodyさん03/02/11 22:44ID:VNfk5QCU
DBと連携するCGIがあるんですけど、
今度セキュリティレベルを高める、という話になりました。
で、やりだまに上がったのがCGIのファイル中に記述してあるDBユーザ/パスワード。
これを別ファイルにするとか言ってるんですけど、意味あるんでしょうか??
皆さんは、こういう場合どうやってますか?
教えてくださいませ。
0338nobodyさん03/02/11 22:50ID:???
>>337
別ファイルにして、それを外部から参照できない場所(ドキュメントルートより上位)に
置けばいいんでない?
0339nobodyさん03/02/11 23:07ID:VNfk5QCU
ようわからんのですが、cgi-binの中なんて普通参照できないですよね。
それともできちゃうもんなんですかね?
0340nobodyさん03/02/11 23:17ID:???
>337
たとえば、SuEXECを導入しているとすると意味がある。
実行ファイル *.cgi のパーミッションは701にして、
それ以外の *。pl などは600にする。DBに渡すパスワードとかはこの*.plの方に記述しておけば、
ゲストユーザーからは*.plを実行したり読み出したりする権限はないので、
セキュリティは保たれる。
034133703/02/11 23:50ID:VNfk5QCU
なるほど。
よく理解できました。ありが�d
0342さ迷える子羊03/02/12 02:22ID:???
地域サイトを作成して、そこのメール会員を募集し
毎週メールを送ることになりました。
サーバは専用cobaltRAQ4でWEBと併用、言語はPerlなのですが、
下記のように考えております。
自分のいくつかあるメールアドレスに計2000通とか送って実験したのですが
結構時間がかかります。
効率のよい方法はありませんでしょうか?
qmail,Postfixにするとかではなく、あくまでもperl内で。

for(@member){
会員の情報をげっと = split();
$mail = ヘッダと内容を作る;
&jcode::convert(\$mail,"jis","sjis");
if( !open(MAIL,"|$sendmail -t") ){ &error('sendmail'); }
print(MAIL $mail);
close(MAIL);
}
0343nobodyさん03/02/12 03:58ID:???
perl内で出来ることなんて無いんじゃないかな。
できても微々たるものかと。
大きそうなのはconvertくらい?

qmailやpostfixが嫌ってことは、sendmailでやりたいってことでいいのかな?
smtpfeedとかいうのがあるから調べてみるといいかも。
0344さ迷える子羊03/02/12 13:23ID:???
>>343 さんレスありがとうございます。
qmail、postfix、smtpfeed等ですが嫌いなわけではないのです。
専用サーバなのにsuを頂けない状態なので、
インストールは「お金を払って頼む」しか手段がありません。
以前ImageMagick入れてもらうだけで10万近くかかりました。
ですので、ソフトのインスト−ルは見合わせております。
個人のお金ではないのですが、ちょっと高すぎて躊躇します。
0345nobodyさん03/02/12 15:43ID:???
>>342
> if( !open(MAIL,"|$sendmail -t") ){ &error('sendmail'); }

自力で SMTP 喋るようにすれば、少なくとも sendmail を
立ち上げる負荷は無くなる。
Socket.pm (Perl の標準モジュール) くらいはサーバにも
入ってるだろ?
0346さ迷える子羊03/02/12 16:03ID:???
>>345
ご教授ありがとうございます。早速調べて見たいとおもいます。
0347nobodyさん03/02/12 22:50ID:???
>>345
絶対Socket=SMTPライブラリ・・・いや、メール送信ライブラリと勘違いしてるぞ。
0348nobodyさん03/02/13 00:10ID:???
>>347
?
0349nobodyさん03/02/13 05:10ID:???
>>347
Socket使って自力(sendmailに頼らずに)でやれという意味だと思うけど。
0350nobodyさん03/02/13 08:45ID:???
>>349
わかってる。それを>>346は>>347だと勘違いして今頃失望している頃だろうと言っている。
035134603/02/13 13:58ID:???
use Socket使ってやるのではないのですか?
PORT番号を取得してソケット生成して・・・・・
って、あまりまだ調べてないのですが。
0352nobodyさん03/02/13 15:26ID:???
>>351
その方向で合ってるよ。
ちなみに SMTP のポート番号は通常 25。
詳しくは RFC 2821 な。
ttp://www.puni.net/~mimori/rfc/menu.html
0353nobodyさん03/02/13 16:42ID:???
>>350
ならば「誰が」を省略するなよ。紛らわしい。
0354nobodyさん03/02/13 17:41ID:???
読み手の読解力が無いだけでしょ
0355nobodyさん03/02/13 20:59ID:???
>>353
禿同
>>354
どっちにもとれるだろ。読解力ないの?
0356nobodyさん03/02/13 21:20ID:???
>>355の中の人も大変だな。
0357nobodyさん03/02/13 21:25ID:???
>>355
文脈から推測する力も無いのか・・・
哀れだ
0358nobodyさん03/02/13 21:32ID:???
プログラムの前にまず国語からはじめような。
0359nobodyさん03/02/14 03:36ID:???
>>357
文脈から推測してもどちらとも取れるが。
0360nobodyさん03/02/14 03:36ID:???
>>346
IO::Socket便利だよ。

でもPerlの方が重い予感。
専鯖ならともかく、共有鯖だったらやんないでね。
0361nobodyさん03/02/14 03:37ID:???
「勘違いしてるぞ。」が「勘違いするぞ。」ならば分かるが。
0362344=34603/02/15 04:08ID:???
>>360
さらなる情報ありがとうです。後日調べたいと思います。

>専鯖ならともかく、共有鯖だったらやんないでね。
明記の通り専用サーバですのでガンガンメール送ってみたいと思います。
ってほど会員増えないと思いますけど。
ちなみに戦闘力調べたら、1分で250通前後でした。
しかしながら4種類のメールに対して複数送っているので、
実際はそれ以下か・・・・・(´・ω・`)ショボーン
0363nobodyさん03/02/15 07:53ID:???
>>359,>>361
代弁ありがとう。
0364nobodyさん03/02/15 09:31ID:???
下らない論争で随分消費してますね(´ё`)
0365nobodyさん03/02/15 11:10ID:???
>>364-365
その筆頭。
0366nobodyさん03/02/15 13:04ID:WKdky/xD
read.cgiって何ですか?
■ このスレッドは過去ログ倉庫に格納されています