1 :
ななし ◆E6qQ.htN7o :
03/01/03 02:56 ID:H5ub4PWW
2 :
ななし ◆E6qQ.htN7o :03/01/03 02:57 ID:H5ub4PWW
3 :
ななし ◆E6qQ.htN7o :03/01/03 02:57 ID:H5ub4PWW
4 :
ななし ◆E6qQ.htN7o :03/01/03 02:57 ID:H5ub4PWW
質問してもよろしいでしょうか?
質問せずに何をするのだ。
CGIのことは何も知りませんが、この内容をチェックしてください。 お願いします。
BBSのログのパーミッションを666に設定してあるんですが、 ログのアドレスを直接参照すると、ログが直接見られます。 CGIを経由しないと参照できないようにしたいのですが、何か方法ありますか?
10 :
nobodyさん :03/01/03 22:41 ID:jx+nlJxM
>9 ログにCGIのソース書かれると危険。 あまりお勧めできない。 >8 .htaccess
12 :
935 :03/01/04 10:45 ID:???
前スレの948さん。遅ればせながらレスサンクス!
>>10 有無を言わさず chmod(0666, "logfile");
(Perl) なんてやるクソスクリプトだった
らどうするよ。
#実在するから気おつけてね。
>>10 suEXECが有効なサーバじゃないとエラーになるでしょ。
16 :
nobodyさん :03/01/06 07:41 ID:abYGXX0G
オフラインで、フォルダの中にtako.html と hoge.exe があるとします hoge.exe はHTMLを吐く実行ファイルで、tako.html には以下のフォームが入っています。 <HTML> <FORM ACTION="file:///C:/home/Programing/EPA4Bunkai/Text2IPA.exe"> <INPUT TYPE="submit" VALUE="ボタン"> </FORM> </HTML> ボタンを押したら、hoge.exe の吐いたHTMLを表示させたいのですが、 上記の条件だと、ファイルのダウンロードになってしまいます。 やはり、Apache などを走らせてないと駄目なのでしょうか?
>>16 あたりまえだろ。
そんなんで実行できたら、セキュリティーホールに使われるって。
18 :
nobodyさん :03/01/06 13:14 ID:JhCfMZHJ
ネットスケープ6を使ってやりたいのですが、UTFの文字コードをEUCに PERLのプログラムで変換する方法を教えてください。 具体的には ・変数にUTFの文字コードを代入 ↓ ・その変数をEUCに変換 とやりたいのですがどのようにやったらよいのでしょうか? どなたかよろしくおねがいします。
19 :
18 :03/01/06 16:13 ID:vFPYY9M3
度々すいません。UTF8の文字コードを$optionにいれているのですが 今調べて $option =~ tr/+/ /; $option =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*option,"euc"); とやってみたのですが$optionを表示させると???????となってしまいます。 どうしたらよいのでしょうか?
20 :
nobodyさん :03/01/06 16:50 ID:8Wd4rwQY
コンピュータにもお前の意思が意味不明だってことだよ。
というか、コンピュータは言われた通りのことをやっている。 問題ない。
>>19 jcode.plにはunicode系の変換機能はありません。
jcode.pmで変換できますが、サーバサイドのPerlが実装している必要があります。
utf8<=>eucの変換テーブルを用意して
1文字1文字変換していくルーチンを自作するか
適当なサイトにあるルーチンを借用してくださいませ。。
23 :
nobodyさん :03/01/06 20:01 ID:8Wd4rwQY
まず、jcode.pl でやろうとしているんだろうけど UTF8を扱えるか調べてみろ。
apache2でCGI経由でnewaliasesしたいけど、suEXECするのが妥当? 他に方法あれば教えてくださいませ。
SUBMITボタンを押すたびに画像を変えるCGI作ってるけど ブラウザの画像が変わらない。 CGI側からキャッシュを消す方法って無いの?
>>25 suEXECするってのは・・・セキュリティを高めたいって事だよね?
自鯖であればセキュアにできるならするべきだYO
>>26 クライアントのキャッシュを明示して削除する方法は知りませんけれど・・・
htmlからそのCGIを呼び出しているのなら no-cache指定とか。。
フォーム自身もCGIから出力しているのなら
<img src="hogehoge.jpg?$^T$$">
のように?$^T$$でも追加しておけば
CGI起動時刻とプロセスIDでユニークなURLになり
キャッシュは存在しなくなります。。
他にも色々方法はありますYO
>>27 ほげほげ
29 :
nobodyさん :03/01/07 18:23 ID:23SRPWxk
jcode.plを使わずにsjis文字をeucに変換することってできますか? 正規表現とかで。
jcodeでやってることを書くだけ。 車輪。
31 :
29 :03/01/07 18:42 ID:23SRPWxk
32 :
nobodyさん :03/01/07 19:39 ID:E9xJzpX+
>>31 無さそう、、っていうか、ShiftJISとEUC-JPは、ずらしただけだから、
お勉強すれば簡単に作れると思うんだけど・・
リンク先へ飛ばす際、 リファを取られていても問題の無いように 一旦ダミーの足場を踏まえさせるスクリプトってないでしょうか?
35 :
33 :03/01/08 04:33 ID:???
36 :
33 :03/01/08 05:18 ID:???
あ なるほど、分かりました。 ありがとうございます。
37 :
33 :03/01/08 05:39 ID:???
続きで申し訳ないのですが、 これと同じようなことが出来るスクリプトは無いものでしょうか? 足場を手前で用意したいもので・・・
>37 作るの自体難しくないから、誰も配布してないだろうね。 perlなら10行程度でできるし。 Locationで調べてみ。
39 :
nobodyさん :03/01/08 11:09 ID:QcH5iWUE
Perlで変数どうしをくっつけたい場合はどうすれば良いのでしょうか? 例えば $name に "あああ"が入ってて $num に "111"が入ってるとき $info に "あああ:111"といれたいときはどうすれば良いのでしょうか? $info = "$name"+":"+"$num"とやれば良いのでしょうか?
40 :
age :03/01/08 11:39 ID:???
やってみれば〜?
41 :
33 :03/01/08 11:52 ID:???
>>38 申し訳ありあせん、
自作しようとしたのですがどうしてもダメです。
ご教授願えないでしょうか?
42 :
nobodyさん :03/01/08 12:10 ID:43qqwvSV
cgiを設置したのですが、IEのステータスバーに 「実行しましたが、ページでエラーが発生しました」と出ます cgi自体は問題なく動いているようなのですが… IEのスクリプトエラーを表示するをONにしてどこが間違っているのか チェックしたら、 計画番号設置の $×× = 19; # (この文の内容) というところにエラーがあると出ました。 この行の19文字目?が違うらしいのですが、 19文字目は「;」になります… どうしたらこのエラー表示が回避できるようになるのでしょうか?
43 :
26 :03/01/08 13:25 ID:???
>>28 ローカルのキャッシュ容量が大変なことになるけど
ちゃんと描画できたよ。
ありがとね。
45 :
nobodyさん :03/01/08 14:16 ID:43qqwvSV
>>44 どう勘違いしてるでしょうか?
どうか教えてください
>>45 JavaスクリプトやVBスクリプトのエラーだろ。
>>39 場合によっては.よりもsprintfの方がいいかも。
48 :
nobodyさん :03/01/08 15:01 ID:43qqwvSV
>>46 そうなんですか・・・?
エラーの出たファイルのところにこのcgiの名前があったので・・・
ここでJavaScriptのこと聞いてもいいのかな・・・?
ダメだったらスルーして下さい
JavaScriptエラーってどうやったら修復できるのでしょうか・・・
49 :
33 :03/01/09 01:21 ID:???
>>38 解決しました。
ありがとうございました。
CGIから、アクセスしてるユーザのIEのお気に入りの中身を調べることは不可能ですか? どうにかしてCGIにデータを渡したいんですけど・・。
それをやられたら泣くだろ だからねえんだYO! blinkのやり方はActiveXぽいな。使ったことねえから詳しくしらないが。
>>53 DynamicHTMLで普通にできそうな予感。
>>51 そんなプライバシーに関わるデータ抜き取って何しようっての?
発想が厨なんだよ。
ちったあ相手の身になって考えてみろっての。
56 :
nobodyさん :03/01/13 22:11 ID:tF1UpiEy
htmlファイルが読み込まれる時に同時にcgiを実行させたいのですが、どうすればよいのでしょう。 とりあえず考えたのはcgiから何か画像を出力させて、<img src="hoge.cgi">なのですが、 実行させるためだけにわざわざ画像を表示させるのはなんか変な感じがします。 何かスマートな方法は無いでしょうか。
>>56 SSI使えないなら
<IFRAME SRC="hoge.cgi" WIDTH="0" HEIGHT="0">
</IFRAME>
とかでもいいかもね
>>60 ネスケでも6以上ならIFRAMEに対応している。
そういう俺は4.78だけど。。。
ブラウザ依存のHTML吐き出すようなスクリプトは糞
HTMLの仕様に準拠していないUAは糞?
64 :
nobodyさん :03/01/15 09:49 ID:bv4lo3d6
レンタルサーバ内のplaintextデータ等をバックアップする場合、 何か良いは方法ないでしょうか。 例えば会員データとかで、住所とか名前が入ってるものをメールでそのまま 送るなんて事できないし、圧縮してメール添付ってのも危険ですしね。 専用サーバ借りているのですが、su貰えない&telnet使用可ですが、 固定IP必要なので実質使えないので、CGIで代わりにTELNETモドキやってる程度。 bdesが良いらしいが入ってない。 何か良い方法をご存知の方いましたらRESPLZ。
65 :
64 :03/01/15 09:59 ID:???
でかいファイルでもperlのcryptでOKかな。やってみよう。
66 :
64 :03/01/15 10:01 ID:???
と、思ったけど、デコードできんか...........一人カキコスマン
>>64 何でメールするん?
FTPで自分のパソにダウンロードすればいいだけの話では。
68 :
nobodyさん :03/01/15 10:59 ID:wVEDeB5S
perlスレでcgiに行けといわれたので、こちらにきました。
管理人(私)だけが項目を設定し、来訪者に投票してもらう
という投票・ランキングcgiを設置しようと出来合いの探したところ
項目が140あるので検索機能がついたvote.cgiを探したところ、
ttp://www.c-5.ne.jp/~hamachan/cgihtm/jiten.htm 上記↑で配布されている「簡易データーベース」というものにたどり着きました。
プログラムが古いので
require './jcode.pl';
#-----------------------------------------------------------------
↑これの次の行に↓この一行を追加しました。
open STDOUT, '>-';
jcode.plも新しいバージョンに変えて、説明書きにあったとおり
「ずっこけ物知り辞典」という表示がページに出るところまでは
うまくいったのですが、実際に登録・検索しようとすると、
「ページが見つかりません」、との表示が出ます。
ちなみに、Tripodを使っています。
FTPソフトで見ると、cgi-binフォルダの中に
jiten.cgi、jcode.pl、jiten.docが入っていますが
jiten.docのファイルサイズは0になっています。
count.docファイルは生成されていないようです。
perlスレでTripodではcgi-binフォルダ以下に画像などの
ファイルは置けないとなっているから、とのレスをいただきましたが、
ttp://www.tripod.co.jp/guides/cgi.html の中頃少し上をみると、スクリプトによって、使用されるHTMLファイルや
テキストファイルは、すべてcgi-binの中にある必要があります、とあるので
これは関係ないかと思いました。
どこをどう改善すればよいのか、ご指導よろしくお願いします。
70 :
64 :03/01/15 11:56 ID:???
>>67 毎日、簡単にバックアップしたいので。
FTPでも暗号化しないと、hackされる可能性がある気がするのですが・・・・・。
ネットワーク上で盗用されない為にも、サーバでファイルを暗号化し、
他サーバにコピーが理想。
大したファイルじゃないけど”もしも”の事を考慮してしまう今日この頃。
だんだんCGIと関係ない方向に向かってるかな.....
>>70 誰がhackすんの?
こういうのに限って、データファイルをドキュメントルート以下に置いてたりするんだよな。
72 :
山崎渉 :03/01/15 13:32 ID:???
(^^)
73 :
64 :03/01/15 16:27 ID:???
CGIしか使えないならCGIで処理するしかないだろうなぁ。 CPANあたりにある暗号化のを使って自分で作るのがいいんじゃない? 需要なさそうだしその辺に転がってるCGIじゃ見つからないと思うよ。
CGIの内部で画像ファイルを作って出力しようと思っているのですけど、 そのCGIの名前が makepng.cgi という名前だとブラウザからDLしようと するときの名前がnamepng.cgi.pngという名前になってしまいます。 # 手で書き換えればいいのだけれど。 makepng.cgi?foo=1&bar=x のときにはダウンロードするときの名前を giko01x.png のようにCGI側で調整してやる方法ってありますか? ブラウザはIEのみと考えてもいいです。
76 :
nobodyさん :03/01/17 21:57 ID:UZGmf3mg
>>75 直接ブラウザに画像データを送ったらファイル名はつけられない。
いったんサーバ側に画像ファイルとして保存してからならなんとかなるでしょう。
なるほど、了解しました。
78 :
nobodyさん :03/01/18 00:23 ID:O9FxKTGG
来客者は書き込めるが、他の来客者が書いたものは見られないようなcgiってありますか?
79 :
78 :03/01/18 00:24 ID:O9FxKTGG
追記 当然管理人は見られます。 管理人以外が過去の書き込みが見られないようなゲストブックみたいなやつがほしいんです。
81 :
nobodyさん :03/01/18 22:36 ID:vrB72zE5
掲示板CGIの中に別プログラムのCGIを挿入したいのですが、 掲示板CGIのHTMLスペース内にSSIを入れて実行しても そのままタグが表示されてしまいます。 どのようしたらよいのか教えてください。
83 :
超シロウト :03/01/18 23:47 ID:ovwKqnQ9
ほんと申し訳ないのですが、 public_htmlと同じ断層にフォルダを作った時、そのパスは どのように書いたら良いんですか? .../.../.../フォルダ/ これでいいのかな?
85 :
nobodyさん :03/01/18 23:54 ID:vrB72zE5
>>83 public_htmlを基準にするなら、
../フォルダ
じゃない?
>>83 相対パスなら./public_htmlまでのパス/../フォルダ/
だと思うけど
88 :
nobodyさん :03/01/19 00:02 ID:ZcFFkCZZ
おまけ: . =>ディレクトリ自身へのリンク .. =>親ディレクトリへのリンク 先頭が/でなければ、それはカレントディレクトリからの相対パスとみなされる。
>>88 DOS6なら...とか..........とかも可能だったりする。
ほぉ・・知らんだ。あ。リンクっていうのは、正確には、ハードリンク。
>>90 つぅことは..を削除したりなんかしたら親御さんがいなくなってしまうのか。
ディレクトリ、というファイルの実体が削除されるときは、リンクカウンタが0になった時。 なので、..を消しただけでは消えないはず。 だけど、rmとかの普通のコマンドは、消すことを許可しない、から、普通には消せない
>82 SSIではなく、ちゃんとスクリプト内に組み込みなさい。 普通SSIの使える拡張子は限られてるだろ。
96 :
nobodyさん :03/01/22 22:36 ID:/vlxGamR
ブラウザの履歴を調べる方法はないですか? window.historyで「進む」「戻る」の実行はできますが、ページを移動せずに そのURLが知りたいんです。
>>97 ブラウザがその情報を渡してくれなければどうしようもないだろ。
質問なのであげます。 apeboard+ で何行も改行するにはどうしたらいいのでしょうか。 こんなふうに。 スキン内のスタイルシートの制限は外したのですが…。
101 :
nobodyさん :03/01/25 10:32 ID:A7yEoEyG
ファイルを書き込み中に、そのファイルを読み込むプロセスが発生したとしても、 ファイルの読み込みの成否はともかくとして、ファイルの書き込みは成功して、ファイル自体が壊れることはないのでしょうか?
>>101 データ書き込み中に読み込みなら書き込みは成功するはずです。
どっちにしろflockは必須と考えた方が幸せです。
103 :
101 :03/01/25 10:51 ID:A7yEoEyG
ありがとうございます。 ファイルの読み込みが、次に行うかもしれない書き込みに影響しないのであれば、 ファイルの読み込み自体はflockの手順を介さなくても平気なんですね
>>103 必須の意味を考えながら腕立て200回。
105 :
101 :03/01/25 11:05 ID:A7yEoEyG
わっ、そうですね‥ 102の末尾に そうでなければ、介すべき、仕様が明確に決まってなければ、介すべきといった感じなのでしょうか?? という具合ですかね
106 :
101 :03/01/25 11:19 ID:A7yEoEyG
じゃなっくっっーーてェーー 103だ103。
107 :
ここは? :03/01/25 12:01 ID:P9onD8CE
書き込みが成功したとしても、後から読み込んだプロセスが(中途半端な)上書きをして データがごっそり抜けることになる。 図入りで説明してるページも多いから調べてみそ。
109 :
nobodyさん :03/01/25 12:59 ID:2kNMQnUp
今PealでBBS作ってるんですが、 ログを保存するのに、1件につき1ファイルが良いのか 1つのファイルに詰め込んでいく方が良いのか・・・。 後者だとすれば何件くらいを目安にすれば良いのやら。。 と、悩んでます。 一体皆さんはどういう感じでつくっているのでしょう? お奨めなやり方などがあれば教えていただけると嬉しいのですが。 おながいします。
>>109 >1件につき1ファイル
追加、編集、削除が容易だがどうやって検索するかが問題になってくる。まぁ、簡単と言えば簡単。
>1つのファイルに詰め込んでいく
ファイルをだだ読みすればいいので検索性は良い。しかし追加、編集、削除が面倒。まぁ、簡単と言えば簡単。
どっちにもメリットデメリットがあるのでお好きな方を。と。
111 :
109 :03/01/25 13:10 ID:???
>>110 了解しました。
しばらくは両方使ってみて
自分の好みの方にしてみます。
ありがとでした!
flockなんか使ってる香具師いるの?
114 :
nobodyさん :03/01/25 17:20 ID:J+PAIJA/
1ファイル1000個くらい詰めた方が効率がよろしい。ので 1ファイルに詰め込むんじゃなくて、1000個づつに分割したらどうかね
>>114 検索はしやすそうだけど
編集、削除はやっぱり面倒じゃないか?
追加は>>で追記してけば問題なさげ。
1ファイル1投稿だと排他あまり考えなくていいし
最悪トンでも1メッセージだけ。
検索しないなら1ファイルに1投稿が確実。(検索もできなくはない
編集、削除しないなら1ファイルへ数件詰め込めば検索楽。
>>116 flockってファイルを開いてからロックするから同時に開けちゃうでしょ?
それでもイィ!!の?
>>117 無いよりは激しくまし。
と、言うかロックの時点でロックに成功したプロセス以外は待ち状態になるんでは?
ほら、スレッドみたいに。
119 :
116 :03/01/25 20:13 ID:???
>>117 >>118 の言うとおり後からflockを呼んだプロセスはロックが解除されるまで待ち状態になる(排他ロックの場合)。
俺はCで使っているけど、Perlもこのシステムコールを呼んでいるだろうから同じでしょ。
>>118 無いよりはマシなのは当たり前だけど、ロックにflock使うのはどうかと思う。
ファイルを開いてからflockするまでの間に、別プロセスによって開かれる場合が(十分に)あるから。
プロセスIDとtempfile使ってうまくやるべき。
121 :
116 :03/01/25 20:18 ID:???
>>120 そのファイルが様々なプログラム(flockを呼ばないものもということ)から書き込まれるものでなければ問題ないと思うけど。
実際flock使ったロック方法では負荷テストすると同時書き込みが起こるよ。
>>121 いやいや、「思う」ではダメよん。こっちは実験してるんだから。
flockを呼ぶプログラムを複数同時起動すると
>>122 が起こる。これマジ
>>122 追加書き込みの際、きちんとファイルポインタをファイルの末尾にもってゆく処理をしている?ロックを解除する前にバッファをフラッシュしている?
>>123 俺もテストしたけど。
何回やっても成功したよ。
環境はLinux(2.4.18)
つーかそんな信用できないものをシステムコールとして実装するだろうか・・・
うーん。ということはflockで特に問題ないのか。 追加の時はともかく上書きの時にflockは使えないと思っていたのですが。。 認識違いのようですね。たぶん実験の時は他の部分がバグっていたのでしょう。 すいませんでした。
130 :
nobodyさん :03/01/25 21:48 ID:Qs+kaqdw
CGIの勉強をしたいのですけど、やっぱりサーバー建てる必要ありますか?
>>130 ローカルで小さなhttpサーバ立てれば十分です。
132 :
nobodyさん :03/01/25 22:24 ID:Qs+kaqdw
実際に使うとしたらやっぱり立てる必要はありますか? お金を使わないで使う方法はどんなものがありますか?
134 :
nobodyさん :03/01/25 22:29 ID:Qs+kaqdw
できればCでCGIしたいんですけど 無料レンタルサーバで、使えるところないですかね?
>>132 フリーのウェブサーバーソフトを使えば?
>>134 板違いな質問・・・・
トクトクならgccが使える。
137 :
nobodyさん :03/01/25 22:32 ID:Qs+kaqdw
とくとくまじですか? ちょっと検索してみます。 サンクス
>>137 自分のマシンにSunOSが入ってないと無意味だぞ。
>>138 なんでだよ(笑)
telnet使ってサーバー上でコンパイルすればいいじゃない。
それとトクトクはLinux
iswebと勘違いしたとか?
140 :
nobodyさん :03/01/25 22:42 ID:Qs+kaqdw
iswebでもgccつかえるのですか?
141 :
nobodyさん :03/01/25 22:43 ID:2edfK8fF
IISで画像掲示板(cgi)を表示させるとDLLHOST.EXEがCPU100% になる”こと”がある。 プロセスはその時2個あるので殺すと普通になる。何で?
g
>>140 ローカルでコンパイルしてアップロードしろってことでしょ
144 :
nobodyさん :03/01/26 06:26 ID:Hn+ukPj1
テキストファイルを読み込んでHTMLを吐き出すcgiの場合、 テキストファイルの中身を一行づつHTMLに吐き出すのと、 テキストファイルの中身を一旦配列変数に入れてから まとめてHTMLにして吐き出すのとではどちらがいいんでしょう。
145 :
nobodyさん :03/01/26 06:46 ID:hfzgm8Bu
>144 ケースバイケース。
>>144 「どちらがいいか」って漠然と言われても……
使うメモリが少なくてすむ前者のほうがいいんでない?
148 :
w-inds慶太 :03/01/26 09:58 ID:8J93RXm8
>>144 w-indsの慶太どぇす。
147のいうように、前者のほうがメモリへの負担が少ないでしょう。
ただ、後者のほうがメンテナンスしやすそう。
while (read(IN, my $buf, 8192)) { print $buf; }
print while (<IN>); # 1行ずつ @hoge = <IN>; # 配列経由 print @hoge; コード自体は大差なし 読み込みから表示までの間にどんな処理をするかで使い分けれ
シーケンシャルな処理なら前者 ランダムアクセスな処理なら後者
152 :
nobodyさん :03/01/27 00:36 ID:zeV2mDZO
WinXP、Perl/CGI環境でgzip圧縮転送の動作テストをしたいんですが Winにgzipを導入してPerlで動かすってことは可能なのでしょうか。 また、可能だとすれば、どのようにすればいいのでしょうか。 参考サイトでも構いませんので、教えてください。
>>152 「Winにgzipを導入して」の意味がさっぱり分からんのだが、
system・パイプではダメ?
156 :
144 :03/01/27 15:35 ID:???
>>147 >>148 言葉足らずですみません。
はじめ後者でやって、メモリの負担のことを配慮にいれて
前者の方法に切り替えたんですが、HTMLが表示されるのが
遅くなったようなので、どうなってるんだろうと思った
のです。
メモリ重視なら前者、速度重視なら後者ということですね。
157 :
144 :03/01/27 15:40 ID:???
158 :
nobodyさん :03/01/28 09:31 ID:ysKV21Dy
初参加です。質問させてください。よろしくお願いします。 今チャット作ってるんですが、チャットマスターの発言は参加者には見えるけど 参加者の発言は発言者本人とチャットマスターにしか見えないようにするには どうすればいいのでしょうか。 もうだいぶ探していますがどーしても分かりません。 ご存知の方、教えてあげてください。よろしくお願いします。
参加者ごとにログファイルをつくるとか・・・・ ログファイルをひとつにする場合は読み出すときにIPアドレスなどから出力してよいものを選択するとか・・・・ CGIではやらない方がよいと思うけど。
160 :
nobodyさん :03/01/28 13:42 ID:aPuGCgnw
>>159 さんありがとうございます!
まだまだ分からないことだらけな当方ですが、
ログファイルを使用してのチャット作りに挑戦してみます。
ところでみなさんどうやって勉強してはるのですか?
とても詳しいですけど。これからの参考にさせて頂ければと思います。
>>160 > ログファイルを使用してのチャット作りに
使用しないでどうやってCGIチャットを作るの?(^_^;)
>>161 mod_perl環境でグローバル変数にログをためとくとか。
あるHPにアクセスした時、 403Forbidden You don't have permission to access /○○○/ on this server. って、出たんだけどー これって、そのHPに入ることを拒否されてるって事? どうやったら、入れるの?
>>163 どういうレベルで拒否されたかはわからないけど、とりあえずアクセスできない。
>>163 それは指定したURLへのアクセスが禁止されてるってことだから、
そのサイトのちゃんとした入り口から入れば大丈夫なはず。
(このエラーはGoogleの検索結果やブックマークなどの飛び先が
消滅することで出るパターンが多い)
166 :
nobodyさん :03/01/29 20:07 ID:AuAKLt9R
CGIにてFORMにて入力したファイルを表示するCGIをPerlで作っています。
ローカルにあるファイルだと、無事open()できるのですが、
外にあるファイル(
http:// で始まるhtmlなど)をうまく扱えません。
公開されているHTMLやTXTなどをCGIにて表示させたいのですが、
どうすればいいのでしょうか?
教えてください
>>166 open()の説明によると、外にあるファイルは扱えないことになっている。
自分でソケット張って取りにいくのが普通かな。fsockopenとかLWPとか。
>>166 外部なら自分で取りに行かなくてもブラウザに送ったHTMLの中で
開かせればいいんじゃないの?
>>166 そんな君にはPHP
fopenでローカルファイルを開くように外部ファイルを開ける。
>>169 それようのオプション付けてコンパイルしてないと無効だけどな。
171 :
nobodyさん :03/01/30 15:07 ID:7OFGIowB
age
172 :
nobodyさん :03/01/31 10:53 ID:lEAaXrUa
174 :
nobodyさん :03/01/31 10:55 ID:lEAaXrUa
>>173 そんなこといわないで、教えてください。
175 :
nobodyさん :03/01/31 11:55 ID:lEAaXrUa
お願いします。。。
177 :
nobodyさん :03/01/31 17:41 ID:lEAaXrUa
178 :
nobodyさん :03/01/31 17:41 ID:54d1aEzb
179 :
nobodyさん :03/01/31 19:29 ID:Ee0DVLll
メールアドレスを晒すのが嫌なのでformmailを設置したところ、 学校のunix鯖ではCGI上からsendmailとqmailが使えないみたいなので、 にゃぁぁぁぁぁぁぁ?さんのsendmail.cgiなるものを設置しました。 SOCKETでsmtpと通信するスクリプトらしいのですが、これも動く気配が無い。 動かないと分かれば諦めがつきます。鯖上でSOCKET関数が使えるかどうかは、どこでわかるのでしょうか?
181 :
179 :03/01/31 20:14 ID:Ee0DVLll
>>181 そら、リモートの80番にアクセスしようとする奴拒否するサーバは少ないわさ。
後、ヘッダが変とか出てるので通信以前に死んでる予感も。
183 :
179 :03/01/31 20:30 ID:Ee0DVLll
%perl http.pl ms.hc.cc.**.ac.jp:25 220 earth.hc.cc.**.ac.jp ESMTP 502 unimplemented (#5.5.1) シェルだとこんな感じ。ってかシェルでうごいてもしょうがないか。
>>183 いや、大きな情報な気がする。
ESMTPに対応してないんじゃないの?サーバが。
185 :
179 :03/01/31 20:43 ID:Ee0DVLll
>>184 ESMTPってのが分からないんですけど。。
でも上のはhttp.plが print SOCKET "GET $url HTTP/1.1\n";
ってのを送ってるから502が帰ってくるのであって、print SOCKET "HELO domain\r\n"
ってやればちゃんと 250 earth.hc.cc.**.ac.jpってのが帰ってきます。
でもこれをブラウザ上で呼び出すと、Error500になってしまいます。
>>185 つぅかなぜsmtpにhttpリクエストを送る・・・
187 :
179 :03/01/31 20:50 ID:Ee0DVLll
>>186 。。いや急遽スクリプト書き直したもんで、見落としてました。
>>182 はぁ、、わからんのなら答えなくてよろしい。
この場合、CGIが変なヘッダーを出しとるわい。って怒ってる。
で、おそらくHTTP/1.1 200はyahoo.comが出したもの。(http.plを見ればわかる)
つまり、通信は成功してる。ということ。
それから、
>>183 で出てきたものは、SMTPでーもんの出力だけ。HTTPでしゃべられても
困るっていうことを言ってる。全然大きな情報じゃない。
>>181 そもそも、そんな変なことで悩む前に、「使えないみたい」「動く気配がない」
って言われて原因が分かる超人に期待するのは無謀だと気づけ。
>>188 >この場合、CGIが変なヘッダーを出しとるわい。って怒ってる。
彼2行目でそう言ってる。
>>188 >この場合、CGIが変なヘッダーを出しとるわい。って怒ってる。
>>182 もその可能性を示唆してると思われ。
ケコーン
192 :
179 :03/01/31 21:04 ID:Ee0DVLll
鯖にはSOCKETモジュールがインストールされていて、シェルからSOKCET関数も使えるが、 cgi上ではError500 を吐くの場合 1.cgi上では実行権限が与えられていない 2.それともSOCKET関数とは別の問題 なのか知りたいんです。 # html書き出し部分はここです。 while (chomp($buf=<SOCKET>)) { print "Content-type: text/html\n\n"; print "$buf\n"; exit; この場合もシェルだと Content-type: text/html 220 earth.hc.cc.**.ac.jp ESMTPとなります。
chomp($buf=<SOCKET>)
とりあえず無バッファリングにしてみる。
195 :
188 :03/01/31 21:16 ID:???
196 :
179 :03/01/31 21:28 ID:Ee0DVLll
シェルから呼び出した時しかファイルに書き込まれません。log属性は666です。 (chomp($buf=<SOCKET>)); open(OUT,">> http.log"); print OUT "$buf\n"; close(OUT);
198 :
179 :03/01/31 21:32 ID:Ee0DVLll
cgi-binディレクトリは755になってます。
ネタか。
200 :
179 :03/01/31 21:42 ID:Ee0DVLll
cgiスクリプトとlogが同一ディレクトリにある場合って、755でも動きませんか? ちなみに777で試してみても結果は同じでした。
201 :
199 :03/01/31 21:46 ID:???
suExecだったしな。
203 :
179 :03/02/01 01:24 ID:???
他の所でソケット通信の話題OKという所があったので、移住します。有り難うございました。
204 :
nobodyさん :03/02/01 17:41 ID:Cax25w+6
BiglobeでHP作ってて、CGI使って日記作ろうと思ったんですが、 パスワード入れて管理モードに行こうとすると、 『CGI専用サーバなのでできるか』と言われます。 biglobeだとCGI専用サーバとかになっちゃうらしいんですけど、cgiのほうのどっか設定変えたらできるんですかね。 当方、初心者です。
CGIは安全、mod_phpは危険ってどういうこと?
>>206 幻想です。CGIが安全ってまた訳がわからんけれど。
208 :
の :03/02/01 17:45 ID:/eR4kJXs
210 :
209 :03/02/01 17:47 ID:???
s/setUIDとか/setUIDできないとか/
>>209 一つのモジュールに負荷が集中するって事じゃないの?
212 :
209 :03/02/01 17:50 ID:???
>>211 といいますと??
スマソ まじでわからんです。
213 :
212 :03/02/01 20:19 ID:???
放置されとる・・・・ 答える価値もないと判断されたか(鬱
214 :
の :03/02/02 02:12 ID:eQAjYeC3
CGI は別プロセスでロジックが動く。 モジュールは、httpd のプロセス内(同じメモリ空間)で動く。 したがって、動作上で OS のメモリ保護が期待できるか否かと言った違いは ある。まあ、クラック耐性が多少高い程度だがな。
215 :
nobodyさん :03/02/02 02:13 ID:VwKQrujS
CGIで、ブラウザにコンテンツをキャッシュさせるには プログラム側でどのようなヘッダを吐けばいいのですか? ちなみにContent-Typeしか吐いてない場合、 IEはキャッシュしてくれないようです。 やりたいことは、コンテンツをキャッシュさせて、ブラウザから送られてくる リクエストヘッダを調べて、コンテンツを吐くか吐かないか制御したいのです。
>>215 If-Modified-Since と Last-modified あたりかな。
まぁでもCGI側でブラウザのキャッシュのことを気にしなくていいような気もするが・・・
217 :
215 :03/02/02 04:04 ID:???
>>216 Last-Modified付けてもIf-Modified-Since送ってきませんでした。IE5
もしキャッシュできれば、余分なI/Oが減って2chのread.cgiが軽くなるかなー
なんて考えていましたが、無理かな。。
phpでperlのlocal宣言ってあるの?
>>218 phpはperlなんかと違って変数のスコープは関数内に限定されます。
>>215 nph- にして自前でヘッダを全部出力しないと、
サーバソフトが勝手にレスポンスヘッダに 'Cache-Control: no-cache' とか
付けて吐き出してくれてしまったりします。
nph- にすればキャッシュだけでなくかなり自由度の高いシステムを作れるけど、
いかんせん面倒くさいのが何とも。
HTTPの仕様書とにらめっこをしながらプログラムを書く羽目に。
221 :
nobodyさん :03/02/03 08:11 ID:FFrB/oLu
ここ(
ttp://www.area-s.com/ )で配布されている、
NarrationBBSというのがものすごく気に入って自分のサイトに
設置しようと思い、CGIについて理解しようとネットを駆け巡り
5時間が過ぎました。CGIについては全くの初心者ですが、
一通りの設置の流れや、やらなければならないことは理解した
つもりです。で、いまだにCGIをちゃんと使えるようになって
いないのですが、どなたか助けていただけませんでしょうか。
現在の進行状態としては、プロバイダー(地域のCATVでCGI利用可確認済み)確認、
目的のCGIのダウンロード、プロバイダーに指定された内容の「.htaccess.txt」
ファイルの転送、パスの変更後CGIファイルの転送とパーミッションの設定、
ホームページのトップからCGIへのリンクを作成。
と、こんな感じなんですが、リンクをクリックすると、ダウンロードしますか?の
確認メッセージがでてきてしまい、CGIを動作させられません。
223 :
nobodyさん :03/02/03 09:26 ID:8N4vyrOL
CGIを使って、特定のディレクトリ以下をアクセス禁止にするような事できますか? htaccessが使えないような場合のことです。
>>221 .htaccessの中身をここにうpしてみよう。
あとパーミッションはいくつに設定したの?
226 :
nobodyさん :03/02/03 15:58 ID:QjlL5TK8
>>225 さん すみません。朝方までがんばってやっていて今まで寝てました
,htaccessの中身は以下のとおりです
# .htaccess
AddHandler cgi-script .cgi
このファイルのパーミッションは、プロバイダの指示が
>テキストファイルの内容は以下のように記述して下さい。
># .htaccess
>AddHandler cgi-script .cgi
>
>転送するときにパーミッションを「644」にして下さい。
とあったので644、その他のものについては cgi 755 dat 666 pl 644
との指示がCGI配布サイトにありましたのでその通りに。また、『※全ての
ファイルを格納するディレクトリ(フォルダ)は777にしてください。』と
あったのでcgiファイルのあるフォルダは777にしました。
ディレクトリ構造は以下のとおりなんですがこれでいいのでしょうか?
public_html ┬ index.html
└ cgi-bin ─ nb ┬ nbs.cgi
├ nbe.cgi
├ cnt.cgi
├ img ─ 画像ファイル(アイコン含む)
├ bbs.dat
├ nar.dat
├ num.dat
├ rjc.dat
├ usr.dat
├ jcode.pl
└ index.html ダミー用
227 :
nobodyさん :03/02/03 16:00 ID:QjlL5TK8
すみません、変な風になっちゃいましたね public_html ┬ index.html └ cgi-bin ─ nb ┬ nbs.cgi ├ nbe.cgi ├ cnt.cgi ├ img ─ 画像ファイル(アイコン含む) ├ bbs.dat ├ nar.dat ├ num.dat ├ rjc.dat ├ usr.dat ├ jcode.pl └ index.html ダミー用 こんな感じです
228 :
nobodyさん :03/02/03 16:45 ID:TJH3fomo
>>227 .htaccess.txt
じゃなくて
.htaccess
229 :
302 :03/02/03 16:49 ID:???
>>228 さん レスありがとうございます。
FTPソフトを用いてtxt拡張子を消しましたがうまくいきません。
リンクをクリックすると、ダウンロードしますか?の確認メッセージが
やっぱりでてきてしまい、CGIを動作させられません。
230 :
221 :03/02/03 16:51 ID:QjlL5TK8
すいません、229は302じゃなくて221です・・・。
231 :
221 :03/02/03 17:05 ID:QjlL5TK8
いまパスの設定を見直して、リンクを書き直したら
ダウンロードしますか?はでてこなくなりましたが、
Internal Server Error になってしまいました。
この場合、ほとんどはパスの設定ミスということらしい(?)ですが、
htaccessのパーミッションはプロバイダの指定どおり、他のcgiファイルなどは
cgi配布サイトの指示どおりにしています。
ひとつ疑問が残るとすれば、cgiファイルを格納しているディレクトリの
パーミッション設定なんですが、cgi配布元によると、cgi格納ディレクトリは
777にせよとのことなのですが、これは
>>227 の階層構造でいうと、cgi-binと
nbsフォルダのパーミッションを777にすればいいんですよね?
・・・なんでInternal Server Errorになるんだろう(T-T)
殆どの場合#!/usr/local/bin/perl もしくは#!/usr/bin/perl です。 両方試してみた?
233 :
nobodyさん :03/02/03 17:19 ID:800eNsZd
234 :
221 :03/02/03 17:21 ID:QjlL5TK8
>>233 755にしたらちゃんと表示されました!
皆さん本当にありがとうございました〜
なんだかんだいって、やっぱり2chは頼りになります
>>234 頼りにするのは困る。最終手段として使え。自分で調べられないと生きていけないぞ。
今回の問題は、suEXECのセキュリティーチェックに引っかかってる。点。
worldから書き込み可能なファイルは、所有者以外に書き換えられた可能性がある
から、実行させてくれない。ということ。
236 :
179 :03/02/03 21:00 ID:???
203の中間報告。結果は学校の鯖ではSocket.pm、IO::Socket.pm、FileHandleなどの モジュールが呼び出せないためSocket通信できませんでした。 push(@INC, "/hoge"); とかも駄目でした。
システムコール呼び出しとかで何とかならんかのう。
238 :
sub() :03/02/04 00:03 ID:rUOqBsxa
ファイルの任意の行だけ上書きする処理ってどうやるんでしょう? 一行づつループかけてマッチした行以外をTMPファイルに吐き出して それをログファイルに上書き(>)した後、書き換えたい行を(>>)で書けば よいんでしょうか?3日悩んでます。。。
240 :
179 :03/02/04 01:52 ID:???
動いたので最終報告しようとしたら、既に答え書いてあるし。うーん >237 の言う通り、システムコールで動きました。
なんだマルチか。
ファイルを、while (<IN>) {〜}といった記述をしないで、 一行ずつ読み込んでいく方法はないものでしょうか。 @file = <IN> といったメモリにファイル全部読み込む方法は使わず、 一行ずつ読み込んで、一行ごとに違う処理をしていきたいのです。 while の中でループ回数カウントしてifで判定しろ、なんていうのはなしで。 ファイルを一行読み込む場合、 open(IN,"$logfile"); $line = <IN>; と、やれば出きるのはどこにでも書いてあるのですが、 2度目以降 $line = <IN> としても空でした…。 Perl は一行ごとに分けるデータ構造が身についてしまってるのがダメなのかなぁ…。 seek と read 使えばよさそうなのは解ってはいるのですが、 ベースから書き換えなくてはならず、このままの構造でなんとかできないものかと。
243 :
242 :03/02/04 17:30 ID:???
あ、Perl初心者スレと間違えました・・・。 あちらにいってきます。
244 :
179 :03/02/04 18:53 ID:???
245 :
nobodyさん :03/02/05 00:47 ID:Rqrb27N+
CGIと言うのは、一つで思い処理をさせるのと、 分散して、複数のCGIを設置するのとどちらが良いのでしょうか? 例えば、カテゴリ別の掲示板だった場合… bbs.cgiで10のカテゴリの掲示板を運営できるものと、 bbs1.cgiと、bbs2.cgiで5のカテゴリずつ運営する場合です。 この場合、下記の場合の方が、負荷を軽減できると感じてしまいますが 実際の所はどちらがよいのでしょうか?
246 :
nobodyさん :03/02/05 00:48 ID:k4P35St7
>>245 そのCGIが、インタプリタによって実行されるものだと勝手に仮定すると、
普通に考えて、一度に解析されるコードの量が少ないと、負荷は減る。はず。
でも、
>>245 の場合、実際に解析されるもの自体は同じだと思うから、効果は無い。と思う。
分割するとしたら、読み込み用、書き込み用、メンテナンス用とか、機能別に分割する
方が、よろしい
248 :
245 :03/02/05 01:03 ID:Rqrb27N+
>>245 です。
CGIの内容は、スレッド掲示板をいくつでも作れてしまうというものです。
書き込み、読み込み、メンテ用などは、各CGIで動作します。
このCGIシステム一つで、掲示板を50個を運営するのと、
CGIシステムを5個設置して、10個の掲示板を運営するのと…という場合です。
読み込み用のCGIがbbs.cgiだとすると、
50の掲示板それぞれ、1分間に10人がアクセスすると、
bbs.cgiを500回動作させる事になります。
249 :
nobodyさん :03/02/05 03:24 ID:CZbUch9c
Your script produced this error: chmod trapped by operation mask at ./upload.cgi line 199. chmod 0604, "$storedir$prefix$id.$type";
>>248 名前変えただけで中身が同じなら負荷は変わらないでしょ。
251 :
nobodyさん :03/02/05 10:47 ID:OGgWzvAl
教えて下さい。 PHPとか、PEALとか、 JAVAとか、 ASPとかあるけど、 大きなデータベースを使ったWEBアプリケーションを作る場合、 どれが性能がいいですか? 今ASPしかやってませんが、次になにを勉強しようか 考えてます。
>>251 全部軽く覚えてSQL投げ比べてみるとか。
C系の言語習得してるならどれも習得に大した時間はいらないわけで。
254 :
nobodyさん :03/02/05 11:17 ID:OGgWzvAl
>>252 それもそうなのですが、当方Win2000Serverしかなく
他を試すのがたいへんなので広く知ってる方に教えて
頂けないかという少々怠慢なお願いでした...。
ちなみに同僚はPHPにすれ、と言ってました。
255 :
nobodyさん :03/02/05 11:48 ID:hzviKg6+
$race2 = 'C2十'; というデータでInternal Server Errorになりました。 とりあえず、$race2 = 'C2'; で対応しましたが、 これって、エディタの設定(sjis)が悪いんでしょうか。 それともコードでしょうか。
257 :
255 :03/02/05 12:02 ID:???
わかってないといわれれば、そうなんですけど。 文字化けする文字が悪さをした、としか分かっていません。
何をおっしゃる兎さん $race2 = 'C2十\';
>>258 それだけじゃ何なんで、説明するわ。
シングルクォート内であっても、末尾が '\' で終わる文字は書けない。
(閉じるための ' がエスケープされてしまい、
Can't find string terminator "'" anywhere before EOF
というエラーになる)
'十' という文字は2バイト目が思いっきり '\' なので、エラーになる。
他にダメな文字は以下のとおり。
―ソЫ�\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬
畚秉綵臀藹觸軆鐔饅鷭�x�x
ちなみにエラーを書くときは、このPerlの出すエラーを書くようにね。
Internal Server Error なんて、ヘッダの吐き忘れでも出るから意味なし。
まあPerlは使うなってことですな。
>>261 その言い方はおかしい。こう言うべき。
「まあ馬鹿はPerlを使うなってことですな。」
264 :
255 :03/02/05 13:01 ID:???
サンクス、皆様
265 :
255 :03/02/05 13:20 ID:???
馬鹿だけど、使わせてください。 おながいしますmm
266 :
255 :03/02/05 13:23 ID:???
でもやっぱり馬鹿だし、phpかrudyにしようかな(w
268 :
nobodyさん :03/02/05 13:32 ID:/TzrVcwr
if ( length ($FORM{"number$count"}) == 0){ $num{"$str"} = 0; } else{ $num{"$str"} = $FORM{"number$count"}; } とは何をやっているのですか? 初心者で厨な質問で申し訳ないです お願いいたします
>>268 データがあるなら代入して無いなら取りあえず0
270 :
_ :03/02/05 14:35 ID:KqDONkoE
>>268 if文の意味なしと思われ。
$num{"$str"} = $FORM{"number$count"};
>>270 $num{"$str"} がぬるぽになることを恐れたんだろう。
コンナトコロデ アブラヲウッテルトハ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>271
273 :
nobodyさん :03/02/05 21:06 ID:tr4FI/E+
Locationヘッダーが指すファイルを読む。
275 :
nobodyさん :03/02/05 21:32 ID:gt7kwXPU
激しく厨房な発言ですので注意してください @niftyでmethod=POSTが使用できるのでしょか? いろいろ見てはいるのですが解らなかったので おしえてくほしいです
@niftyにあるサイトの掲示板の書き込みボタンでも押してみればいいじゃん・・・
277 :
275 :03/02/05 21:53 ID:gt7kwXPU
押しましたけど・・・わからないですよ??
279 :
275 :03/02/05 22:00 ID:gt7kwXPU
そんなこといわないでくだされ・・・・ BBS設置できなくてこまってるんでつよ・・・
>>279 エラーがでないなら使えるってことだろうが。
それにCGIを許可しておいてPOSTを禁じるやつがどこにいる。
>>279 ニフならプロバイダ謹製のがあるんじゃないか?
POSTも分からんのならそういうの使え。
282 :
280 :03/02/05 22:03 ID:???
ところで、CGI専用ディレクトリにおいている?専用のURLでアクセスしている? 確か@niftyはそういう制限があったはず。
283 :
275 :03/02/05 22:11 ID:gt7kwXPU
281 二つひつようなもんで 専用の場所に置いて専用のURLでアクセス してるんですが、えらーになるんですよ
284 :
273 :03/02/05 23:15 ID: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だけ渡してますが、なにかやり方がマズイのでしょうか。
>>284 $ telnet pc2.2ch.net 80
HEAD /php/ HTTP/1.0
Host: pc2.2ch.net
うしし。
素直にmonazillaに誘導した方が良くない?
287 :
273 :03/02/05 23:55 ID: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";
したら見事読みました!
>>288 具体的にどうやって、どううまくいかないのかを書いてくれないと。
1から10まで手取り足取り教えてもらえると思ったら大間違いだよ。
perlで掲示板組んでます。 いまいちわからないんですが、例えばフォームのvalueで指定した文字(変数?)は $変数名にそのまま反映するんでしょうか? 初歩的なことを聞いてスマソです。 誰か教えて下さい〜。。もう一人じゃだめぽ。。
最近はされんけどなw
295 :
291 :03/02/06 14:09 ID:???
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はそんなもんなんだよ。
297 :
nobodyさん :03/02/06 21:19 ID:s4S7/zxS
常日頃からパソコン(またはサーバー)で短い時間ごとにメールを受信させ、 そのメールの中身を解析して適切な答えを返す&HTML生成してくれるものは ありますか?
299 :
nobodyさん :03/02/06 21:36 ID:s4S7/zxS
いえいえ、初歩的にOutlookExpressとかで「○分おきに送受信」でもいいです。
>>299 単に定期的にメールを受信させるだけ?
CGIと関係あるのかな・・・
>>300 ないと思われ
ブラウザで出力→CGI、という短絡的な考えなんでしょ
ところで300おめこ
302 :
nobodyさん :03/02/06 21:55 ID:s4S7/zxS
受信させる方法については
>>299 でもいいが、
肝心なのはその後で、自動に受信したメールの本文を自動に解析し、
適切な答えを返信する&HTML生成してくれるものを探しています。
「適当な」っていうのが、フレーム問題が発生しそうな課題ですな。
>>302 探しています……って、そういう目的ならスレ違いだよ。
305 :
nobodyさん :03/02/06 22:23 ID:s4S7/zxS
306 :
nobodyさん :03/02/08 14:13 ID: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とかでは既定されてないのかな。
307 :
nobodyさん :03/02/08 14:28 ID:n3LLA3DF
>>306 そんなのブラウザに実装によるだろう。諦めろ。
つうかフレームを使うページは(略
@t = split(/ /, join(/ /, ("1","2","3"))); print $#t; とすると2ではなくて0と表示されるのは普通? 漏れの環境がオカシイの? 半角スペースでjoinすると、ぴっちり繋がるもんなん?
310 :
309 :03/02/09 00:39 ID:???
スマソ、joinの第一引数は""で囲む、普通の文字列ですた。
>>309 @t = split(/ /, join(' ', ("1","2","3")));
print $#t;
ローカル環境のperl.exeが勝手に消滅してるみたいなんだけどなんでかな? 削除した覚えはないのだが?? 今までCGIのチェックに使ってきて何の問題もなかったんだけど、不思議。 つい2,3日前までanhttpd使ってて、今日PHPをapacheのモジュールで 動かしてみようとwindows用のapache(以前入れて放置してあった物)を いじってたらperl/CGIが動かない。 PHPは正常に動くのになんでかな?と思いつつ、パス関係かなとperl.exeを 探したら??無い。あれ?って思ってanhttpdを起動したら昨日まで異常なかった Perl/CGIがエラーに・・・。 なんでじゃ〜?不思議でしょうがない。こんな事ってあるんだろうか?
私もPHP入れたらPerlがおかしくなった事あったけど 私の場合は削除はされてなかったんで、パスの指定し直したら直った。 まぁ、Perl再インストールすれば大丈夫じゃないの? ついでに最新版確認してきてね。
うちはAN HTTPDで使ってるけど、PHP入れても別におかしくはなってないよ。 ちなみに他ディレクトリで解凍してから、C:\php にコピーして設定という方法で インスコした。
>>314 同様の環境。
ただし、perlとphpは同じドライブに入ってないけどw
316 :
nobodyさん :03/02/09 23:57 ID:Xc8YBGxY
質問です。 今までPerlでCGIやってたんですが、C言語でCGIを動かそうと思ってます。 色々サイト巡ってとりあえずCygwinをインストールしました。 しかし、Apacheの設定がどうしても分かりません。 Windows+ApacheでC言語のCGIを動かすための説明があるサイト等、 紹介してもらえないでしょうか。
>>316 拡張子無しを実行条件にしたらどうだい?
>>316 Perlで書いたものが動けば問題なく動くはずだけど。
コンパイラはcygwin上のgccよりもVC++やBCCの方がいいと思う・・・
319 :
nobodyさん :03/02/10 00:18 ID:VClzLIdP
レス多謝です。
>>317 すみません、不勉強なもので意味が分かりませんでした;
差し支えなければ、もう少し具体的に教えて頂けないでしょうか。
>>318 あ、そうだったんですか・・・(恥
BCCはC言語の勉強に前から使ってたんですが、
どうやってCGIとして動くようにすればいいのかが分からず・・・
gccだと gcc -o test.cgi test.c みたいに実行するようなこと書いてあったんですが
BCCの場合はどうすればいいんでしょうか。
>>318 bcc32のオプションが分からないから答えられないけど、できあがった実行ファイルの拡張子を.cgiにすればよいのでは?
321 :
nobodyさん :03/02/10 00:27 ID:VClzLIdP
>>320 printf("Content-type: text/plain\n\n");
printf("Hello, World!");
をBCCでコンパイルし、.cgiにリネームしてウェブ鯖で実行したところ、
ダウンロードダイアログが開いて、
落としたのは「Hello, World!」と書かれたテキストファイル.cgiでした・・・
何故ブラウザで開かれないんでしょうか・・・
>>321 >printf("Content-type: text/plain\n\n");
原因。
>>321 Perlで同じようなものを作ったときは問題なく表示されるの?
ああぁぁぁぁぁああっ すみません、書き込み直後気付いてtext/htmlにしたらちゃんと出来ました。。 皆さんどうもありがとうございました!
>>323 はい、Perlだとtext/plainでも表示されたんで、すぐに思い付けませんでした。。。
text/plainなら大抵の環境でプレーンテキストとして開かれると思うけど^_^;
>>325 そういう部分は言語によらないはずだよ。
打ち間違わなかった?
328 :
325 :03/02/10 00:44 ID:???
打ち間違いは多分無いと思いますけど・・・ 手持ちの「Per;/CGI入門教室」とか言う本も、 最初のとこはtext/plainでやってます。。。
>>328 ブラウザの仕様だと思われ。
IEではダウンロード、NN7,OPERA,Lynxだと表示。
>>329 でもPerlではならないって言っているよ。
打ち間違いとしか思えない・・
MIMEタイプをプレーンテキストにすると、ダウソになることあるよ、perlでも。
2つのperlファイルがあるんですけど 両方とも1つのcgiを改造して作成しました。 それをローカルでテストすると上手く動くのに サーバーにアップしたら片方はエラーで動かないんです。 もちろん1行目やパーミッションも同じように設定してます。 何が原因なんでしょうか・・・。
>>332 それだけで分かれというほうが無理だろ……
>>332 >もちろん1行目やパーミッションも同じように設定してます。
むしろそれが原因ではないのかと。
335 :
312 :03/02/11 01:19 ID:???
>>312 でperl.exeが消滅した件ですが、理由がわかりました。
消滅する前にとあるソフトをインストールしたんですが、そのとき
インストールする前にインストーラーの
「インストールが完了していません。続けますか、やめますか?」
のエラーダイアログが出てそのメッセージをキャンセルしたんですよ。
それがactive perlをインストールした時のものだったわけです。
つまり、前のactive perlが完全にインストールされてなくて、
(インストール時にPCが固まったか何かで)半端なまま使ってたって事です。
それでインストールをキャンセルしたために、使ってたperl.exeが削除
されてしまったって事ですな。
336 :
312 :03/02/11 01:24 ID:???
337 :
nobodyさん :03/02/11 22:44 ID:VNfk5QCU
DBと連携するCGIがあるんですけど、 今度セキュリティレベルを高める、という話になりました。 で、やりだまに上がったのがCGIのファイル中に記述してあるDBユーザ/パスワード。 これを別ファイルにするとか言ってるんですけど、意味あるんでしょうか?? 皆さんは、こういう場合どうやってますか? 教えてくださいませ。
>>337 別ファイルにして、それを外部から参照できない場所(ドキュメントルートより上位)に
置けばいいんでない?
339 :
nobodyさん :03/02/11 23:07 ID:VNfk5QCU
ようわからんのですが、cgi-binの中なんて普通参照できないですよね。 それともできちゃうもんなんですかね?
>337 たとえば、SuEXECを導入しているとすると意味がある。 実行ファイル *.cgi のパーミッションは701にして、 それ以外の *。pl などは600にする。DBに渡すパスワードとかはこの*.plの方に記述しておけば、 ゲストユーザーからは*.plを実行したり読み出したりする権限はないので、 セキュリティは保たれる。
341 :
337 :03/02/11 23:50 ID:VNfk5QCU
なるほど。 よく理解できました。ありが�d
地域サイトを作成して、そこのメール会員を募集し 毎週メールを送ることになりました。 サーバは専用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); }
perl内で出来ることなんて無いんじゃないかな。 できても微々たるものかと。 大きそうなのはconvertくらい? qmailやpostfixが嫌ってことは、sendmailでやりたいってことでいいのかな? smtpfeedとかいうのがあるから調べてみるといいかも。
>>343 さんレスありがとうございます。
qmail、postfix、smtpfeed等ですが嫌いなわけではないのです。
専用サーバなのにsuを頂けない状態なので、
インストールは「お金を払って頼む」しか手段がありません。
以前ImageMagick入れてもらうだけで10万近くかかりました。
ですので、ソフトのインスト−ルは見合わせております。
個人のお金ではないのですが、ちょっと高すぎて躊躇します。
>>342 > if( !open(MAIL,"|$sendmail -t") ){ &error('sendmail'); }
自力で SMTP 喋るようにすれば、少なくとも sendmail を
立ち上げる負荷は無くなる。
Socket.pm (Perl の標準モジュール) くらいはサーバにも
入ってるだろ?
>>345 ご教授ありがとうございます。早速調べて見たいとおもいます。
>>345 絶対Socket=SMTPライブラリ・・・いや、メール送信ライブラリと勘違いしてるぞ。
>>347 Socket使って自力(sendmailに頼らずに)でやれという意味だと思うけど。
351 :
346 :03/02/13 13:58 ID:???
use Socket使ってやるのではないのですか? PORT番号を取得してソケット生成して・・・・・ って、あまりまだ調べてないのですが。
>>350 ならば「誰が」を省略するなよ。紛らわしい。
読み手の読解力が無いだけでしょ
>>355 文脈から推測する力も無いのか・・・
哀れだ
プログラムの前にまず国語からはじめような。
>>357 文脈から推測してもどちらとも取れるが。
>>346 IO::Socket便利だよ。
でもPerlの方が重い予感。
専鯖ならともかく、共有鯖だったらやんないでね。
「勘違いしてるぞ。」が「勘違いするぞ。」ならば分かるが。
>>360 さらなる情報ありがとうです。後日調べたいと思います。
>専鯖ならともかく、共有鯖だったらやんないでね。
明記の通り専用サーバですのでガンガンメール送ってみたいと思います。
ってほど会員増えないと思いますけど。
ちなみに戦闘力調べたら、1分で250通前後でした。
しかしながら4種類のメールに対して複数送っているので、
実際はそれ以下か・・・・・(´・ω・`)ショボーン
下らない論争で随分消費してますね(´ё`)
366 :
nobodyさん :03/02/15 13:04 ID:WKdky/xD
read.cgiって何ですか?
367 :
nobodyさん :03/02/15 14:20 ID:PUb1GMYC
掲示板を作っています。 書き込みをユーザーが削除できる機能を作っていますが上手く行きません。 sub delete{ local($no,$name,$email,$dai,$comment,$date,$ip,$host,$pw); if($in{'no'} eq '' || $in{'pwd'} eq ''){&error("パスワードまたは削除Noが記入漏れです");} open(IN,"$logfile")||&error("ファイルを開けませんでした"); flock(IN,2); @data = <IN>; close(IN); $flag=0; @new=(); foreach(@data){ ($no,$name,$email,$dai,$comment,$date,$ip,$host,$pwd) = split(/<>/); if($in{'no'} == $no){$flag=1; $PWD=$pwd;} else{push(@new,$_);} } if($flag == 0){&error("該当する記事がありません");} if($PWD eq ''){&error("その記事にはパスワードが設定されていません");} $match = ("$in{'pwd'} = $PWD"); if($match ne 'yes'){&error("パスワードが違います");} open(OUT,">$logfile")||&error("削除に失敗しました"); flock(OUT,2); print OUT @new; close(OUT); } 何処が悪いかご指摘をお願いします…
>>367 正直、読めというのか。そのインデントも減った暮れもないコードを。
どこがうまく行ってないかくらい自分でもわかるだろ。その辺を分析してエッセンスだけを提示してくれよ。
$match = ("$in{'pwd'} = $PWD"); if($match ne 'yes'){&error("パスワードが違います");} if ( $in{'pwd'} ne $PWD ) { &error( "パスワードが違います" ); }
まあまあ。インデントはHTMLの都合上、省略されたりしてうまく表示できないわけだから しょうがないよ。 でも「上手くいきません」は勘弁な。どう上手くいかないのかを必ず書くこと。 こういう動作を期待していたが、いざ実行してみるとこんな動作をしてしまった、みたいに 書ければとてもいい。
いやもう、必ず「パスワードが違います」と言われちゃうんだろ?
>>369 を参考にな。
おまえら優しすぎ。
373 :
nobodyさん :03/02/15 22:46 ID:bgMyjtsw
CGI(perl)が動かん。OS Win2000。DOS窓なら動くってのにブラウザではびくともしない。けっ ActivePerlをインストールしてHttpdを入れた。Httpdはドキュメントルートと実行プログラムの位置とかなら設定したけど、他のごちゃごちゃしたところとかはいじってない。 プロパイダはYahoo!BBを使ってる heloo World!っていうのを表示する簡単なcgiで、ソースは、 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<H2>Hello! WORLD</H2>\n"; print "</BODY></HTML>\n"; なんだが。これをブラウザでローカルテストするとHTTP 500 - 内部サーバー エラー になるんですが(´ー`)? 一体原因はどこよ?
374 :
nobodyさん :03/02/15 22:49 ID:/6YfHvht
/usr/local/bin/perlにPerlが置いてないとか "Content-Type"とか
その"Httpd"の名前を具体的に書けよ
500か
じゃあウェブサーバーの問題ではなさそうだな。
多分
>>374 のどれか。たとえばActivePerlは標準では\usr\local\binにはインストールされない。
>>374 「Content-Type」の大文字小文字は問われません。
>>373 CGIでPerlを呼ぶ設定にしてある?
378 :
373 :03/02/15 23:41 ID:bgMyjtsw
>>374 perlの位置はC:\Perl\bin\perl.exe から C:\usr\local\bin\perl.exe に直した。
それと同時にHttpdの設定も変更したけど意味無し
>>375 AN HTTPD Daemon Version 1.42
>>377 >>373 以外にやることありますかね(´ー`)?
>>373 拡張子CGIファイルでPerlを実行するように設定しておけば
一行目に関係なく動く(かもしれない。)
そうしていないなら一行目の
#!/usr/local/bin/perl
を#!C:\usr\local\bin\perl
にすればうごく(かもしれない)
ANHTTPDの設定でPerlへのパスがあってれば、 スクリプト内部の #!/usr/local/bin/perl をチェックしない設定がないかい? CGIファイルの拡張子は?
追記 CGIをチェックする という設定を使えばエラーがどこで出てるかわかると記憶があるが。
もちろん一般パスで使う設定にしてあるよね?
383 :
373 :03/02/16 00:49 ID:51g/G1ig
>>379 動かん
>>380 設定の位置はなんとなく分かった・・でも動かん。
拡張子は.cgi
.plにしても動かんよ?
>>381 検査結果:
Error 500
CGI エラー - CGIを実行できません : だそうだ
>>382 してあるよ?
自分としては、いろいろやってみてできなかったし、YahooBB関係じゃないかと思うのだが・・
それともやっぱりソースとか設定とかが原因ですか(´ー`)?
バージョンは正確にいうと何だ? 最後のアルファベットも含めて。
そういえば最近AnHTTPdってCGIがうまく動かないというバグがあったね
kentだって、プ
388 :
nobodyさん :03/02/16 01:13 ID:51g/G1ig
>>384 1.42g
>>386 知り合いが何かそう言ってたんだよ!知るか。
とりあえず今から386のサイトに飛んできます
389 :
nobodyさん :03/02/16 01:29 ID:51g/G1ig
逝ってきた。が、やはり動かん 細かいとことかでもいいんで何かあれば言ってください。お願いします
391 :
nobodyさん :03/02/16 01:47 ID:51g/G1ig
今日はもう気力が無いのでまた明日で
392 :
モモコ :03/02/16 03:35 ID:???
英語用のアンケートCGI探してます。 レンタルCGIでお願いします。 どなたかご存知ですか?
394 :
nobodyさん :03/02/16 10:01 ID:0jPHodHR
byte表示を�`バイト表示にしたいんですがどうすればいいでつか? たぶん$size / 1024を使うとは思うんですが書き方がわかりません
>>394 >たぶん$size / 1024を使うとは思うんですが書き方がわかりません
答えでてるじゃん。
396 :
nobodyさん :03/02/16 10:30 ID:0jPHodHR
$kzyte=ってかくんでしょうが細かいとこがよくわかりません。。。
>>396 Perlだとして、
print ($size/1024), "イ�`バイト";
398 :
373 :03/02/16 15:30 ID:51g/G1ig
win2000の再インストールをしてき増
400 :
nobodyさん :03/02/16 15:49 ID:PVMDa3kD
あふぇ
401 :
nobodyさん :03/02/16 15:54 ID:HkwUW3eX
402 :
373 :03/02/16 17:16 ID:51g/G1ig
さて、再インストールも終わったところで399の解説ページでも見てくるかな
403 :
373 :03/02/16 17:44 ID:51g/G1ig
まあその前にもう一度ActivePearlを入れなおしてみようとしているわけなんだが、 インストールする位置はどこがいい? 標準ではc:\perl\になってるわけだが、これでもいいのか(´ー`)?
>>403 貴様漏れの紹介したページ読んでないですか?
たしかに
>>404 の言うとおりどこでもいいんだけど、ローカルでテストしたあとは
サーバーにアップロードするんでしょ?そのときいちいちスクリプトの一行目の
Perlのパスを書き換えないでいいように、サーバーの設定とそろえておくほうがいい。
そのへんのフォローも書いてるから
>>399 のサイトを読みながらインストールしてみ
406 :
373 :03/02/16 18:08 ID:51g/G1ig
成功した!皆さんほんとにありがとう!
再インストールして良かったよ。疲れたけど
>>405 どもどもすみませぬ。399のとこにはお世話になりますた。
非常に感謝しておりますです。はい。
これからたくさんやりたいことがあるので、
いろいろと勉強してがんばりたいです。それじゃ。
407 :
nobodyさん :03/02/16 19:12 ID:y0NHKpEd
>>1 なんで最後に〜.cgiってつけなくちゃ駄目なんですか?
>>407 拡張子がcgiなら取りあえず実行してくれ。
って言う設定になってるからですよ。httpサーバが。
>>407 サーバの設定をいじれば.unkoでも.chinkoでもできる
410 :
nobodyさん :03/02/18 00:15 ID:FF7juywa
ageとく。
>>407 httpd.conf の中にありまふ
.cgi で検索してると出てくるよ
AddHandler cgi-script .cgi
て具合に
412 :
nobodyさん :03/02/19 04:11 ID:vr421/dJ
メールフォームで、SSLページから受信した内容を、 PGPなんかで暗号化してメールを受信出来るようなCGIとか ありませんかねぇ。。 SSLからそのまま平文メールだと意味無いんで・・・・・ フリー&シェアウェア&市販、どれでもいいんですが、 自鯖で使えるやつを探してます。
413 :
nobodyさん :03/02/19 04:32 ID:oWKZ/weY
Webサーバ=Apacheと決めつけている厨房がいるスレはここですか?
417 :
◆nBdXIOeCFk :03/02/19 15:55 ID:iFOkWU9W
とりあいずCGIファイル(カウンタ)を作ってみたんですが、 そのファイルを開くと、 「ファイルを開くアプリケーションを選んでください」 になってしまいます、どのアプリケーションで開けば良いのでしょうか?
>>417 向こうのスレの質問を取り消してきなさいな。
マルチと言われますよ。
>>418 どっちにしろどこに行っても結果は同じ機がする。
>>413 スマソ。スレ間違いでした。逝ってきます!
「ずるぽんあぷろだ」の formの部分を他のwebページに貼って そこから投稿しようとしたんですけどできませんでした。 おそらく外部からの投稿を禁止してるんだと思います。 どの辺を弄ればよいのかご教授いただけないでしょうか?
422 :
nobodyさん :03/02/19 19:46 ID:dIKdV7ST
あげ忘れましたすいません。
そのcgi知らないけど、$ENV{'HTTP_REFERER'} 辺りを削る。
>>423 ありがとうございます。
$ENV{'HTTP_REFERER'}
↑これを探してなかったんで質問させていただいたんですが、
今、もう一度検索しなおしてみたところ似たような部分がありましたので
解決できそうです。
ありがとうございました。
425 :
417 ◆nBdXIOeCFk :03/02/19 22:05 ID:qxP6cynE
>>425 中学校に入ると、英語を習うので、そうしたら読んでみるといいでしょう。
今すぐ読みたいなら、お母さんに英語教室に通わせてもらうと良いでしょう。
ハードディスクにあるjpgやpngの画像ファイルの縦と横の長さをサーバーサイドで取得するにはどうすればいいのでしょうか?
>>429 GDとか使うか自分で解析するか。
画像サイズって大抵ヘッダにあるから簡単なファイル操作で取得出来るよ。
431 :
430 :03/02/19 23:03 ID:???
>>430 GDとかヘッダで検索してみてわからなかったらまたお願いします。
でした。
>>430 おい、
>>429 は、
鯖から接続してきたクライアントのハードディスクの中身を抜こうとしてるんじゃないのか?
それができる前提で質問をしてないか?
>>433 そうなの?サーバのHDDもしくはファイルアップロードで画像をアップロードさせる前提だと思ったよ。
まぁ、いずれにしても俺のアドバイスがクラッキングに役立つとも思えんけど。
435 :
417 ◆nBdXIOeCFk :03/02/20 00:58 ID:ESnUqnD0
結局みんな詳しくは判らないのね、、、
>>435 うん。だから、きみが、がんばって、ほんやくして、ぼくたちに おしえてよ。
438 :
nobodyさん :03/02/21 02:57 ID:+apCT8OA
「$msgが半角スペースと全角スペースじゃなかったら$msgをprint」というのを print "$comment\n\n" if($comment ne (" " || " ")); と書いたんですが、 どうやら、ここが原因で動かないようになってしまいました。 真夜中ですがどなたかいらっしゃいましたら、ご教授して頂けないでしょうか?
× $msg ○ $comment ですた。
寝る前なんで適当に。 (' ' || ' ') が先に評価されて、それと$commentが比較されるからじゃないかな。 $commentと' '、$commentと' 'のそれぞれを比較して || しましょう。
441 :
nobodyさん :03/02/21 03:07 ID:p5R52YmN
>>438 これだと、if文で最初に評価されるのは、(" " || " ") この部分になるのでは?
if ($comment ne " " && $comment ne " ")
これでどうよ?
・・・間違ってるかもしれんけど。
442 :
441 :03/02/21 03:08 ID:???
443 :
438 :03/02/21 03:19 ID:???
直しまりました。ありが�dですた。 寝る前にこんな単純すぎるミスの質問で申し訳ないです。 おやすみなさい。
>>444 例えば2ちゃんねるってHost:ヘッダ要素がないと取得出来なかったりするけど。
HTTP1.1で必須なんだっけか?忘れたけど。
446 :
444 :03/02/21 20:41 ID:???
>>445 おかげさまで取得できるようになりました。
404が返ってきていたので原因は別にあると思っていたんですけど、
試しにHTTP/1.1にしてみたらできました。
447 :
nobodyさん :03/02/23 22:39 ID:BpzQ/pnE
Windowsで、メールを送信するプログラムのローカルテスト環境を作ることってできますか?
すみませんが、調べてもどうしても判らなかったので教えて下さい。 全角のアルファベットを全て半角に置き換える場合、どのようにしたら よいのでしょうか。 $zenkaku =~ s/A/A/g; とやれば一文字だけはできますが、これを複数に適用する記述が 判らないのです。素人質問だとは思いますが、どなたかご回答を お願いします。
451 :
448 :03/02/24 00:03 ID:???
>>450 どうもです!お陰さまであっさり解決できました。
452 :
645 :03/02/25 08:55 ID:???
453 :
nobodyさん :03/02/25 10:37 ID:1K3y7TR8
>>452 フォーム付近を読んでみれば?
そもそも、それだけの説明で分かるとでも思っているのか?
454 :
nobodyさん :03/02/25 11:54 ID:Py/Ha9JO
>>452 思い当たる節 = つかえないNETだからだよ。
解決方 = ヘッダーはContent-typeを最後に出力するように。
>>454 エラーが出るのか否か?
エラーが出るならばエラーコードを書いてみよ。
457 :
nobodyさん :03/02/25 17:40 ID:Ep506vrC
>>454 それ昔設置してみたことあるけど、
文字数制限なんてなかったような気がするぞ?
458 :
マリモーマ ◆r6PDGT6Xd2 :03/02/25 18:03 ID:JgDR1Phl
459 :
マリモーマ ◆r6PDGT6Xd2 :03/02/25 18:04 ID:JgDR1Phl
CGI使う環境って小規模だよね? だれかWEBアプリ使ってる香具師いる?
461 :
454 :03/02/25 23:28 ID:ohvUuxZB
>>456 エラーはでません。長文だと反応がありません。
文字数を減らすと書き込めます。
>>457 そうなんですか。
なんでだろ〜
>>461 もしかして method を GET にしてるとかじゃないですよね?
463 :
454 :03/02/26 00:15 ID:???
>>462 ふがっ!そんなバカな…と思ってみてみるとGETにしてました!
なんでだろ〜
ありがとうございました。
ここがなければ新たなCGI探しに旅立つところでした。
464 :
マリモーマ ◆r6PDGT6Xd2 :03/02/26 06:46 ID:O7FL4tD3
465 :
マリモーマ ◆r6PDGT6Xd2 :03/02/26 06:50 ID:O7FL4tD3
466 :
nobodyさん :03/02/27 12:48 ID:hjlRXuUv
レスキューCGIのショッピングバスケット拾ってうpしたのですがエラーはでないでメールは送信できるのですが、受信できないというか送られてきません。 サバはsendmailとCGIに対応してます。 原因として何がかんがえられますか?
>>466 メアドの間違い
CGIの設定ミス
sendmailのパスの違い
468 :
nobodyさん :03/02/27 18:29 ID:YAYUiWhm
Web上で、表形式にデータを表示しているのですが、1列目の項目は チェックボックス、2列目以降は、項目値にリンクを張っています。 この状態でチェックボックスやリンクをクリックしたときにCGIを使用して ログを出力したいと思います。 そのとき、どのチェックボックスやリンクをクリックしたかを引数で 渡すにはどうすればいいのでしょうか?
>>468 意味わかんねー。
CGIの基本的な仕組み理解してる?
試しにその画面がどんなHTMLなのか貼ってみ。
470 :
nobodyさん :03/02/28 12:42 ID:oJJV0L53
レスキューのwebformつかってるんだけど、カゴシステムで 受注者にも同じ内容のメールを送るにはどーすればいいの?
471 :
nobodyさん :03/02/28 13:22 ID:OqudrRUT
クライアントのクッキーがオンになっているかいないかって CGI側で判断できますか?
472 :
nobodyさん :03/02/28 13:39 ID:z8TnOjQ7
「データー調査」の信用情報機関
電話番号から住所 年収 財産 結婚暦
暗証番号 旧住所〜新住所 ブラックリスト
生存 行方 本名 などなど
初恋の人 思い出の人に逢えるかも・・・・?
http://www.tyousa.com
>>470 中身はよー知らんが、to:にそのアドレスを追加すればいんでないの?
to:発注者メアド,受注者メアド
そもそもレスキューに頼っているようじゃ、(ry
>>471 一旦クッキー喰わせてから、リロードを促して、2度目のアクセス時に$ENV{'HTTP_COOKIE'}の有無を確かめてみては?
>>472 仄暗い過去は思い出したくない(泪)
474 :
nobodyさん :03/02/28 19:44 ID:5OavBBuq
こ こ は お も し ろ い イ ソ タ ー ネ ッ ト で す ね
475 :
nobodyさん :03/02/28 20:54 ID:583oYx0/
CGI.pmとCGI::Lite.pmの違いって何? CGIでできてCGI::Liteでできないこと
477 :
473 :03/02/28 21:40 ID:???
> 仄暗い過去は思い出したくない(泪) 今日20年ぶりに同級生に出くわした。ちとびびった(汗)
478 :
nobodyさん? :03/02/28 21:57 ID:L/lBXc66
環境変数はHTTPヘッダ内に無いみたいですがどのレイヤで付加されるのですか?
>>478 HTTP_*の環境変数は、CGIっていう規格に入ってる。と思う。
つまり、HTTPDがつけてる。
REMOTE_*、SCRIPT_*もその辺りでつけてる。
環境変数っていう仕掛けは、UNIXにもともとある仕組みで、あるプロセスから
新しいプロセスを作ったら、もとのプロセスから継承される。というものだから、
それ以外の変なものは、そんな風にどこかで付いたもの。かと。
HTTP_USER_AGENTはUA側で変更可能でREMOTE_HOST等は変更不可能なのは HTTP_USER_AGENTはHTTPDがUAから送られてくるものを信じて設定するが、 REMOTE_HOSTはUA側ではどうすることもできないからってことでしょうか?
>>480 >REMOTE_HOSTはUA側ではどうすることもできないからってことでしょうか?
と、言うかこっちで取得できる以上、こっちで設定すればいいジャント。
HTTP_*は、HTTPDがクライアントからの情報を適当に変換して付けた。 REMOTE_*は、HTTPDがクライアントを見て考えてつけた。 (絶対に設定できないっていうわけではないけど・・IPだから)
>(絶対に設定できないっていうわけではないけど・・IPだから) ん?
485 :
478 :03/03/01 04:22 ID:DetgchOg
きちっと文字コード変換をした上で、 シフトJISの半角カナを正しく扱う方法ってありませんか? 2chなどの半角カナ対応板はどれも文字コード変換ができていません。 というか、文字化けの原因になっているjcode.plを捨てています。 そこで完璧な方法が欲しいのですが・・・。
>>480 変更不可能というわけじゃないけどな。
まあ変更(というか偽装)したら接続を確立できなくなるけど。
488 :
nobodyさん :03/03/01 06:57 ID:zvvmjqfD
>>486 getcodeが失敗していたら、優先的にShift_JISにする。
>>486 EUCとシフトJISのコードがかぶる問題?
・漢字をhiddenで渡し、返ってきた値で判別
・submitボタンのvalueに漢字を設定、返ってきた値で判別
>>486 普通は文字コードの変換なんていらないよ。
シフトJISのページにEUCを送りつけるブラウザなんていまどき存在しないだろ。
(ネスケの2.xとかがそんな感じだった)
でも、最近困っているのがrefererの文字コード。
これはサーチエンジンの文字コードに依存するから統一されてない。
しかも、googleがUTF-8なんていうこじゃれた物を使うから参った。
URL確認してgoogleの場合だけ処理分けるかな…
493 :
nobodyさん :03/03/01 15:54 ID:fsy3TEBy
perlでネットワークプログラミングを勉強したいです。 FTPクライアントぐらいは作れます。 もっとスキルアップするための役立つサイトなどは無いでしょうか? 生パケットを弄るような・・・
>>491 のおかげで解決しました。
みんなもありがとう。
>>494 アクセス解析はC++で書いてるんでな。
ログ表示はPerlだから、表示するときに変換すりゃいいか。
皆さんはじめまして。独自ドメインを所得しまして、
真剣にCGIに取り組もうと色々と勉強していますが、
解らない事が多々ありまして、質問に参りました。
私などは独自でPERLなどを理解していないものですから
フリーの配布サイト様に頼るしかできません。
しかし、私が探している「検索系」のCGIがどうしても
見つかりません。
できれば、
http://www.yadoplaza.com/の左フレームにある 検索をおすと該当する条件がこのようなテーブルで
抽出されるような物がベストです。
このようなシステムに近い事は配布サイト様のCGIを
少しいじるだけで可能でしょうか?
また、このような配布CGIは存在するのでしょうか?
WEBレスキュー様に簡易データベースというのを発見しましたが
これをいじくれば、できるのか・・・・
本当に皆さんのようなプロにはあほみたいな質問だとは思いますが
どうか教えていただければ幸いです。
>>497 そのサイトはJava-Servletじゃないかと予想してみる。・・・やっぱりそうみたい(ApacheJServ/1.1.2)
貴方じゃ一生かかっても作れないから、それこそプロに相談した方がいいよ。
>>498 丁寧に調べてまで下さり有難うございます。
Java なんたらですか。お言葉どうり一生無理ですね。(´・ω・`)ショボーン
資金豊富ではないので簡易データベースをちょちょっといじって
頑張ってCGIでがむばるしかないのでつか?
うーん。がんばるか。。それにしてもデータベースの元に
なるCSVを編集するだけでもしんどいですね。
servlet、考えようによっては下手なCGIより書きやすいけど。
gd ライブラリを使って、CでCGI作成し実行したのですが、
apache で、Internal Server Error が!
以下のページのソースをpngを吐くように変更し、コンパイルを掛け
cgi-binに置いたのですが、上手くいきません。
http://www2k.biglobe.ne.jp/~motoi/cdecgi03.html Premature end of script headers: /cgi-bin/gdtest.cgi
httpd.conf をいじる必要があるのでしょうか?
一応、類似の配賦されているperlで書かれたソフトを試したら
PNGが読み込まれているので、原因がつかめません。
>>501 取りあえずローカルのコマンドラインで動かせば?
command > a.png
で出力内容をファイルに出来る。
>>502 gdtest.cgi>&my.png
ソース内のprintf("Content-type"......)を消しreコンパイルし
リダイレクトさせて、ブラウザから見たのだが、
表示されない。
apache以前の問題と判明。
>>503 な、原因の切り出しくらいは自分の手で出来るんだよと。
今度は、PNGをちゃんと吐くソースを書いたのだが、 やっぱり無理です〜。(;;) 環境依存っぽいんですけど・・・・。 #include "gd.h" #include <stdio.h> int main() { gdImagePtr im; FILE *pngout, *jpegout; int black; int white; im = gdImageCreate(64, 64); black = gdImageColorAllocate(im, 0, 0, 0); white = gdImageColorAllocate(im, 255, 255, 255); gdImageLine(im, 0, 0, 63, 63, white); pngout = fopen("test.png", "wb"); jpegout = fopen("test.jpg", "wb"); gdImagePng(im, pngout); printf("Content-type: image/png\n\n"); gdImageJpeg(im, jpegout, -1); fclose(pngout); fclose(jpegout); gdImageDestroy(im); }
>>506 すいません、Tera Termからエディタに移した後なので、
コピペミスです。
以下、正しいソースです。
#include "gd.h"
#include <stdio.h>
int main() {
gdImagePtr im;
FILE *pngout, *jpegout;
int black;
int white;
im = gdImageCreate(64, 64);
black = gdImageColorAllocate(im, 0, 0, 0);
white = gdImageColorAllocate(im, 255, 255, 255);
gdImageLine(im, 0, 0, 63, 63, white);
pngout = fopen("test.png", "wb");
jpegout = fopen("test.jpg", "wb");
gdImagePng(im, pngout);
printf("Content-type: image/png\n\n");
gdImagePng(im,stdout);
gdImageJpeg(im, jpegout,-1);
fclose(pngout);
fclose(jpegout);
gdImageDestroy(im);
}
>>507 それも一応試したのですが、Internel Server Erorrが
帰ってきます。
>>510 すいません、環境書いていませんでした。
apache + linux です。
一応今試しましたが、Internrel Server Errorが帰ってきます。
error_log には、Premature end of script headers:
です。
なお、httpd.conf には、TypesConfig /etc/mime.types
となっていて、png は入っています。
実行権限無かったり・・・まさかな。
>>512 >>513 cgi は、実行できます。printenv.cgi で試しました。
>>514 まさかの事態のため、$ chmod 777 test.cgi と
実行権限は設定してありますので。
なお、cgiのコンパイルは、以下のように通しています。
gcc -o ./test.cgi ./test.c -static -lgd -lpng -ljpeg
-lm -lz -Wall -O2
実際、上記のソースで動くんでしょうか?
環境が問題なのか、切り分けしたいので・・・。
>>512 >>513 >>514 ごめんなさい、 ごめんなさい、 ごめんなさい、
ごめんなさい、 ごめんなさい、 ごめんなさい、
chmod 755 or chmod 700 で動かしたら動作しました。
∧_∧
( ´∀`)<ねー。許してね。
( )
/ / /
(_)_)
>>516 許してーあ・げ・な・いっ♥♪
許してーあ・げ・な・いっ♥♪
>>515 もしもどこかでpopenを使っていたら、popen前(というよりパイプに書き出す前)にstdoutをフラッシュしておいた方がいい。
以前これで小一時間悩んだことが・・・
519 :
518 :03/03/03 13:58 ID:???
探すのが面倒な場合は、とりあえずmainの先頭にsetvbuf(stdout,NULL,_IONBF,0L);(要stdio.h)を追加してstdoutをバッファリング無しにしてみる。
>>518 >>519 fflush(stdout)ですね。
とりあえず、gdライブラリを使っているので、大丈夫です。
popen ということは、ppmtogif 等のコマンドに対して、
パイプを使って書き込むパターンですね。
試したことはないので、試す際には参考にさせてもらいます。
521 :
nobodyさん :03/03/03 16:18 ID:0801sff0
522 :
nobodyさん :03/03/03 18:40 ID:CiYwJP6e
523 :
poor :03/03/04 05:12 ID:pSR3aMdf
質問です
524 :
poor :03/03/04 05:17 ID:pSR3aMdf
PERLに詳しい方お願いします。 2箇所機能的に動かないところがあります。 直していただけれましたら5000円お支払いします。
安過ぎだろ・・・まじで。
>>524 #!/usr/local/bin/perl
↓
#!/usr/bin/perl
2500円でいいや。
527 :
poor :03/03/04 11:28 ID:pSR3aMdf
まじめに!! もう少し支払ってもいいです。 メールアドレスを下さい。 添付でファイルを送ります、
ネタ確定。 ↓その後の言い訳。
529 :
poor :03/03/04 12:34 ID:pSR3aMdf
# AND OR 判断 if ($method eq 'AND' && $flag == $queryNum){ for ($j = 0; $j < 38; $j++){ $hits[$hitCounts][$j] = $clients[$i][$j]; } $hits[$hitCounts][38] = $flag; $hitCounts++; }elsif ($method eq 'OR' && $flag > 0){ for ($j = 0; $j < 38; $j++){ $hits[$hitCounts][$j] = $clients[$i][$j]; } $hits[$hitCounts][38] = $flag; $hitCounts++; } } return $hitCounts; }
>>529 { } の対応が合っていないから
当たりですか?
>>529 冗談はおいといて、何をしたいんだ?
ifもelifもやってること同じじぇねーか
しかもループ外で++してるだけならreturnは最初より1増えて
戻るだけだろ
やっぱりネタか
↓↓↓次の方どうぞ↓↓↓
532 :
poor :03/03/04 14:06 ID:pSR3aMdf
メーアドレス教えて下さい。振込先口座も。 業者に頼むと3万円と言われました。
533 :
poor :03/03/04 14:41 ID:b5xaOKg7
2万までなら払います。
>>529 が本物のソースなら他にも突っ込みどころ満載だろうよ。
ソース全部晒して何をどうしたいか言え。
それで大勢に見てもらったほうがよっぽどよくなるだろう。
535 :
nobodyさん :03/03/04 14:48 ID:xylsMcYb
パーミッションについての質問です。 おそらくこの板の皆さんにとっては馬鹿らしい内容かとは思うのですが真剣に悩んでおりますのでどうか教えてください。 掲示板のパーミッション設定ですが、使用者が (1)管理者 (2)グループ (3)その他 の3つに別れてますよね。 で、権限が (a)呼び出し (b)書き込み (c)実行 の3つと。 パーミッション設定する場合、(1)である自分自身は(a)(b)(c)すべて有効でないといけないと思うんですが、 (2)(3)については、それぞれ(a)〜(c)のどの部分を有効にすべきなのかを教えていただきたいのですが。
>>535 setuid実行環境なら、プログラムの置かれているディレクトリにはその他への実行権限が必用。
他は所有者にのみ権限を与えればよい。
そうでない場合は、プログラム本体には読みとりと実行を、ログファイルには読みとりと書き込みの権限を与える。
もしも実行時にファイルを作成することがあるのならば、その他へ書き込み権限を与えた専用のディレクトリを作成する。間違ってもそれを他の用途に使ってはならない。
>poor こいつマルチポストしてるから答えなくていいよ
538 :
nobodyさん :03/03/04 15:38 ID:xylsMcYb
>>536 さん
とてもよくわかりました!
ありがとうございました!
539 :
Name_Not_Found :03/03/04 18:07 ID:I14iMBLm
ねえねえ、今動いてる、なんの変哲もないCGIチャット。 これを SSL サーバで動かそうと思ったら、 SSL 対応のための修正がいるんですかね? 一般に、SSLサーバで動くCGIには、通常に比べて 制限などはありますか?
541 :
nobodyさん :03/03/04 20:23 ID:Yab0v18z
配布されている掲示板を使っていて、ふとログを見てみると 日付に関するところが"1046714534"のような 数字になっているんですがこれは何を表しているんでしょうか? また、どのように展開するのでしょうか?
>>541 1970年1月1日0時0分0秒からの経過時間(秒)
>>541 > どのように展開するのでしょうか?
localtime(3)
544 :
nobodyさん :03/03/04 21:41 ID:v+m1rapO
545 :
nobodyさん :03/03/06 00:23 ID:DsuR7EV5
あるグループで、データベースをホームページで閲覧・管理するための CGIを探してます。商品名・価格・販売個数などの欄を、掲示板感覚で 手軽に書き換えられるようなCGIを無料配布してるとこないでしょうか? WebDBを管理するもので管理者以外でも書き込めるもの、です。 イメージ的には、Webオークションとかをやるようなサイトが使っている CGIなんですが、無料配布されているところはないでしょうか。。。 普通の掲示板だとレスが長々とついていってしまい、管理も、閲覧するときも みづらくなってしまいますので・・ 販売個数や売上げなどのいくつかの項目を随時手軽に更新させられるような ものがあれば教えていただけませんでしょうか
IPアドレスを偽装すれば、何か犯罪になるのでしょうか?
フリーのアクセス解析CGIを利用しているのですが、 IE6.0を使っている人から403エラーで中に入れないと指摘がありました。 念のためエラーページにも解析を入れたところ、 IE6.0でもエラーの出る人と出ない人がいるようです。 当方マカーのためIE6.0のことはよくわかりません。 原因のわかるかたがいらっしゃいましたら、是非教えてください。 宜しくお願い致します。
552 :
550 :03/03/06 08:23 ID:k3C4MM6+
>>551 パーミッションは、cgiは755、datは666です。
>>553 >本家を自分一人で設置できるぐらいのスキルが最低限必要です。
って書いてある。
トラブルを自己解決できないような香具師は使うなってことだね。
滅多に使わないの? 俺良く使うけど。
>>556 だいたいは755じゃない?
CGIの場合。
>>557 今時suEXEC知らん奴なんているのか?
滅多に使わないとか、良く使う、とかって何か不思議な争いだなぁ 目的にあったパーミッションを考えたら当然だと思うんだが。
>>557 グループにアクセス権与えるのは愚の骨頂だよ。
CGIの中に管理用パスワードとか書いてあれば抜き放題。
563 :
nobodyさん :03/03/08 11:36 ID:IsIbiOhH
まじっすか!Σ(゜�凵K) CGIの中に管理用パスワード置いてました
>>564 与えないとnobodyさんが読み書きできません。
まぁ、suExecの場合は与えちゃダメですが。
1ユーザ=1グループか全ユーザ=1グループなど、 サーバ側がグループをどう扱っているかによるけど、 与えないほうが無難だな。
UNIX板の人にぜひ読ませたいスレだな(w 不必要なアクセス権を設定しちゃいけません。 間借りしてるなら規定されているはずだし、 自分で立ててるならちゃんと管理してねってことで。
だいたい共有鯖を使ってる時点で(以下略
>>568 telnetが思いっきり口を開けてる自宅鯖も十分怖いけどな。
(;´○`)
スクリプトが、ファイルを作らなければいけない場合の 安全なディレクトリのパーミッションについて。 1.suEXEC ON 0700 2.OFF 0777 =>常に危険 0707 =>一般ユーザーが隔離グループに入ってる場合は有効。 でも基本的にsuEXECじゃない共有鯖は安全じゃない
どんな設定にしようと管理者には丸見えなんだよな(;´○`)
>>572 あーんな物とかこーんな物とか?(;´Д`)ハァハァ
>>573 会社のメールアカウントを私的利用したらばれちゃう。
576 :
nobodyさん :03/03/09 19:30 ID:zYZaV2tZ
とあるCGIにファイルをダウンロードするフォームがあるんだけど、 ダウンロードボタンを押すとそのままブラウザにそのファイルが表 示されてしまう。TXTであれHTMLであれCGIであれそうだ。 これって何がいけないのかな?原因わかる? ほかのサーバーにおんなじCGIを置いてボタンを押すとちゃんとDL ダイアログが出てDLできるんだが・・・。
>>576 >とあるCGIにファイルをダウンロードするフォームがあるんだけど、
この辞典で訳がわからなくなった。
578 :
nobodyさん :03/03/09 19:34 ID:048q+sGA
579 :
576 :03/03/09 19:37 ID:zYZaV2tZ
>>577 ダウンローダーとかファイル管理CGIとか、そんなようなやつ。 ------ | DL | ------ ↑ボタンを押すと選んだファイルがDLされるっていう動作になるはずが ならないんだよ・・・。
>>579 Content-Typeがおかしいのでは?
さすが通信分野だよな。バイトストリームじゃなくてオクテットストリームか。
>>582 MIMEを通信と言い切ってしまうにはちょっと抵抗あるけどな。
>>583 MIMEって通信以外でも使われているの?
>>584 どっちかというとワイヤプロトコルだからちょっと違和感って感じ。
>>585 言いたいことが分かったような分からないような・・
まあちょっと違和感と言っているから全く筋違いというわけでもなさそうだな。
587 :
nobodyさん :03/03/10 00:12 ID:p/bgqDIW
cgiでmp3のID3タグの内容を取得できないでしょうか?
>>587 ファイルをバイナリとして分解してID3部分を取り出せばできますが
ID3v2のCOM使えば瞬間芸の予感
590 :
587 :03/03/10 00:47 ID:???
すんなせん、もうちょっとヒント下さい。
592 :
587 :03/03/10 01:32 ID:???
すんません、ID3v2のCOMがわからないです・・・ バイナリで取得するって事ではない、んですよね?
594 :
587 :03/03/10 01:51 ID:???
すいませんCOMの意味を知らなかったんで・・・、 検索行ってきます。 ヒントありがとう。
595 :
nobodyさん :03/03/10 15:33 ID:waQu7wS1
はじめてCGIでカウンタを付けようとしている初心者です。 相談にのっていただけませんか。 借りているサーバーがパーミッションの設定・変更はできないと書いてあり、 FTPソフトでいじることができませんでした。 CGIの実行やCGIによるファイルの読み書きにつきましては、 パーミッションの設定・変更なしに利用できると書いてあったので 実際CGIをアップしてみたのですがエラーになって表示されませんでした。 CGIが間違っているせいなのか、パーミッション変更不可のため動かないのか、悩んでいます。
age
597 :
nobodyさん :03/03/10 16:24 ID:y6h+x0ia
>>595 説明不足でよくわかりません。
どこのサーバーとか、
そのサーバーの設定等がWEB上で見れれば何とかなるんだが・・・。
(たまに説明をWEBでしてるところあるよね)
とマジレスしてみるテスト。
598 :
595 :03/03/10 16:24 ID:???
>>598 /*
プレミアサーバーの仕様は?
仕様は以下の通りとなっております。
・Microsoft Windows2000 Server
・Microsoft Internet Infomation Server(IIS)5.0
・Microsoft Exchange2000
なお、Perlはバージョン5.6.1を使用しております。
*/
よって、UNIX特有のパーミッションという概念はありません。
>>599 Winじゃん。
ローカルで動作確認できるんじゃないの?
601 :
595 :03/03/10 16:33 ID:???
602 :
nobodyさん :03/03/10 16:34 ID:M2RJhlYt
603 :
595 :03/03/10 16:35 ID:???
>>600 ローカルで動作確認ですか?
意味すらわからないレベルなので、ちょっと検索して調べてきます。
ほんとに知識不足で申し訳ありません。
>>603 先に
>>598 と
>>601 みたいな情報を出すようにしてくれ。
で、暇だったので試してみたけど、中身まったくいじらなくても置くだけで
http:// (略)/ecount.cgi?check は動作したよ。
こちらは Apache + ActivePerl で IIS じゃないけど、まあ変わらんでしょ。
605 :
595 :03/03/10 17:05 ID:???
>>604 今、中身をいじらずにアップしてみましたが
ログファイルのパスが不正です:./ecount.dat
ログファイルのパーミッションが不正です
と表示されてしまいました。やっぱり駄目みたいです。ああ。。。
ローカルで動かすにはソフトをダウンロードしなくてはならないようなので
また後で来させていただきます。
どうもありがとうございました。
606 :
576=579 :03/03/10 17:13 ID:AgGCKLX9
>>580 >>581 回答ありがと。
チェックしてみたらこうなってました。
print qq(Content-type: application/octet-stream\nContent-Disposition:attachment;filename=$1\n\n);
これでいいんですよね?
というか、他のサーバーではできたから問題はここじゃないような気がするんですけど・・・
#octet-streamなんて初めて見た・・・(汗)
607 :
nobodyさん :03/03/10 17:17 ID:y6h+x0ia
608 :
576 :03/03/10 17:33 ID:AgGCKLX9
>>595 >CGIの実行やCGIによるファイルの読み書きにつきましては、
>パーミッションの設定・変更なしに利用できる
これって、パーミッションが「何でも動く」んじゃなくて、
パーミッションをサーバーが自動で変えてくれる、って意味じゃない?
・・・私が前いたサーバーはそうだった。
だからパーミッションの問題じゃないと思う。
で、同じ問題にぶつかった事があるんだ。詳しい人に聞いたらこういう事だったよ。
:アップしたCGIが動かないのはCGIスクリプトに問題があるのではないか。
:サーバーで使ってはいけないってなってる命令語が含まれていないか。
:含まれていればUPしても使えない(こともあるかも)。
#ここでいう問題ってのは、「スクリプトがまちがっとる!」ということ
#じゃないぞ。そのサーバーで使うのに問題があるってこと。
たとえばセキュリティの問題で、カウンタに使われることのあるSSIは禁止
だとかさ。ファイルを作る命令語はダメだとかさ。
あなたのサーバーって、そういう制限を設けてるサーバーじゃないの?
もっとも・・・「制限がある」ってなっても、初心者だったらスクリプト見て
「これは制限されてるのがある・ない」ってわかんないと思うから、
ヘタの鉄砲数うちゃ当たるってなもんで、入れてみて動くものを使うようにす
ればよいと思う。
#んで、ローカルでのテストは意味ないんじゃないかな。こういう時って。
609 :
576 :03/03/10 17:38 ID:???
>>607 ほうほう・・・そういうところもあるんだね・・・。
絶対パスか。
>>605 それは「動作してる」よ。意図通りに動いてはいないけれどね。
次からは、1.サーバエラーが発生したのか、2.意図通りに動かないのか、
を明記するようにして欲しい。
>>609 >#んで、ローカルでのテストは意味ないんじゃないかな。こういう時って。
問題の切り分けがきちんとできており、最初から、問題は
サーバの仕様にあると限定できるのであれば、おっしゃる通りです。
でも今回の場合は(ry
611 :
595 :03/03/10 18:02 ID:???
>>607 うわーーーーー!出来た!出来たよぅ!
もう涙が出そうにうれしい。。。
ほんとうにありがとうございました。感謝!
>>606 そのCGIにtelnetでHEADリクエストしてもちゃんとoctet-stream返って来るかい?
613 :
595 :03/03/10 18:09 ID:???
>>608-610 どうもありがとうございました。
608さんのおっしゃるとおり、
サーバーはパーミッションを自動で変更してくれたようです。
それで607さんの絶対パスについてのところを参照にCGIのパスをいじったところ、
DATファイルが反応するようになり、
GIFファイルも直したら反応するようになり、
サーバー上でカウンタが動くようになりました。
610さん、申し訳ありません。
サーバーエラーなのか、意図どおりに動かないのかすら判断できなかったのです。
みなさん、ほんとうにありがとうございました。
614 :
606 :03/03/10 18:27 ID:AgGCKLX9
612>> telnetできないっす。 こりゃCGIの問題じゃなくって、サーバーの仕様とかかな? ・・・そういう仕様って、アリ?
615 :
608 :03/03/10 18:30 ID:AgGCKLX9
>>595 治りましたか。よかったよかった(^^)
サーバーエラー>紛らわしいよね(笑)
616 :
606 :03/03/10 18:32 ID:AgGCKLX9
>>614 言葉がたりんかった。
Telnetできないのは、Telnet開放されてないから(^^;
>>616 Port:80 に telnet せよ、という意味じゃないの?
Win2000のtelnetなら23以外にもアクセスできるよな。
管理サイドの人間しかわからんのでわ?
>>619 規制されないリモートホストとポートをCGI串が吐いているからだろう
622 :
607 :03/03/10 21:38 ID:y6h+x0ia
>>621 リモホはwww15.big.or.jpだし、80番ポートは空いてるよ
624 :
612 :03/03/10 22:26 ID:???
>>616 >>617 です。
telnet www.hogehigehage.com 80
HEAD /unko.cgi HTTP/1.x
625 :
nobodyさん :03/03/10 23:22 ID:F/vwue5x
yukiwikiを実験で設置してみたのですが、いまいちだったので FTPから丸ごと削除しようとしました。そうしたら、/diff/, /info/, /wiki/ というディレクトリ及びその中身のファイルが、Permission Deniedと言われ、 削除できずに残りました。どのようにすれば削除できるのでしょう?
FTPクライアントが何かわからんけど ディレクトリに書き込み権限がないんじゃないの?
627 :
625 :03/03/11 06:17 ID:???
自己解決しました。nobody権限のファイルがcgiによって作成されていたみたいです。 cgiによって作られたファイルはcgiからでないと削除できないと分かり、 ファイルをunlinkして回るcgiを作って走らせたところ、無事消えました。
>>627 otherに権限持たせれば出来ると思われ。
629 :
nobodyさん :03/03/11 16:29 ID:mYfv1t4y
本当に初歩的な質問だと思うんですが、 どれだけ調べてもヒントすら見つからないので、 全く見当違いなことを考えてるんだと思い質問させていただきます。 ディレクトリを作るのはmkdirですよね。 ならファイルを生成するのはどうしたらいいんでしょうか? たとえばtestというディレクトリを作り、 その中にtest.datというファイルを作る なんてことはどうすればできるんでしょうか?
取り敢えず下記でできる。 open(FILE,">>ふぁいる名"); print(FILE "でーた\n"); close(FILE);
>>629 Perlですか?
言語(or環境or状況)を書くように
632 :
nobodyさん :03/03/11 17:41 ID:04f/wl45
CGI配布サイトなんかに行くと、「軽い掲示板」「重い掲示板」っていう 表現がありますよね。処理が軽いとか。 この「軽い」「重い」って・・・? 設定項目(=変数)が多いと重い? サブルーチンが多いと重い? それとも行数が多いと重い? コメントが含まれていると重い? どんなんでしょ?(ちなみにPerlCGIで。)
>>632 レスポンスタイムが遅い。ターンアラウンドタイムが遅い。
>>632 >設定項目(=変数)が多いと重い?
>サブルーチンが多いと重い?
>それとも行数が多いと重い?
>コメントが含まれていると重い?
すべてNO
厳密に測定すれば差は出るだろうけど
>>632 プリントアウトした時の紙の重さじゃないの?
作者の愛情の重みだよ。
無限ループは愛情があふれているんだね・・・・・・
なごんだ
色んな所でKENT氏のlogを配列に入れてforeach()するのは悪いとあるんだけど、 どうしたら良いの? while使っても大差ないと思うんだけど。
>>642 違いがわかるようになってから出直してください。
何で悪いかは理解してるのか? もう春なんだなあ・・・
cgiから別のcgiを起動して値を取得して処理する ということをやりたいのですが、可能ですか?
>648 Perlならrequireで検索。
質問です config.plに$test = test;を入れといて、 print.cgiにprint "$test";って入れて表示させる方法ってどうやるんですか? よろしくお願いします(plの1;やcgiのヘッダーはできているとする)
>>650 普通にrequireすればいいんでないの?
653 :
648 :03/03/13 08:31 ID:9FkJfCBr
>>649 ごめんなさい
もう少し詳しく書きます
別のcgiは別のサーバにあります。
で、POSTでそのcgiに値を渡し
そのcgiが(ブラウザに)出力する結果を元に
処理を行う、それをいくつか繰り返す
以上の事をcgiで行うことは可能でしょうか
>>653 可能
ただし、これ以上の質問は使っている言語専用スレで
> cgiで行うことは可能でしょうか
cgi の部分を、PerlなりPHPなり自分が使っている言語に
置き換えて読み返してみれば、すぐ解ることでしょが
655 :
nobodyさん :03/03/13 09:09 ID:Lbm4LPV1
656 :
bloom :03/03/13 09:18 ID:+b8Vztun
657 :
632 :03/03/13 15:56 ID:rD3WUou4
>>633 ちょっと質問悪かったかも。
重い・軽い・っていうのは、どういう作りによっておきるのか?
と、聞きたかったのです。
それで、設定項目が・・・なんてことを言ったのですが。
>>634 うーん、そっか。
んじゃあとりあえず、40KBとかあるスクリプトが必ずしも
重いとは限らないわけね。
659 :
nobodyさん :03/03/13 16:38 ID:xb4yxiHK
futomi's cgi cafe、のprofessional版を使用とすると
アクセス解析するページを見ると、×印が表示されます。
FAQの
http://www.futomi.com/library/faq/acc_faq.html#1 は見ました。
standard版だと上記の方法で×印が表示されないようには出来たんですが
professional版だと駄目でした。
サーバーはxreaの無料鯖を使ってます。
×を表示しないようにする方法を知ってる方がいたらぜひとも!
教えてください。
>>659 私は、このウェブサービスが、初心者向けサービスでないことを知っています。最低限必要な情報しか提供していないことを知っています。
私は、問題を自分で解決する努力をします。わからないことはまず自分で調べます。
(XREA 規約より)
>>659 ちゃんと設置できているなら広告のせいだろう
662 :
659 :03/03/13 16:47 ID:???
出来る限り調べたのですがどうしても分からなかった為。 やった事を書くのを忘れていたので書かせて頂きます。 自動広告表示が原因だと思うのですが 自動広告をやめてhtmlに直接タグを書いて広告を表示しても ×印が消えなかったです。 futomi's CGI Cafe のFAQではこれで×は消えると書いていたのですが 駄目でした。 検索エンジンでも調べてみましたが駄目で、 自分で言うのもあれですが努力はかなりしました。 出来れば解決方法が分かれば教えてください。 宜しくお願いします。
>>657 重い = 処理時間が長い
つまり効率的な処理ができていないものと言える。
(処理そのものが複雑な場合もあるが、それはとりあえず置いておく)
効率的な処理というのは、
>>632 で挙げられたことと全く関係がない
わけではないが、そこに大きな関係を見出すことは難しい。
また処理の方法というのは、ほとんどの場合幾通りものアプローチが
あるもので、どれが効率良いかは試験と経験でしかわからない。
というわけで、ネット上で配布されているようなものに関して言えば、
使ってみるかソースを読んで解析するかしないとわからないよ。
既ユーザに使用感を聞いてみるのが一番簡単な方法かもね。
664 :
nobodyさん :03/03/13 19:07 ID:ajLCHyyn
保守あげ
>657 >設定項目(=変数)が多いと重い? 設定項目が多くても、処理が少なければ軽い。 >サブルーチンが多いと重い? サブルーチンが少なくても、全体の処理が多ければ重い。 >それとも行数が多いと重い? たった1行でも無限ループになっていたらそっちの方が重い。 >コメントが含まれていると重い? 誤差の内。 結局は、計算機が計算を行なう回数と、ファイルアクセスなどを行なう回数及び時間に関わる。 結果として、>663さんの言うのが正しいわけだが。 どういう作りで、というなら、シンプルな方が軽い。 もちろん、下手な奴が作ればシンプルでも重くなるが。 あとはベンチマークでもやって自分で計るのが一番。 いうまでもないがローカルでな。
6666666666
しかし、4、50kbもあるソースなんて書く方が辛くない? 出来る範囲で分割させた方が管理しやすいと思うんだけど。 書き込みと表示を分けるとか。
>>667 関数作らずに平気で2000行とか書く人なんですよ。きっと。
669 :
nobodyさん :03/03/13 21:49 ID:0oN+bQDd
普通、1関数何行ぐらい?
平均10行未満 最長でも80行 一画面に収まらない関数を作った場合は再検討する。
インデントが4つ以上の深さになったら他のいい書き方がないか考えてみよう。 これについては、C-BOARDは強烈。画面をまたぐifのブロック。
私も、大体10〜20行ぐらいかな。 1ファイルは大体20kb以内。500行ぐらいが己の限界です。 2000行なんて書いてたら、思いついた所を探す時には、泣いちゃうよ〜。
>>672 >これについては、C-BOARDは強烈。画面をまたぐifのブロック。
あなたが挙げているインデントの増加という面ではこれはむしろその抑止に働いていると思う。
kbだから大体2KBってとこか。平均10文字で200行。微妙かも。
childシリーズってレンタル鯖で禁止されるほど禿負荷なんだよね。
675 :
nobodyさん :03/03/14 15:39 ID:d7q/oEUS
皆さん、コメントとかつけないのですか? ちゃんとコメントつけると、私は数十行などすぐ逝ってしまいます。
>>675 コメントはルーチンの行数には数えないだろ
何行コメント書いてるの?
本文よりコメントの方が長かったら、それはそれですごいと思う。
やたらとコメントをつけないとわからなくなるようじゃ、 変数などの命名がヘタなんだろう。
681 :
657 :03/03/14 17:29 ID:Qg58BTXT
40KBのスクリプト・・・ウェブ管理CGIだから(笑)
ちなみに私がつくったんじゃないっす。そこまで技術力は(以下略)
>>663 ,665
あ、なあんだ・・・そういうことだったのか。
なんとなく、変数があるとそれを記憶するのにメモリを使う=重い
なんてこと思ってた・・・。
コメントは極力ないほうがいいのか、っていうのも、Perlが「上から」
見ていく言語だから、飛ばすものは無いほうが、なんてことを考えてた・・。
#行が増えると検索に時間がかかる、のと同じレベルで考えてました。
そっか。これで安心してコード書けそう。
>>675 私はせいぜい設定項目にコメントつけて、サブルーチンに
これは何をするヤツって書くぐらい。
シンプルな掲示板なら数十行まではいかない。
配布するつもりないから使用条件とか書かなくていいし。
>681 まだ勘違いしているようだが。 重いのとメモリ食うのははまた別。
683 :
nobodyさん :03/03/14 20:29 ID:i5QyaZbU
>683 ソースを.txtにして別途アップロードへれ。。。
MIMEをtxtにしてもIEの馬鹿はHTMLと勘違いする時ある。ネスケは命令を忠実に守る。 なんなのIEは。
687 :
683 :03/03/14 20:57 ID:???
回答いろいろありがとうございます。 そうなんです。拡張子を.txtにしてもなぜかcgiが実行されてしまい ます。ただし別ディレクトリに保存したら正しくソースが表示 されますが...できれば*.txtのファイルは別途作成せずに やりたいです。
cgi-bin以下にあるファイルを全てCGIとして実行するように設定することがある。 cgi-binの中に画像ファイルを置いても表示されないことがあるのはそのタイプ。 apacheならScriptAliasってやつだね。 で問題のソースの表示だけど、 別ディレクトリにtxtで置くか、ファイルの中身だけを表示するCGIを別に作成する。 後者は下手なプログラムだと知らない人に遊ばれちゃうので注意が必要。
パスワードまで覗かれないでね。
690 :
683 :03/03/14 21:53 ID:0q8cRWlr
ありがとうございます。httpd.confにScriptAliasの指定がして ありました。別ディレクトリに.txtをおくことにします。
691 :
nobodyさん :03/03/15 02:42 ID:Ch+qUXLE
ケントさんのデータ処理系スクリプトとかで、 ログを更新する際、 open(IN,"hoge.log"); @lines = <IN>; close(IN); push (@lines,"$d0<>$d1<>$d2<>$d3<>$d4\n"); open(OUT,">hoge.log"); @lines = <OUT>; close(OUT); って感じに一度全て配列に代入し、 配列に新しい値を加えた後、 ログファイルに書き込んでるんですが、 open(OUT,">>hoge.log"); print OUT "$d0<>$d1<>$d2<>$d3<>$d4\n"; close(OUT); ↑これじゃあだめなんでしょうか? だめな理由とかあれば教えていただけないでしょうか?
>>691 配列に新しい値が加わっていないじゃないか
>>692 あ、そうですね。
でももう、その配列を利用しないのなら下のでもいいんですかね?
#即レスありが�dです。
>>693 ケントのは読み込んでからデータを追加してファイル丸ごと上書きだろ。
別に追加でも構わないけど、下のじゃロックもかけてないからダメだ。
>>694 追加でもかまわないんですね。
どうもありがとうございました。
あと、ロックですが、
前後に&lock;と&unlock;
してあるんで大丈夫と思います。
ケントのソースはあまり参考にしないほうがいいぞ
697 :
nobodyさん :03/03/15 03:38 ID:5hlN9xGB
初歩的な質問かもしれませんが、個人等で公開している ドメイン検索エンジンは、通常どういった仕組みで作られて いるのでしょうか。 検索してもこれといったものが見つからなかったため、 質問させていただきました。 すみませんが、どうか宜しくお願いします。
何を聞きたいのかよく分からんが、ネームサーバに問い合わせればいいんでないの?
それしかないよね 何を知りたいのだろう?
700 :
nobodyさん :03/03/15 04:21 ID:5hlN9xGB
>>698-699 説明不足ですみません。
お名前.comのような、.com等のドメインが空いているか
サーチするプログラムを自前で作りたいということです。
$xxがMD5のハッシュ値なら〜 見たいな事をしたいんですが、どのように書けばいいでしょうか?
正引きじゃねぇや、whoisだ
>>701 言語書いてないから適当に
/[0-9a-zA-Z+\/]*=*/
>>704 すいませんperlなんですけど、
/[a-fA-F\d]{32}/
↑これじゃあ見当違いですか?
706 :
nobodyさん :03/03/15 18:05 ID:sA3oWGif
この板が適切かどうか分からないんですけど、、、掲示板cgiに関する 質問です。 よく吐きだしたhtmlを直接表示させる掲示板cgiがありますけど、その吐きだした htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように するにはどうしたらいいんでしょ?
>htmlをいったんファイルとして保存して、そのhtmlを掲示板として表示させるように そのまんま。 答え出てるじゃない。
ここでよいですよ。 > 吐きだしたhtmlをいったんファイルとして保存して、 > そのhtmlを掲示板として表示させるようにするにはどうしたらいいんでしょ? htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。 Perlなら print "location: URL\n\n";
709 :
706 :03/03/15 19:57 ID:1k1hrfmM
>>707 したいことの論理が正しいことは分かりましたが(w、具体的なやり方が
分からないのでし。
>>708 >htmlファイルを作る処理を終えたら、そのhtmlファイルに飛んだらいい話かと。
>Perlなら print "location: URL\n\n";
この行はどこに挿入したらいいんでしょうかぁ? フッター作成の後?
それともcgiの最終行ですか?
>>709 printで画面に表示する部分をファイルに出力に改造して、
その処理が終ったらLocationで飛ばす
711 :
706 :03/03/15 20:10 ID:1k1hrfmM
>>710 すみません
>printで画面に表示する部分をファイルに出力に改造して、
これの具体的な書き方を教えてください。
それから受け手のhtmlファイルですけど、何か準備は要りますか?
なんでわざわざhtmlのファイルを作りたいの?
714 :
706 :03/03/15 20:20 ID:1k1hrfmM
>>712 本来の目的は、掲示板cgiが生成して表示した掲示板のhtmlでは検索エンジンが
拾って来れないようなので、それを拾ってこれるようにするためです。
>>714 >拾って来れないようなので、
例えばgoogleとか拾ってくれます。
716 :
706 :03/03/15 20:27 ID:1k1hrfmM
>>715 いや、URLの末尾がxxx.cgiになっているものは拾ってきてくれないようですが。
ログファイルへの書き込みの後に画面表示のために
print "文字"; てのがあるはずだが、その部分を
open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
そのままだと画面表示されないので、Locationで作成したHTMLにジャンプするって感じだな。
index.htmなどからリンクをはる時には $htmlfileにリンクをはれば良い。
ファイルロックするとかLocationを使いたくない時は自分で考えれ。
上からの流れをまとめるとこういう感じだ。
自分でできないと思ったら、あきらめるか
>>713 のところのを使うとよい。
>714 ロボット避けのMETAタグとかの勉強をした方が早いと思う。
719 :
nobodyさん :03/03/15 22:28 ID:5hlN9xGB
>>703 どうもありがとうございます。
おかげさまで前進することができました。
720 :
706 :03/03/15 23:44 ID:1k1hrfmM
>>717 うがー
>print "文字"; てのがあるはずだが、その部分を
>open(FH,">$htmlfile"); print FH "文字"; close(FH) て感じにする。
毎行こうするわけですか。かなりめんどい・・・
当分、諦めるかな・・・ 気が向いたら
>>713 も検討してみます。
>>718 ロボット避けのMETAタグは使用していないでし。
select FH;
open FH, '| tee filename'; select FH;
723 :
706 :03/03/16 01:04 ID:???
どうもお騒がせしましたが、とりあえず所期の目的を達成しました。 単にフレームのhtmlファイルをこしらえて、そこにcgiを流し込んだの です。htmlファイルにはキーワードをしっかりと仕込みました、はい。 いろいろとお教えいただきありがとうございました。
724 :
nobodyさん :03/03/16 02:01 ID:0/UJ/9KJ
Perlで +-2003 +-03 | +-16 | | +-0.dat | | +-1.dat | +-18 | +-0.dat | +-1.dat +-05 +-04 +-0.dat とかなっているディレクトリ構成で、CurrentDirが今2003にいたと して ./2003/03/ 配下の全データ(サブディレクトリ、ファイル)を 削除しようとした場合、みなさんどんなソース書きます? やっぱ一番下までディレクトリ見に行って、ファイルを全部消して からぽちぽちとディレクトリを消していかねばならんのですか? なんか おぉ〜 っていうソースないですか?
725 :
nobodyさん :03/03/16 02:04 ID:0/UJ/9KJ
すまそ。ずれちった。 +-2003 +-03 | +-16 | | +-0.dat | | +-1.dat | +-18 | +-0.dat | +-1.dat +-05 +-04 +-0.dat ね。
unlink '03';
UNIXコマンドを使う手もあるが、つかえない鯖も多いから、再起呼び出しで削除用のサブルーチン作った方がいい。 ちなみに>1はちゃんと読んだか?
728 :
nobodyさん :03/03/16 05:44 ID:zuyh3uNE
チャットで、同じ文字が続くと文字を小さくしたいんですが、どうすればいいんでしょうか。 こんにちは!!!!!!!!!!!!!!! だとか あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお だとか。
>>728 言語すら書かずに質問ですか。
みなさん、こんなのにマジ回答しても徒労に終わりますよ。
>>728 if($string/hoge*{2}){print"small$text";}
Perlなんですけど <input type="radio" name="test1" value="$c_data1"> <input type="text" name="test2" value="$c_data2" size=6 maxlengh="6"> ↑みたいな感じでラジオとテキストボックスでデータの入力を 選択できる状態にして・・・。 もしも、テキストボックスに文字列が入っていたら ラジオボックスのデータを無効にしてテキストボックスに入力された データを保存しる。ってものをやってるんですけど・・・。 テキストボックスに特定の文字列が入っていたら。の処理はわかりますが その文字列が予測できないんで、不特定多数になっちゃって特定できず ifのカッコ内でどう処理すりゃいいかワカンネーんです・・。 こんな説明で判ってくれる人がいたらヨロヨロでつ・・。
つーわけで
733 :
nobodyさん :03/03/16 13:08 ID:bu9vx7r5
>>727 ありがとです。やっぱそうなっちゃうかな。
んで板の注意ありがと。
やっちまいました。逝ってきます(T-T)
734 :
731 :03/03/16 13:15 ID:???
解決しますた。
735 :
nobodyさん :03/03/16 13:18 ID:0oFKfJrd
736 :
nobodyさん :03/03/16 14:33 ID:vu3Qqexl
perlで if ($testが「TEST>>」から始まっていれば) { print "$testから「TEST>>」を抜いたもの"; } ということをしたいんですが、正規表現がよくわからず、 思ったように動いてくれません。 どのように書けばよいのでしょうか?
if($test =~ /^TEST>>(.*)/){ print $1; }
>>737 何故同じ事をしてるのに無理なんだろうと思ったら、
>を>にデコードしてたからでした。
すいませんでした。
書き方忘れた・・・ &&gt;ってことです・・・
741 :
nobodyさん :03/03/16 16:00 ID:F4DlRSun
掲示板への最終書き込み時間をHPのトップページに表示したいのですが 教えていただけないですか?
>>741 できるけど、お前には無理だからやめとけ。
そんな漠然とした質問じゃ、掲示板のログの最新時間を
書き出せとしか言いようがない。
744 :
nobodyさん :03/03/16 16:36 ID:KSrtergb
745 :
nobodyさん :03/03/16 17:10 ID:zuyh3uNE
Perlでフォームの内容を判断させるにはどういう命令を使ったらいいんでしょうか。 あほ が含まれてるだとか、判断したいんです。
正規表現
パターンマッチ
748 :
nobodyさん :03/03/16 17:22 ID:zuyh3uNE
正規表現?パターンマッチ?
メメント観た。 これは凄い。しかし難しい。 記憶などがテーマになってる映画だが、 観ている側も気を抜かず、正確に記憶しないと、 話がわからなくなる。 そんな気がした映画でした。 しかし、今まで観た映画の中で一番疲れたかも。
思いっきり誤爆スマソ
メメントのCGI化キボンヌ
w
755 :
nobodyさん :03/03/17 12:28 ID:DmD+ibnT
「既に配布されていないCGI」を集めてるスレを探してるんだけど、 誰かどこにあるか知らない? どこかのスレの関連スレで見かけたんだけどどこだかわかんない。スレタイを 覚えてないもんで・・。
757 :
755 :03/03/17 12:57 ID:???
>>756 あちゃー。検索しても出ないワケだね。 Thanx。
>>757 ちなみにダウソ板にあったんだよ。
あやすぃCGI関連だったけどね。
759 :
nobodyさん :03/03/17 17:30 ID:6C47WdHm
質問します。 SELECTタグのMULITIPLEで選択したやつを、一定件数表示させ、 前頁、次頁で送るのがうまくいきません。 ちなみに a href=\"$script?mode=serch&page=next&SELECTDATA=$SELECT" を、次頁に貼り付けてます。 ページ送りをはずすと問題ないんですが? どうも、SELECTDATAの区切りの判断に原因があるみたいとは思うんですが、 そこから先が(?_?)です。 おだづげを。
>>759 そもそも言わんとしてることがさっぱりわからん。
> うまくいきません。
どう、うまくいかないのさ?
> ページ送りをはずすと問題ないんですが?
はずしたら、「前頁、次頁で送る」という用件を満たさないんじゃねーの?
761 :
bloom :03/03/17 18:05 ID:A0XLzQcG
762 :
nobodyさん :03/03/17 18:23 ID:6C47WdHm
>>760 すんません。
FROMで条件を選択させる簡易データーベースなんですが、
単数選択だと問題なく表示されます。前頁、次頁の送りも問題ありません。
ところが、複数選択すると1件も表示されなくなります。
>はずしたら、「前頁、次頁で送る」という用件を満たさないんじゃねーの?
そのとおりです。選択自体は問題ないといいたかったので。
結局、コードがおかしいだけじゃねーか
>>762 $SELECT にどんな文字列になってるのかも示さずに
>どうも、SELECTDATAの区切りの判断に原因があるみたいとは思うんですが、
>そこから先が(?_?)です。
なんて書かれても答えれないですー。
>>762 普通にprintデバッグしろや。まずは原因を突き止めろ。
つーか痛すぎだろこいつ そんな説明で満足いく解答が返ってくると思うか普通? それすらも判らないんだから、まず無理。
768 :
nobodyさん :03/03/17 19:43 ID:6C47WdHm
無茶苦茶言われてる、759です。 なんせ、CGIはじめた馬ツ鹿なもんで・・。 sub search { ・・・ &repeate; #ここで、P1をPRINTさせると、(AとBで検索した場合)AB と表示される #「次頁」をクリックすると、ここで終了してしまう。 if ($i == 0) { print "<P><LI>該当する内容がありません\n"; } else { ・・・ if ($next < $i) { print "<a href=\"$script?mode=search&page=$next&P1=$P1\> 次頁 </a>\n"; ・・・} } #改行が多すぎるとしかられたので、その1
769 :
nobodyさん :03/03/17 19:44 ID:6C47WdHm
その2 759です。 #------------------ sub repeate { $start = $page + 1; $end = $page + 12; $P1 = $in{'P1'}; ・・・ @P1M = split(/\0/,$P1); $flag = 1; foreach (@P1M){ if ($_ ne "指定なし" && $_ ne $p1){ $flag = 0; }else{ $flag = 1; last; } } if (!$flag) { next; } ・・・ こんなんで、いいでしょうか?自分としたら(AとBで検索した場合)AB の区切り文字が認識されずにABで検索されてしまっているんでは? と思ってんですが。じゃぁSPLITは? と、こんがらがっているんですが。 やっぱ、説明になってないですか?
さっぱり分からんが、ひとつ気になった。 $P1と$p1は違う変数。もし分かってやってるとしても、紛らわしくてバグの原因になるので こういう命名法はやめたほうがいい。 アドバイスできなくてすまん。
>>768 >なんせ、CGIはじめた馬ツ鹿なもんで・・。
お前無茶苦茶言われてる理由がわかんねぇのか?
CGI初心者は歓迎だよ。お前がコミュニケーション初心者だからだよ。
例えお前がCGIのプロだったとしてもそんな質問の仕方したら同じように叩かれる。
772 :
nobodyさん :03/03/17 20:10 ID:YHcQyyod
perlでファイルをアップロードするプログラムを組んでいます。 ファイルと、その他の入力項目も同時にPOSTしており、 サーバー側で、入力のエラーチェックもやっています。 入力エラーを判断すると、エラーのHTMLを出力します。 ユーザーには、ブラウザの戻るボタンで、入力画面に戻らせようと 考えているのですが、IE6では「ページの有効期限切れ」が表示されてしまい、 入力画面に戻ることができません。 IEの仕様ということは解っているのですが、何とか回避する方法はないのでしょうか? やはり、入力値を保存しといて、それを元に再表示するしかないんすかねぇ・・・
戻ってデータが消えているよりはよっぽどマシでしょう。
775 :
nobodyさん :03/03/17 20:32 ID:6C47WdHm
>>759 送られてきたデータをどうやって変数に入れてるかわからないからこんな回答でがまんしる。
@P1M = split(/\0/,$P1);
$flag = 1;$SELECT_DATA = "";
foreach (@P1M){
$SELECT_DATA .= "P1=$_&";
if ($_ ne "指定なし" && $_ ne $p1){
$flag = 0;
送られてきたときの P1=aaa&P1=bbb&P1=ccc& の形に戻して$SELECT_DATA に入れて
次のページへのリンクには
print "<a href=\"$script?mode=search&page=$next&$SELECT_DATA\"> 次頁 </a>\n";
(multipleの\0区切りはcgi-libかな?)
>>768 > #ここで、P1をPRINTさせると、(AとBで検索した場合)AB と表示される
質問するときは、文章で説明するんじゃなくて、
ソース「そのもの」と結果「そのもの」を明示してよ。
AとBが選択されていたなら、追加した print 文による結果は
...&SELECTDATA=A&SELECTDATA=B&...
みたいな感じになったはず。これを「このまま」書いて質問して欲しいの。
質問ではこれがいきなり AB になってるから、途中で何をやっているやら
回答する側だってサパーリなの。。。
「質問内容を校正するスレ」があるといいんだがな。 質問する前にそこでちゃんとした質問文にする、と。 #しかしアフォな質問の仕方しかできないやつは↑のスレを利用するなんて考えもしないだろうな。
なんか幼稚園児の教育みたいだなw
むしろ全ソース上げて仕様を示せ
>>772 Expires: ヘッダを付けるか、mod_exipres 組み込んで、いろいろといぢってみるとか?
やったこと無いのでこれ以上はマニュアル参照キボンヌ。
いや、質問者からいかにして質問の要点を引き出すか、というのも このスレの楽しみかたの一つなのですテヘテヘ。
>>772 わざわざ別ページにしないで、入力画面の上にでも
エラーメッセージ出せばいいじゃないの
エラー項目に印でもつけてどこがエラーか教えれば十分でしょ
784 :
nobodyさん :03/03/17 22:46 ID:6pGOeCWh
回答感謝でっす。
>>781 その辺、いろいろやってみました・・・が、だめでした。
>>783 あ。その手があったか・・・
でも、たった今、再表示するロジック書き終わったとこです・・・
明日書きゃよかった・・・ウワァァン!
検索エンジンで、チェックボックスをチェックしてるカテゴリからのみ検索 って感じのことをしたいのですが、 たとえば、↓のようにしたとき、 <input type="checkbox" name="hoge" value="0"> <input type="checkbox" name="hoge" value="1"> 複数を選択することができない(しても意味ない)ですよね? それで、色々検索したんですけど、 <input type="checkbox" name="hoge[]" value="0"> <input type="checkbox" name="hoge[]" value="1"> ↑こんなんでやるみたいだって事はわかったんですが、 それ以上はわかりませんでした。 少しでもいいんで、助けていただけないでしょうか?
>>786 「複数を選択することができない」のはtype=radioだ。
type=checkboxは複数選択できる。
>>786 チェックボックスは複数選択できる
nameは同じ項目のチェックボックスなら同じ名前にする
hogeでもいいけど、後の[]はなんだ?いらない
valueは送信文字列で数字でも単語でもいい
他に送信ボタンなんかも必要
で、これを何で受け取って処理するわけ?
え?ちょっとまってください <input type="checkbox" name="hoge" value="0"> <input type="checkbox" name="hoge" value="1"> <input type="checkbox" name="hoge" value="2"> <input type="checkbox" name="hoge" value="3"> で、2つ目と3つ目を選択したとき、 値はどう入るんでしょうか? hoge=1,2ってなるんですか?
検索エンジンのイメージだとcheckboxがいいだろうな。 <input type="checkbox" name="hoge_1" value="1">て感じか。 最近perl弄ってないから忘れたが、hoge[]て使えるのか?
>>789 hoge=1&hoge=2となる。
同じnameが複数出てくるわけ。
cgi-lib.plなどでは、これを\0区切りで分解してくれる。
>>791 なるほど解りました
で、最終的に全ての値を@hogeに入れたいんですが・・・
どのようにすればいいのでしょうか?
#そろそろウザイですよね?すいません
>>792 自分でやってもいいし、cgi-lib.pl使ってるんだったら、
>>791 が言うように
>cgi-lib.plなどでは、これを\0区切りで分解してくれる
んだから、\0で区切ればいい。
>>792 <FORM>タグで囲んで送信先を指定とかしないと。
その送信先が受け取ってフォームデコードして
分割や置換えなど必要な処理をして代入すればいい。
jcode.libしか使ってないんですよ 明日調べてみます。今日はもう眠いんで どうも有難うございました。
>>790 INPUT要素のNAME属性の値はPerlとは全く関係ないだろ。
PHPなら関係あるかもしれんが。
libじゃないやplでした
>>795 ってことは自分でQUERY_STRINGか標準入力をパースしてるんだよな?
だったら「hoge=1&hoge=2」とかの数字を記録すればいいんじゃねーの。
>>794 その辺はわかってます
書いてないだけです
>>799 そもそも、
>>789 「値はどう入るんでしょうか?」はprintすりゃ分かるだろ?
自前でパースしてるみたいだし。それぐらいやらなきゃ質問する資格無しよ。
>>799 わかってますって、こっちはあんたがどういうレベルなのか
わからんのだよ。
>複数を選択することができない(しても意味ない)ですよね?
チェックボックスとラジオの区別がついていないPC初心者みたいなこと
書いてたら余計にそう思うだろ。
省略するなら全体がわかるぐらいの説明ぐらい書いてくれ。
>>801 チェックボックスとラジオボタンならともかく、チェックボックスとラジオの区別が付かん奴はおらんと思うぞ。
質問スレで情報を小出しにする奴はまともな返答をもらえると思っちゃいけない。 どうせ何が必要で何が必要でないかの判別もできないんだからな。 それがわかってるなら最初から自己解決できるはずだ。 質問するなら最初から全ての情報を掲示せよ。
>>789 の質問に対する答えは、
>>791 で完了している。
>>792 の質問の答えはこれで十分じゃろ。むう。
use CGI;
my @hoge = CGI->new->param('hoge');
print join(',', @hoge) . "\n";
もし、まともな質問ができるなら、殆どの場合、自分で問題を解決できる。
質問させてください。
$message =~ s/(https?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\">$1\:$2<\/a>/g;
↑これでオートリンクにできるんですが、
ttp://でも自動リンクにしたい場合どう書けばいいのでしょうか ?
h?ttps?
$message =~ s/(https?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\">$1\:$2<\/a>/g; $message =~ s/(ttp)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"http\:$2\">$1\:$2<\/a>/g; すいませんこれで解決しました。 でももっとスマートな方法あれば教えて頂けませんか?
$message =~ s/(h?)(ttps?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"h$2\:$3\">$2\:$3<\/a>/g;
いかんいかん $message =~ s/h?(ttps?)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"h$1\:$2\">$1\:$2<\/a>/g; ところで、なんでこんなことするわけ? 見たところ、掲示板か何かの本文の処理みたいだけど。 せっかくh抜きで書いたものを、強制的に直リンにしてしまうとは・・・
わざわざリンクを切っている意味を知らない厨だからだろう。
814 :
鳩 :03/03/19 10:52 ID:???
Perlでwgetを使おうとしています。
#!/usr/local/bin/perl
$WGET = "/usr/bin/wget";
$URL = "
http://www.yahoo.co.jp/index.html ";
@lines = `$WGET -q -O - $URL` or die;
print "Content-type:text/html\n\n";
print @lines;
exit;
こんな感じで、とりあえず取得はできるんですが、User-Agentの指定はできるんでしょうか?
教えてください。お願いします。
816 :
nobodyさん :03/03/19 21:31 ID:dpgy+pXr
チャットで初期画面にログが出なくて、一度発言するとログが出るんですが、 なぜ出ないのでしょう? どういうことが考えられるかわかりますか?
>>816 >どういうことが考えられるかわかりますか?
あなたの頭が相当に悪いということぐらいしかわかりません。
どこのチャット(スクリプト)の話をしてるかぐらい書きなさい。
818 :
nobodyさん :03/03/19 22:04 ID:nD9UxgHP
>>817 いや、自分で作ってるヤツなんですが、
初期画面でログが出ないのってよくある落とし穴かと思って、
よくある落とし穴の答えを出してくれるかと思っちゃいました。
初期画面でログが出なくて、フォームだけ出るのってあんまり無いことなのかな?
落とし穴も何も、自分で掘った穴に落ちてるだけじゃねーか ↓↓↓次の方どうぞ↓↓↓
>>818 初期画面でログが出ないようにお前が作ったんだろ。
お前しか知らないソースのバグが俺たちに分かるわけ無いだろうが。
お ま い が そ う 作 っ た か ら -- 終了 -- 次
よくある落とし穴じゃないってことですね。 どうもありがとうございました。
823 :
nobodyさん :03/03/19 22:45 ID:w/Iesnah
824 :
nobodyさん :03/03/20 19:49 ID:7VWyNL/K
なつみかんなどのアンテナはサーバに常駐するものなのでしょうか? また、そうなのであれば常駐しない手動更新のアンテナというものは存在するのでしょうか?
>>824 手動更新のアンテナって要するにLast-Modifiedチェッカ?
あるアクセスが前回のアクセスから一定時間たってる場合、Last-Modifiedを
再取得するようなスクリプトは組んでみたけど、サーバがLast-Modifiedを
返してくれなかったり、対象に日時を取得できるような文字列が無かったり
するケースだと、仕様的にNGだったなあ。
826 :
nobody :03/03/20 23:34 ID:Oa4xESM8
某サイトを運営しております。 先日、利用している掲示板のデータが紛失してしまいました。 バックアップを取っておいたので上書きしたらデータがおかしな所で区切られるようになりました。 普通は「,」で日付やタイトルや名前、本文などを区切られているのですが 途中から改行で区切られるようになってメチャクチャになってしまいました。 あたりまえですが掲示板のコメント本文には改行が多く含まれている為困っております。 データを一行ずつ改行を消すか<BR>を入れるにしても量がハンパじゃありません。 誰かCGIに詳しい方、正しく表示できる方法を教えてください。よろしくお願いします。
それだけで誰が答えられるって言うんだ・・・
本文中の改行と、レコード区切りの改行を違うものにして識別しているのは、 移植性が悪いと思うんだけど、その辺はレスキューやらKENTの脳では考えられ なかったらしい…。っていうのがその問題の原因。あまり関係ないけど…。 で、どうやって復活させるかというと、1レコード中の項目数は同じなんだから、 これを利用すればいい。 レコードの区切りを\n、本文中の改行を\rにする my @all = split(/,/, $all); while (@all) { my @line = splice(@all, 0, 1行の項目数); foreach (@line) { s/\x0d\x0a/\r/g tr/\x0d\x0a/\r/; } print OUT join(',', @line) . "\n"; }
print OUTの前に、 $line[-1] =~ s/\x0d?\x0a?$//; がないとゴミが発生するな。。
あ。。trがおかしい。 tr/\x0d\x0a/\r\r/;
831 :
826 :03/03/21 00:22 ID:7GAZusfY
ご親切にありがとうございます。 でも自分はperlやCGI言語が実はあまり分かりません…。 でもなんとか頑張ってみます。
> perlやCGI言語が実はあまり分かりません…。 じゃあ、どういう回答を期待していたのか。
>832 Web製作の方から誘導されてきた模様。
>>833 ふむ。提示された情報はあちらと同じなのかな。
>>826 は、掲示板スクリプトの入手先 or ログファイルの中身の一部(晒すべきでない
箇所はマスクして) 等の情報は、最低でも提示しないと。
HTMLみたく、「タグで何とかなる」と思ってんじゃない?
ここの画像アップBBS使ってるんですが、画像の番号をオリジナルに するには、何処をつつけばいいのでしょうか? www.kent-web.com/bbs/joyful.html?
anHTTPdスレでレスが無かったので、こちらに来ました。 anHTTPdでCGIを起動している時、CGIでヘッダーを「text/plain」と プレーンテキストとして出力しているのですが Htmlと解釈されていまします。 設定で直るのでしょうか?
>>838 IE は Content-Type を無視してデータの中身で判断する
インテリジェントなブラウザです。
>>838 hogehoge.cgi
なら
hogehoge.cgi/
で騙せる。> IE
お二方、有難うございます。 ずっと悩んでいたんですが、ブラウザの仕様・・?だったんですね。
>>841 hogehoge.cgi?.txt とか(笑)
あ、今試してみたけどダメだね。 wmaの時はこれでうまく行ったんだけど。 さすがマイクロソフト!
Wordもそうだけど、なぜマイクロソフトは 「HTMLっぽく見える」 「ユーザーがテキストだと激しく主張している何か」を HTMLとして扱うことに、こうまで執念を燃やすのだろう? マイクロソフトに何か利益が?
イラク攻撃と同じぐらいの何かがあるのだろうよ
IEだとHTML文書をそのままテキストとして見せたいという要求は認められないのか。
848 :
nobodyさん :03/03/22 12:25 ID:QDGorIu0
質問があります。 FORMで送信し、それを処理するのはCGIですよね? 他にもありますか? 実は、早稲田大学のシステムで、フォームターゲットが〜〜.htmになっているんですが、 これって機能するんでしょうか? 実際ページを表示できませんと出るんですが・・・科目登録ができない・・・
849 :
nobodyさん :03/03/22 12:29 ID:QDGorIu0
具体的ソースです。
一部伏せています。
<html>
<body onLoad="fncSubmit();">
<script type='text/javascript'>
function fncSubmit() {
// submit
document.frm1.submit();
}
</script>
<form name="frm1" action="
https://www.***.******.**/******/********.htm " method="POST">
<input type="hidden" name="HID_P1" value="*******">
〜〜〜中略〜〜〜
</form>
</body>
</html>
これが原因でエラーなのでしょうか?
それとも単に込んでいるだけなのかわかりません......
>>848 ASPとかServletとかJavaScriptとかそもそもブラウザとか。いろいろ。
>>850 htm拡張子でも有り得るわけですね?
ありがとうございました
UNIXは拡張子に依存していない
853 :
nobodyさん :03/03/23 05:01 ID:obrjhThh
アップロード/ダウンロードCGIについて質問です。 通常、ひとつのファイルしかアップロード/ダウンロード出来ませんが ディレクトリを指定して、その階層化のファイル、ディレクトリをまるごと アップロード/ダウンロードする事は出来ませんか?
できません。
フォルダを圧縮すればok
856 :
nobodyさん :03/03/23 16:27 ID:GYklYBj0
アップロードcgiをperlで作っている最中です。 クライアント側を↓こう定義して、localファイルを指定してボタンを押し、 <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> cgi側でこう受け取ると require 'cgi-lib.pl'; &ReadParse(\%in); print "$key=[$in{$key}]<BR>\n" foreach $key ( keys %in); ファイルの内容は $in{'File'}に格納されるのですが、 localファイル名を取得することができません。 htmlの定義が足りないような気がして色々調べてみましたが よくわかりませんでした。 スレ違いなような気もしますがよろしくお願いします。
ファイル名は来ませんよ。中身だけです。
>>856 cgi-lib.pl 使うのは悪いこっちゃないが、「やりたい事」がそこまで明確ならば、
まず標準入力からどんなデータを取得できるのかをファイルに落とす、等して
確かめてみればすぐ解ることだと思われ。
860 :
856 :03/03/23 17:41 ID:???
ありがとうございました。
>>825 亀レスですが、アンテナ自体のプロセスが常駐するものだと思っていました。
調べててcronを使えばいいことを知り、さっき設定がうまくいきました。どうもです。
元の名前でうpできるアップローダなかったっけ
863 :
nobodyさん :03/03/23 23:32 ID:hItEViUJ
$hoge$huga$fooのうち、 2つ以上選んだ場合にエラーが出るようにしたいんですが、 私の頭では恥ずかしながら下のが限界でした。 もうちょっとコンパクトに書くにはどうすればいいんでしょうか? if (($hoge ne '' && $huga ne '') || ($huga ne '' && $foo ne '') || ($foo ne '' && hoge ne '') || ($hoge ne '' && $huga ne '' && $foo ne '')) { &error("一つだけにして!!"); }
>>863 選ぶと言うのがよくわからん。
それはHTMLのフォームから入力した場合をいうのか?
多分そうだろうな。
んで、言語はPerlか?
やっぱり、多分そうだろうな。
だったら、PerlではないHTMLの部分で、radioを使えばそもそも一つしか選べなくなるけど、
そういうことではないのか?
>>864 選ぶってのは間違いです。スマソ
テキストボックスが3つ(hoge,huga,foo)あって、
たとえば、hogeに何か書き込んであるのに
hugaにも値が入ってると、
えらーを出したいって事です。
あ、perlです
あ、因みに一つも選んでないときもエラーを出したいんですが、 今は別でやってます。 もしこれも一緒にできれば一緒にしたいんですが・・・
>>865 //hogeの処理
if($hoge ne "")
{
if(!($huga eq $baka eq ""))
エラー
}
//hugaの処理
if($huga ne "")
{
if(!($hoge eq $baka eq ""))
エラー
}
・・・
>>868 あぁ、そうやって処理をわけるか
>>863 か迷ったんですけど
そっちの方がいいですかね
参考になりましたサンクスです
>>865 die("いってよし") if ( ($hoge ne "") + ($huga ne "") + ($baka ne "") ) > 2;
ってのはどうよ?
>>863 $count=0;
map{$count++ if $_ ne ''; } ($hoge, $hage, $foo);
if ($count != 1) {
エラー
}
って手もあるよ。
872 :
870 :03/03/24 01:57 ID:???
>>865 die if (!$a + !$b + !$c) > 1;
こっちの方がよかったかも?
873 :
870 :03/03/24 02:00 ID:???
die unless (!$a + !$b + !$c) > 1; ダタヨ。鬱だ。
>>872-873 それは、'0'のことを考えるとあまり良くないような。
それに、>1 じゃなくて、>=1と書きたかったのでは?
結局、
die unless ($a ne '') + ($b ne '') + ($c ne '') != 1;
でどう?
皆さんサンクスです。かなり参考になりました。
CGI動かしたら502ってエラーが出てきたけどこれはなんでしょう?
書き忘れ。調べたら、 「ゲートウェイ,もしくはプロキシとして動作させているサーバが,上流から無効なレスポンスを受け取ったことを示す」 って出てきたけど素人の俺様には意味が分かりませんでした。
>>863 $it = $hoge || $huga || $foo;
if ($hoge.$huga.$foo ne $it) { # 連結して比較
&error("一つだけにして!!");
}
じゃだめか?
879 :
nobodyさん :03/03/24 18:22 ID:JKyHEx6G
質問です. CGI で HTML のデータを標準出力するようなものを 実行したときには,その HTML が WWW ブラウザに 表示されるのでしょうか?
881 :
879 :03/03/24 19:10 ID:JKyHEx6G
あの,ある CGI プログラムに関して, 標準出力に HTML をちゃんとはき出してるのを確認したんですが, WWW ブラウザからその CGI を実行すると, 何も表示されないんです. どうしてなんでしょうか?
ソース晒せ
>>881 タグだけで、httpのヘッダがないんじゃないの?
>>881 telnetで確認しろ。最初の15行を晒せ
>>881 > 標準出力に HTML をちゃんとはき出してるのを確認したんですが,
これもあやしいな。どうやったんだか
CGIをダウンロードしようとするとhtmlファイルになってしまうのですが そのままDLすることはできないんですの?
>>886 >CGIをダウンロードしようとすると
意味不明。まあ言わんとしてることは解るんだけど。
その CGI とやらは配布されているものなのか?
だとしたら配布元に聞くのが最速解。
配布元じゃないっすわ フリーで配布されてる掲示板が上手く改造されてたんでちょっとあたしも欲しいな〜と フォルダ覗けたんでcgiを頂きたいな〜と思ったんですの でもhtmlに… 無知で文才もなくてすまそ。
***.cgiにアクセスすると、そのCGIが実行されて結果だけが送られてくる(という設定にしているサーバがほとんど
890 :
nobodyさん :03/03/24 21:33 ID:fQ3PutSJ
>>888 この方法で無断ダウンロードしようとすると、不正アクセス禁止法でタイーホされるかも(ウソデス)
本人にメールを送って頼み込むのがいい。ただし、必ずくれるとは限らないので注意。
891 :
4 :03/03/24 21:37 ID:muzproYQ
同じサーバのアカウントとってSCRIPT_FILENAMEから相手の ディレクトリを予想してターゲットのファイルをopenすればうまい 具合にタイーホされる。
っちゅーかね、先に
>>888 を言えよ。
どーしてこう質問下手な奴ばっかりなんだ?
もう一度お尋ねさせてもらいます。 502エラーが出ました。検索してみると 「ゲートウェイ,もしくはプロキシとして動作させているサーバが,上流から無効なレスポンスを受け取ったことを示す」 と、出てきましたが意味が分かりません。 このサーバーは俺に何をしろと言ってるのでしょうか? 502になる時と正常に動く事はマチマチです。
>>894 そのサーバは自鯖?レン鯖?
動かしてるプログラムは自作?拾い物?
サーバのログ等は見られるの?
この程度の情報も出さずに回答がもらえると思っちょるのかバカチン。
896 :
879 :03/03/24 23:01 ID:JKyHEx6G
ども.
>>885 確認はコマンドラインからしました.
ヘッダをつけても同じことでした.
なんででしょう?
898 :
879 :03/03/24 23:15 ID:JKyHEx6G
ソースさらせというのはもっともなんですが, 質問に関係ない部分をどう廃除していいかわからなくて…
899 :
4 :03/03/24 23:25 ID:muzproYQ
900 :
4 :03/03/24 23:27 ID:muzproYQ
コマンドラインから実行しても怪しい。 例えばREQUEST_METHODがGETの場合だけHTMLを出力するような プログラムを書いたとしても、コマンドラインからでは何もでない。 その逆もある。
901 :
4 :03/03/24 23:28 ID:muzproYQ
>>899 先頭10行ってのはコマンドラインから出力した10行ね
キリ番ゲト
902 :
nobodyさん :03/03/24 23:41 ID:Q3dLkmth
903 :
879 :03/03/24 23:45 ID:JKyHEx6G
ども. それではコマンドラインで出力した結果を書きます 以下です. Content-type: text/html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"></head> <title>入力内容確認</title> <body> <h1>入力内容確認</h1> (以下略)
905 :
4 :03/03/24 23:51 ID:muzproYQ
普通だ。 それは何も条件なしで出力しているのか? ついでに聞くがCGIは初めてです?
>>903 プログラム自体は合ってそうだから、
あとは
>>895 (と、パーミッション)に答えたら解決だな。
つっか
>>895 を無視ってんじゃねーよボケ。本当に質問に答えて欲しいのか?
907 :
4 :03/03/24 23:53 ID:muzproYQ
どうもいいが、<title>は<head></head>の中に書くのでは?
>>903 そのCGIってどこに置いて実行したの?
コマンドラインって、サーバに置いてtelnetかSSHで?
あまり関係ないけど、言語は何?
>>908 こういう時はPerlと相場が決まっている(よなぁ)
あと、
>>884 やれよ>
>>879 それで解決だろ。
telnet ホスト 80
GET /hogehgoe.cgi HTTP/1.0
910 :
879 :03/03/25 01:26 ID:1VNT2YvW
ども〜 Windows98 でローカルで httpd というサーバを動かしてやってます. CGI の言語は perl です. で,この httpd を通して,WWW ブラウザ(IE)でみると, 何も表示しないんです. なんででしょう?
httpdって当たり前のような気が・・・ それともhttpdという名前のHTTPサーバがあるのかな(確かにUNIX用Apacheの実行ファイルの名前はhttpdだ)
>>910 日本語が不自由な人はここでは解決できません。
913 :
879 :03/03/25 01:35 ID:1VNT2YvW
ここでいう httpd というのは Windows で動く, あるサーバプログラムのことです.
解決に近づく質問には一切答えていない。
よってネタ決定。以降
>>879 は放置でお願いします>みなさま
print "Content-Type:text/html\n\n";とやっているのなら、print "Content-Type:text/html\r\n\r\n";にしてみたら?
917 :
4 :03/03/25 01:51 ID:4EHffvQl
どうでもいいが俺は、 print "Content-Type: text/html\x0d\x0a\x0d\x0a"; と書くな。
>>917 \r\nだとWinではCRCRLFになってしまうからな。
今のWin用Perl達でもそうなのかどうかは知らないが。
今も変わってないかと。
>>919 「ActivePerlだと\nがLFだ云々」ってム板で聞いた覚えがあったけど勘違いかも。
ActivePerlでも\n\nで使えてる
推測するより出力を見た方が早いわけだが。
>>910 httpdがCGI実行できるように設定されていない・・・なんていうオチじゃない?
自鯖なら、ソースとログ出せば一発。 出す気が無いなら自分で解決してください。 次の質問どぞー。
927 :
nobodyさん :03/03/25 14:29 ID:XDBil0k6
PATH_INFOを有効にするためにはサーバ側での設定が必要なのでしょうか?
>>927 Apache2.0にはAcceptPathInfo がある。
929 :
894 :03/03/25 15:56 ID:???
>>895 レンタル鯖。
プログラムは自作。
全く同じ動作でも502が出たり正常に動いたりします。
正確に言えば、ちょくちょく502が発生すると言った感じです。
すぐに直ります。
>>929 その自作プログラムはどういう動作をするの?晒せないの?
ローカルでは問題無く動くの?
他のCGIプログラムでも同様の現象なの?
レンタル先に問い合わせてみたの?レンタル先は晒せないの?
ローカル ― サーバ間にPROXYは存在するの?
>>930 かわいそうな子なんだから放っておいてあげなよ。
質問させていただきます。
ttp://number.goo.ne.jp/index.html ここの「スポーツ投票」のように投票項目を選択し投票すると、結果が別
ページで表示されるようにするにはどうすればよいのでしょうか?
投票CGIは用意しているのですが、別ページの投票項目どのようにして
反映させているのか分かりません。
どなたか教えてください。お願いします。
>>932 Web制作板に行ってみるのも良いかもしれない。
>>933 さん
わかりました。行ってみます。
場違いな質問ごめんなさい。
935 :
お初 :03/03/25 18:05 ID:???
初カキコです。早速質問なんですが、
↓の用に自作で作ってみたのですがうまく作動しません。
***.cgiに
#!/***/***/***/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>テスト</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "<A HREF="
http://$2ch ">$2ch</A>\n";
print "</BODY>\n";
print "</HTML>\n";
で、HTMLに
<HTML>
<BODY>
<FORM METHOD="POST"
ACTION="./***.cgi">
ログイン名:
<INPUT TYPE="text" NAME="2ch">
</FORM>
</BODY>
</HTML>
本来は、フォームに『2ch.net』などと書き入れて、エンターを
押すと、リンクするタグが表示されるようにしたかったのですが、
白紙で全く分かりません。ご伝授、お願いします。(.. )ペコリ
>>935 どう動かないのか言ってもらわんと・・・。
>>935 CGIスクリプトが、FORMから入力された値を「どのようにして受け取るか」
という点を理解されていないようです。
ということで、学習すべき次の課題が見つかったじゃないですか。
>>937 C G I モードのレガシーなPHPなら正しいが?
>>935 ちなみに、ホントに白紙だった?
> print "<A HREF="
http://$2ch ">$2ch</A>\n";
まるでエスケープしてないここら辺がヒジョーに怪しいんですが。(w
CGI よりも言語のお勉強の方が先かもよ。
基礎から学べ
>>939 perl って書いてあるやん…。
わざわざ Content-Type 入ってるやん…。
<? も無く print 使ってるやん…。
HSPでの質問なんですが、以下のプログラム(多少命令が抜けてますが)で 変数に変換したtxtファイルを送ろうと思うんですが、これを受け取るためのCGIの知識が疎くて CGIの作成方法がてんでわかりません。ご教授おねがいいたします。 #include "hspsock.as" onexit *exi *txtlod sdim hi,32768,1 bload "config.txt",hi *start repeat 16 wait 1 sockopen xx,"",5856 if stat=0 :goto *mess loop //接続失敗 end //接続成功>内容 *mess sockput ""+hi,xx repert 15 wait 1 if stat=0 :goto *exi :else :wait 1 :++xf if xf>5 :goto *start loop *exi wait sockclose xx end
>>943 足りないのはCGIの知識じゃなくてHTTPの知識じゃない?
config.txt の中身は何?HTTPでおしゃべりするための台本かな…
946 :
4 :03/03/25 18:54 ID:4EHffvQl
>>944 正解だと思われる。
>>943 送りたいデータの最大量(sdim hi,32768,1)から見てPOSTで送る必要がある。
POST /hoge/hoge.cgi HTTP/1.1
Host: hoge.com
Content-Length: 送るデータ量
送るデータ
です。
ただ、バイナリデータ(日本語含む)ならきちんとEncodeしろ。
余談だが俺はHSPでWEBサーバ書いたことあるぞ。遊び程度だが・・
947 :
4 :03/03/25 19:01 ID:4EHffvQl
>>935 それだけならPOSTでなくて、GETで十分と思われる。
$ENV{'QUERY_STRING'}を=で分けた後にDecodeしろ。
>>940 さんが言うようにエスケープもしろ。"""は"\""だ。
むしろヒアドキュメントで書け。言語勉強してこい。
>>947 >むしろヒアドキュメントで書け。
鼻くそをほじってしまった。命令形で書くようなことでも無かろう。
むしろ、ソースコードからさっさとhtmlを追い出す努力をすべきだと思うよ。
949 :
お初 :03/03/25 19:46 ID:???
$2ch=$ENV{'QUERY_STRING'}を使いましたら、表示されました。 しかし、リンク時、フォームに1chと入力すると、 リンク先、リンクの文字が$2ch=1chになります
>>949 悪いことは言わない。
こんなところで聞かずに本買って一人で勉強しなさい。ね?
馬鹿をさらすのは必ずしも悪いことじゃないけど、
自分で努力しないのは一番嫌われることだよ?
951 :
4 :03/03/25 21:03 ID:4EHffvQl
>>948 おっしゃるとおりです。
以前初心者にスタイルのことをどうこういうなと言われたのを
忘れていました。
>>949 すみません。
実はなんとなくキャラ変えています。偉そうなイメージで・・ゲレ
>>950 さんの言うとおり言語からやり直したほうがいい。
一応書くと、
$2ch = (split(/=/, $ENV{'QUERY_STRING'}))[1];
$2ch =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
でいいはずだ。
# Perlの変数って数字から始まってよかった?
いや
>>949 は、無事動きましたよ、という報告なのだろう。ウンウン
>>951 > # Perlの変数って数字から始まってよかった?
そもそも、数字で始まる予約変数があるからダメでせう。
>数字で始まる予約変数があるから 通常の変数でも可能ってこったな。
955 :
お初 :03/03/25 21:16 ID:???
有難うございました。
>>951 さんの教えてくれた記述どおりやりましたら、
無事、リンクできました。どうもこのたびはご迷惑お掛けしました。
あるレン鯖屋のサイトに「○○(CGIスクリプトの名前)はハードディスクを破壊するので禁止します。」と書かれていたのですが、 そんなことできるんでしょうか。
957 :
nobodyさん :03/03/26 04:19 ID:S5IZshnU
>>956 破壊にも色々あるけど、root 権限で動くとかじゃなければ無理だろ。
お子ちゃまの暴走に対する抑止効果は期待できるかもね。
良質の客が去っていくという逆の効果も発生するだろうが。
959 :
お初 :03/03/26 10:16 ID:???
言われたとおり、早速、本を買ってきて3時間ほど苦闘しましたが、失敗しました(TT
教えて頂いた応用で、
$2ch = (split(/=/, $ENV{'QUERY_STRING'}))[1];
$2ch =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
に、($2ch,$1ch)=split(/&/,$data);をつけて、
フォームを2つに増やし、↓HTML
<HTML>
<BODY>
<FORM METHOD="GET" ACTION="./***.cgi">
ログイン名:
<INPUT TYPE="text" NAME="2ch">
<INPUT TYPE="text" NAME="1ch">
<INPUT type="submit">
</FORM>
</BODY>
</HTML>
リンク先を
http://$2ch.$1ch.net/ にして$2chのフォームに、2、
$1chのフォームに1と入力したのですが、
リンク先が
http://2.1ch.net/になってしまします 。
本当に勉強してもお手上げでした。
960 :
お初 :03/03/26 10:18 ID:???
間違えました。上2段は&dataでした $data = (split(/=/, $ENV{'QUERY_STRING'}))[1]; $data =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
>>959 ちょっと待ってくれ。
自分で書いたソース、各行でどんな処理をしているのかを理解しているのか?
そもそも
1. 動きゃいいのか?
2. Perl(じゃなくてもいいけど)のプログラミングスキルを身に付けたいのか?
# ところで朝7時から開いてる本屋があるのか?
963 :
bloom :03/03/26 10:30 ID:C4vNyXIc
964 :
お初 :03/03/26 11:52 ID:???
>>962 さん、昨日買いました
プログラムのスキルはまだですが、多少の知識を得ました
>>964 >買いました
こんなところで油売ってないで呼んで理解してください。
966 :
4 :03/03/26 13:40 ID:qOessVDe
>>965 激しく同意
そもそも
($ch2,$ch1)=split(/&/,$ENV{'QUERY_STRING'});
$ch2 = (split(/=/, $ch2))[1];
としないと。しかもどっちが2chで、どっちが1chか怪しい。
GETでどのような形式のデータが送られてくるか$ENV{'QUERY_STRING'}を
そのままprintして確かめてください。
967 :
4 :03/03/26 13:46 ID:qOessVDe
my($name, $value, %ch);
foreach (split(/&/, $ENV{'QUERY_STRING'})) {
($name, $value) = split(/=/, $_, 2);
$value =~ s/%([a-fA-F\d][a-fA-F\d])/pack('H2', $1)/ge;
$ch{$name} = $value;
}
print "
http://$ch{ '2ch'}.$ch{'1ch'}.net/";
968 :
お初 :03/03/26 13:58 ID:???
本当にいつもすみませんでした。無事、URLを表示する事が出来ました。 4様、その他アドバイスをくださった方々に非常に感謝してます。 m(_ _)m
969 :
nobodyさん :03/03/26 14:52 ID:S5IZshnU
つーかそのソースの各行がどんな処理をしてて、 ここをこうするとこうなって・・・ てなことはどうでもいいんだな多分。 せっかく本買ったのにもう見ることも無いんだろうな で、また何かわからないことがあると、 とりあえずこのスレにきて「お初」って書いて質問するんだろうな
>>970 このスレは質問者のためだけのスレではないのです。
回答者も、質問者から如何にして質問の要点を引き出すか、を楽しめるスレなのです。
なんちて。
馬鹿はこれでも努力した方でしょう。
974 :
nobodyさん :03/03/26 21:09 ID:WT1OtOAR
CGI(perl)でPOSTで<FORM>からデータをもらうときはどうすれば いいのですか?
Perlなら、STDINっていうファイルハンドルがあるから、それを使って読む。
983 :
4 :03/03/26 21:23 ID:qOessVDe
標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。
984 :
4 :03/03/26 21:24 ID:qOessVDe
LENGTHね・・
標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。標準入力から読みます。 my $buf; sysread(STDIN, $buf, $ENV{'CONTENT_LENGHT'}); print $buf; 質問、sysreadとreadの使いどころは? 自分はSocket関連だとsysread使いますが、ファイルを読むときは readです。
986 :
4 :03/03/26 21:25 ID:qOessVDe
987 :
950 :03/03/26 22:56 ID:???
988 :
nobodyさん :03/03/27 00:16 ID:OfSB210s
質問したいんですが、ホント馬鹿な質問っぽいんで先にごめんなさい。 foreach (0 .. 10) { if (-e "$_.dat") { open(IN,"$_.dat") || &error("ファイルオープンエラー"); close(IN); } } ↑こんなことする意味ってありますか?(ifの部分) それだったらエラーを返さずに foreach (0 .. 10) { open(IN,"$_.dat"); close(IN); } これだけでいくのと一緒・・・っていうかこうするべきなんでしょうか?
>>988 そもそも何がしたいのかに依る気がするんですが。
>>988 意味あるだろ? エラートラップをこまめにする癖をつけるのが悪いとは思わないし。
.datファイルが破損することだって絶対にないとはいえないし。
-eでいちいち存在をチェックしなくても、openで失敗するから問題ないっていうこと? openが存在しないっていう理由でのみ失敗するなら、if (-e ...は無意味なんだけど。
つまりファイルが無ければ処理しないでスルーして次のファイル・・・ ってことをしてるつもりなんですが、 やっぱり下のじゃ問題ありっぽいですねサンクスです
なぜオープンに失敗したらnextするとしないんだろう。
ume
梅
産め!
埋め
15350
1000 :
nobodyさん :03/03/27 02:07 ID:KPZ2y82F
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。