CGIだけど、なんか質問ある? Part 8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/09/22 23:15ID:???※CGIは特定の言語に依存するものではありません。
※Perlのコーディングに関する質問は専用スレがありますのでそちらでお願いします。
↓
Perl 初心者コーナー Part16
http://pc.2ch.net/test/read.cgi/php/1032070299/l50
過去ログ・関連スレッドは >>2
0449nobodyさん
02/10/23 21:10ID:???http://www.rescue.ne.jp/
0450nobodyさん
02/10/24 05:14ID:???・表示用PASSを管理するファイルを1つ用意する。
・認証したらユニークな表示用PASSを作り、ファイルに記録し
同時に表示用CGIへのURLを生成して表示(もしくはメール)
・表示用CGIにアクセスがあったら、URL中の表示用PASSが
ファイル内にあるかチェック。あればHTMLを表示して、同時に
PASSをファイルから削除。なければエラーを出す。
こんなんでどうだ?
どっちにしてもHTMLファイルを動的に生成する方法は難しい。
0451nobodyさん
02/10/24 09:07ID:rAm9yPDuレスありがとうございます。
なるほど、それなら有効アドレス期間が限定されますね。
いい事聞けた!!ありがとうございました!!
0452nobodyさん
02/10/24 10:16ID:Hwg4GAxyお答えください。
FrontPageを使って、フォームメールを作成しました。
これは、どのサーバーでも使用できるんですか。
よく、サーバーのサービスで無料配布とかって、あるんだけど、
私の作成したいのと、様式が全く違います。配布してもらったのを
編集して使用するのですか?
ちなみに、今、考えているサーバーはWEBARENAです。
0454nobodyさん
02/10/24 14:36ID:???http://web.arena.ne.jp/suite/support/manual/cgi-cgi/
↑に書いてあったな。1度確かめてみては?
0455nobodyさん
02/10/25 00:20ID:???ありますが、モジュールが使えないというのは @INC 内からそのモジュールを外せば
できると思いますが、特定の関数を使えないようにするというのはどうやってるの?
0456nobodyさん
02/10/25 00:49ID:???具体的にはどの関数?
まあ、perlのソースからいじればなんだって出来るけどさ。
0457455
02/10/25 00:53ID:???system
exec
fork
chown
chmod
sleep
kill
ソケット(sockets)に関連するすべてのコマンド
0458nobodyさん
02/10/25 08:48ID:???一般にCをコンパイルするときには、まずconfigureという作業をします。
その時にPerlでは、使える関数の選択が出来ます。
いらない関数をundefにしてmakeでコンパイルすればできあがりです。
0459nobodyさん
02/10/25 09:58ID:TPfaM/nfPOST送信するとCGIがtimeoutを出力します。
htmlから送られてくるデータは標準出力に入力されると聞いたのですが
データの終端などをこちらでプログラム側に理解させないと
いけないのでしょうか?
どなたか解決方法知っていたらよろしくお願いします
0460455
02/10/25 12:15ID:???なるほど、勉強になりました。
ちなみにWin98上でActivePerl使ってますが、Congif.pm というモジュールが
あって、その中で undef やらなんやらが定義されてるようなんですが、これは
なんなんでしょうか?
0461nobodyさん
02/10/25 13:50ID:???http://www.bekknet.ad.jp/~bero/docj/module_/02/Config.html
0464声域表現
02/10/25 17:10ID:fEObcI9/log.txtの中身はこんな感じです。
0001 東京 国語 【山田】
0002 千葉 数学 【佐藤】
0003 埼玉 物理 【金子】
番号、住所、科目、名前が入っています。
仕様は番号を打ち込むとその行にある名前が返ってきます。
例えば0001と番号を打ち込み送信すると次のページで
「山田」と出てくるのです。
自分がイメージしている方法ではlog.txtに名前を書き込むときに
【】の括弧で挟んで名前を書き込み、呼び出してくるときに
「"番号(0001)"の列の【】(【山田】)で囲まれた部分を持って来い」
と言う、命令をしたいのです。
こうする事により”名前”がどこにあっても番号と同じ列の【】でくくられた中を
参照するので楽だと思ったのです、感覚的にですが。
これって正規表現で可能なんですか?
【】を使わずに名前だけをもってくる方法があればそっちも知りたいです。
お願いします。
0465nobodyさん
02/10/25 18:01ID:???マルチうざ
0466373、374、377、383、393、419
02/10/25 22:35ID:???ご親切に有り難うございます。試してみて実験続けてどうしてもうまくいかなかったら
またここに書きますよ。
>419さん
有り難うございます。試してみます。JAVAスクリプトは一回試した事があってダメだったんです。
ご親切に返レスがあったのに、こちらの返信が遅くなってしまいまして申し訳ありません。
忙しくなってしまって見れなくなってしまっていました。
0467nobodyさん
02/10/25 23:14ID:sV5WLnj9文字コードって使えないのでしょうか?
0468467
02/10/25 23:40ID:???意味がわからない。
具体的に、何がしたいの?
0471nobodyさん
02/10/26 09:41ID:???ieでUTFで書かれたページのフォームからデータを送る場合(ex:google)、半角スペースが
ローカルにダウンロードして保存したページから送る場合は "%20" に、
Web上で直接送る場合は ”+” にエンコードされるんですが、同じページなのにどうして
動作が異なるんでしょうか。
0472nobodyさん
02/10/27 02:12ID:???UTF-8かどうかとは関係ない気もするが。
試してみたが常に+だったぞ。
0473age
02/10/28 12:48ID:???Perlでシンボリックリンクを生成しようと思ってるんですが
うまく行きません。
マスターフォルダ内のcom.cgiというファイルを
$folderというフォルダに移そうと思ってます。
symlink ("com.cgi","../$folder/com.cgi");
サーバエラーは出てませんが、リンクファイルが出来ないのです。
ちなみにサーバはSymlinkに対応しています。
原因分かる方いませんか?
0476473
02/10/28 14:58ID:???ディレクトリ書き込み権限は777になってます。
シンボリックリンクファイルの生成方法、誰かわかりませんか??
それからCGIで生成したディレクトリの削除も出来なくなってしまいました。
中に置いてあるファイルはunlinkで全て消すことが出来たんですが、
ディレクトリだけがどうしても残ってしまいます。
rmdir "$dir";
も書いてみましたがダメでした。
0477473
02/10/28 15:06ID:???シンボリックリンクが不可視ファイルで入っているらしいです。
ファイルが入ってるディレクトリをrmdirで消せるはず無いですよね、、
でもどうしてシンボリックリンクファイルがPerlで生成したのに
不可視ファイルで出来てしまうんでしょうか?
可視ファイルで生成する方法ありませんか?
0478nobodyさん
02/10/28 15:12ID:6oOjSB0Xできる方法ってありますか?
JavaScript使えればonClickとやらで出来るそうなのですがiモードでは
その方法は使えませんですた。。。
0480478
02/10/28 16:18ID:6oOjSB0X無理ですか・・・弱ったなあ・・・
実は今知り合いに頼まれて簡単な広告クリック集計システムを作ってるんですよ
(バリバリ初心者ですが^^;)
で、ある程度完成して携帯端末だけカウント取れるようにもなったんですが、
いわゆる不正クリックといわれる奴の対処法に悩んでます。
<IMG SRC="http://hoge.com/click.cgi?id=xxxx">
ってhtmlに埋め込まれちゃうとアクセスするだけでカウント
しちゃうので、困ってますた。
ふとクリックをPOSTで送れたら、うまく対処できるんじゃないかと
(ここらへん正直テキトーですが)思ってました。
う〜ん・・・どうするかな(@_@;)
0481nobodyさん
02/10/28 18:30ID:???他が一部だめなんでは?Jなんかは最近の機種だと出来たりするようだけど。
0482nobodyさん
02/10/28 20:48ID:YTyghVBKiモードはPOSTもOKだけど、フォーム以外はダメだな。
リンク先の広告ページに
<img src="hoge.cgi?id=xxxx&hoge=yyyy">
を入れといて、そこにアクセスがあったときにカウントするってのでどうよ。
定期的にyyyyの値を変更してサーバ側で保持してる値と一致しなければ
不正アクセスと見なすって感じで。
0483nobodyさん
02/10/28 22:38ID:ModqiGOk増やすような方法ってある???
0485483
02/10/28 23:16ID:ModqiGOkそいで、CGIでそのチャットのページをユーザーが自由に作れるようにするには
どうすればいいかなぁ???と。自由につくれるという事は、ページをそれに応じて増殖する必要があるわけだから。
1つ1つのチャットは変数かなんかで、それぞれの部屋の割り振りだできるようになればなぁって。
まだCGI始めたばかりだから、勉強も兼ねてこういうの作ってみたいと思いますた。
0487483
02/10/29 00:09ID:p38ubHh4ごめんなさい(泣 説明難しいなぁ。
http://www.daifukuya.com/chat/index.html
↑のサイトのチャットスクリプト使えば、チャット自体はCGIを使わなくてもOKでしょ^^
埋め込み式だから!これを埋め込んだHTMLファイルを増殖したいのれす。
このスクリプトのチャンネル部分を変数かなんかでそれぞれ変更すれば、同じファイルから違うページが作れるわけなんです。
あんまり分からないけど上の解説はperlでかくとこんなかんじ!
$roomは利用者がフォームで入力できるようなかんじ。
<PARAM name="channel" value="$room">
0488478
02/10/29 00:39ID:GLCucFJ8レス、サンクスです。
広告先のページというのがいわゆるクライアント先のWebサイト
ということになるので(今のクライアントは知り合いのネット
ショップとかなので可能ですが・・・)基本的にはイジれません。。。
大手広告代理店の広告みたいに1×1ピクセルの画像も同時に読み込ませて
アクセス数も取ってクリック率で見るしかないのかな〜。
今夜もまた眠れません。。。
0489nobodyさん
02/10/29 15:03ID:sSeR6CQ6これを防ぐにはどうしたらよいのでしょうか?
データ登録時にすべてEUCにして保存
表示時にSJISにしています。
0490nobodyさん
02/10/29 17:47ID:???0491nobodyさん
02/10/29 18:10ID:bxrzgdw8もしよろしければそれの具体的な方法をご教授いただけませんでしょうか?
ポインタでも結構です。
0493nobodyさん
02/10/29 23:27ID:???ちょっと感動。
(関係ないのでsage
0494あとちょっと...
02/10/30 01:25ID:9QvYHyfCENCTYPE="multipart/form-data"でバイナリモードで受信し、ファイルのWRITEまでは
できたのですが、アップロードできたファイルがZIP圧縮ファイルとして使えないのです。
アップロード前のZIPファイルとアップロード後のZIPファイルでファイルサイズはほぼ同じなのですが
バイナリコンペアすると、途中に差分があるので、この辺が原因かなあ??と思っているのですが・・・
今までに同じような経験で解決された方、教えてくださいm(__)m
0496nobodyさん
02/10/30 06:25ID:???いかにもCRLF問題っぽいな〜。
fopen(filename, "wb")ってやってる?
0498494
02/10/30 11:11ID:???実行してる一例ですが、
転送前:32916バイト
転送後:32656バイト(260バイト少ない)
です。差分箇所を調べたんですが法則性は見つからないです。
>>497さん
書き込みファイルのバイナリオープンはやってます。
CRLF問題ってなんでしょうか?
0500nobodyさん
02/10/30 16:01ID:???エージェントを見るとマックからだけで、Winからはこの現象は発生しません。
対処法などわかりましたらお願いします。
0502nobodyさん
02/11/02 10:38ID:8cCpuUIY書き出すためにオープンするファイルって別につくらないと駄目ですよね?
これをスクリプトで自動的に作るようにしたいのですが、何か方法はありますか?
手持ちの書籍にはそれに関することは書かれていませんでした。
0503nobodyさん
02/11/02 13:34ID:???0504nobodyさん
02/11/02 13:49ID:???open()の説明読み直したほうがいいぞ。
0505nobodyさん
02/11/02 15:58ID:8cCpuUIY>>504
ありがとうございます。open関数の説明を読んだのですが
touchに関しては触れられていませんでした。
ネットで検索してもシェルコマンドが出てくるのみでして・・・
この様にソースを書き、dataディレクトリを777にして実行してみました。
open(FH, "touch >data/test.hml") ;
print FH "<html><head><title>test</title></head><body>test</body></html>\n";
close(FH);
結果はファイルは作成されませんでした。
この場合は作成権限がないと言うことでしょうか?
0506nobodyさん
02/11/02 16:00ID:8cCpuUIY×open(FH, "touch >data/test.hml") ;
○open(FH, "touch >data/test.html") ;
0507nobodyさん
02/11/02 16:07ID:???0508nobodyさん
02/11/02 16:55ID:???touchはシェルコマンドだ。
open()はどこの説明読んだんだ?
0509nobodyさん
02/11/03 01:27ID:MCCBFgItシークレットでの会話は数字で内容が分かりません。
この数字を日本語にするのはどうすれば良いのでしょう。
0510nobodyさん
02/11/03 02:09ID:???0511nobodyさん
02/11/03 18:12ID:???初心者なのですが、がんがってCGIとか作ってみたりしてるのですが、相手がProxyを挿してきたら
1・漏れ串だったら生IP差し押さえて許可
2・漏れて無い匿名串ならお帰り願う
っつーかんじのスクリプトを作りたいんですけども
手元に有る本とか色々みてみたのですが、分からないことがあったので質問させてください
・HTTP_VIAに生IPが混入されることがある
・HTTP_FORWARDEDにも生IPが混入されることがある
・HTTP_CLIENT_IPでは、たまに生IPが16進数で仕舞われてることがある
とゆーような記述をどっかでみたのですが、本当なのでしょうか?
また、本当ならば対策を講じなければいけない頻度でそーゆーことがあるのでしょうか?
(ちなみにがんばって10コ串を拾ってきて診断サイトで見てきたのですがその中には該当例がありませんでした)
あと、"テメェみたいなトーシロにゃ思いつかないだろうがこんなとこにも注意しとけ"とか有りましたら御教授お願いします
0513nobodyさん
02/11/04 14:42ID:ULCphpkLcgiプログラムって、秀丸以外に書き込めないの???
ノートパッドじゃあかんの???
0514511
02/11/04 14:53ID:???回答どうもありがとうございます
ちょっとスクリプトに手を加えてファイルにそーゆーのを吐き出すよーにしてみました
しばらく様子をみようか…と思ったのですが致命的な欠陥が…(ぉ
>>513
別に平気なんじゃないかと思うのですがでければEUCコードとかも使えるエディタでやったほうがイイのではないかと思われ
うちはPerlEditorなるものを使っておりますがなんか挙動が変でつ、機能自体はあんまし問題は無いのでつが
色々と串について調べてたら行き着いたサイトなんですが
tp://www8.big.or.jp/~000/CyberSyndrome/evc.html
このサイトの診断を見て、プロクシ関連の情報、のとこの下に表示されてるのが
環境変数名なのかとフツーに思って書いていて、イザ動かしてみたら動かず…
試しに串さして環境変数を全部吐き出させてみたところ
これらの変数名が含まれてないことが発覚( ´Д⊂
どうすればいいのか、調べてみてもなんか全然引っかかってきません(汗
連続ですみませぬがどうか御教授ください…
0516nobodyさん
02/11/04 14:58ID:???されるの? ヘッダとしては、Client-IP: かな。見たことが
無いんだけど、こういうヘッダを付けるプロキシがあるんで
しょうか?
0518nobodyさん
02/11/04 15:35ID:???だからそんなの、サーバ管理者の気分次第でいくらでも変えられるんだってば。
HTTP_FUCK_YOUでもHTTP_2CH_NETでも好きにできるよ。
# 基本的にHTTPなんたらっていう環境変数は当てにならん。
0519うえの
02/11/04 22:11ID:tA0Z4q/O「10日でおぼえるPerl/CGI入門教室」という本で勉強しています。その本にはCDロムが
付録でついていて、その本に紹介されているプログラムが収録されています。私は本の
とうりプログラムを入力してプログラムを実行してみて、うまく行かなかった場合、付
録のCDロムのプログラムを1行ずつコピーして、自分で入力したプログラムにペースト
して実行してみて、入力ミスを探しています。だいたいの時はこれで、入力ミスを見つ
けてうまく行きます。ですが今まで2回ほど、すべての行をこのやり方でやっても、入
力ミスが見つからないことがありました(プログラムはうごかないままです)。一行ず
つコピー&ペーストしてうまく行かないのに、全ての行を一度にコピー&ペーストして
プログラムを実行してみると、うまく行きました。これは、いったいどういう事でしょ
うか?
すみません、何方かどうか宜しくお願いします。
0520☆脱
02/11/04 22:19ID:Xjm9EuR3http://www.i-chubu.ne.jp/~tomomi-h/marion/navi/navi.cgi?links=20311
0521511
02/11/04 22:45ID:???がんがって
>>518
そうは言っても日本人の朝食はパンかゴハンが主流であるわけで
それ以外の朝飯喰ってるヤツなんかあんましいないでしょ
つーわけで、何事にも一般論とゆーのがあるのでは…とゆー
>>519
気がつかないような些細なミスがあるに違いない
えと、あと>>514でした質問なのですが、
今現在Windows2K+ActivePerl5.6+AN-HTTPDとゆー環境でテストしてるのですが
なんか環境依存とゆーかたまにこの環境じゃ吐かない環境変数があるような(;´Д`)
つーわけで吊りつつもーちょっと自分で調べることにします…
0522あい
02/11/04 23:01ID:G/C4foN1何卒お願いします。
0523nobodyさん
02/11/04 23:06ID:???激しく板違い
0524nobodyさん
02/11/04 23:08ID:???マルチは氏ねよ。
0525nobodyさん
02/11/05 10:03ID:???の画像掲示板を設置して使っているのですが、タイトルなどに
半角カナを使われると文字化けしてしまいます。2chユーザーは
やはり半角カナ使用率が高いので、できれば半角カナも表示
できるようにしたいのですが、なにかうまい方法はあるのでしょうか?
0527525じゃないけど
02/11/05 18:39ID:5Ci8Aq1yあ、それでいいんですか。
EUC今まで使ったことがなかったんですが(^^;
なるほどー。
0528nobodyさん
02/11/06 17:50ID:???エラーにして、文字コードの変換は行わないね。
0529うえの
02/11/06 22:25ID:TwygVRhZ分かってきました。
0530nobodyさん
02/11/06 23:52ID:???0532nobodyさん
02/11/07 00:43ID:???0533nobodyさん
02/11/07 00:51ID:Gt0qGrXXSJIS
出力もSJISにしてるわ
0534nobodyさん
02/11/07 01:06ID:???0536age
02/11/07 07:52ID:???別にそんなこといわれてないよ。
半角カナで書き込むと化ける可能性がある、ってのならあるけど。
0538nobodyさん
02/11/07 11:13ID:Y8ygs/b/$testという変数に入ってるhtmlの<table>タグが邪魔なので消去しようと思い、
$test =~ s/<table width=100% border=0 cellspacing=0 cellpadding=15><tr><td>//;
$test =~ s/<\/td><\/tr><\/table>//;←スラッシュをエスケープしてるつもり
とやったけどダメでした。
この場合はどうすればよいのでしょうか?
よろしくお願いします、、、
0539nobodyさん
02/11/07 11:27ID:5h9enSGw<が<になってるとかじゃないよね。
0540nobodyさん
02/11/07 11:38ID:8nsGokx4急に
HTTP 405 - 許可されていないリソースです。
インターネット インフォメーション サービス
とでるようになりました。最近やったことといえば、SP3を
適用したことと、容量がいっぱいだったので、いらないフォルダ
(といっても公開してる部分の要らないIMAGEフォルダやHTML)
を削除したぐらいです。同サーバのASPは問題なく動いていますが、
別のCGIはアドレスを打つと「保存しますか?」とダイアログが出てきます
。原因および対処法わかりますか?
0541538
02/11/07 11:44ID:Y8ygs/b/というかめちゃ適当に書いたのにこれで合ってたとは、、、
ありがとうございました。
0542nobodyさん
02/11/07 14:15ID:X99Axcr/ユーザ設定用の部分でそのCGIのファイル名を入れさせるのってありますよね。
わざわざ $ENV{'SCRIPT_NAME'} 使わないのには何か理由があるんでしょうか。
0543nobodyさん
02/11/07 14:27ID:???$ENV{'SCRIPT_NAME'} が /hoge/index.cgi になるからとかじゃない?
0544nobodyさん
02/11/07 14:30ID:???まあ
$file = $ENV{SCRIPT_NAME};
$file =~s/.*\/([\/]+)$/$1/;
で良いんだけど、余計な処理するくらいなら指定させた方が良いだろ、とか。
0545nobodyさん
02/11/07 14:33ID:???コマンドプロンプトやらで動作チェックするとき$ENV{SCRIPT_NAME}が入らないからとか
0546nobodyさん
02/11/07 14:49ID:???sendmailでメールを送ります。
宛先が存在しないとfromに設定したアドレスに failure notice とかいう
メールが自動で来ますよね。
sendmailで送った直後にアドレスが存在しないかどうか、CGI側で判断するにはどうしたらいいんですか?
例えば、入力されたメールアドレスにただちにsendmailしてみて
正常に送られたらそのアドレスはテキストファイルに書き込むみたいなことをしたのです。
0547nobodyさん
02/11/07 15:16ID:???答え返ってきてるだろが
http://pc.2ch.net/test/read.cgi/php/1034583844/633
0548nobodyさん
02/11/07 15:27ID:???じゃぁ、よくある会員サイトで、
メールアドレスを間違えて入力して会員登録してしまった人が居るとしますよね。
で、定期的に会員にメール配信したりしますよね。
その度にメール配信の管理者へ「こんなメールアドレスないですよメール」が返ってくるって事ですよね?
最悪じゃないですか?
そんな会員管理者で勝手に削除すればいいと思われるかもしれませんが、
例えば会員数が膨大なサイトとかどうするんですか?
■ このスレッドは過去ログ倉庫に格納されています