1 :
名無しさん@お腹いっぱい。 :
01/09/18 18:17 ID:plR9HC2E
>>1 ご苦労様。
で、もしかして、文字コードはShift_JISだったりしますか?
3 :
名無しさん@お腹いっぱい。 :01/09/18 23:57 ID:ZqP657yQ
4 :
910 :01/09/19 00:55 ID:v6S8gYt2
旧スレ910 内容の要約「256バイト以上書き込めないワナ。」 ありがとうございました。無事解決しました。 お礼に掲示板をご披露させていただきたいけど、じつにヘンテツない 掲示板なんです…。 ほんとにどうもありがとう。
6 :
´_ゝ` オイラ親切さん :01/09/19 06:14 ID:Rf9.LNyU
8 :
´_ゝ` :01/09/19 08:33 ID:???
一応知らせるために、目に突きやすい所にレスしました。 ゴメンナサイ。
9 :
:01/09/20 13:32 ID:3iR0iWdA
part 3 より下がっているのであげ
プログラム中にたくさん存在する定数の共通変数を、 use constantを使用して書き直していました。 $KEY = "AppName"; を use constant KEY => "AppName"; とします。 ところが、別の場所では、この値をハッシュのキーにしていました。 ハッシュのキーに、定数を渡す方法がわかりません。 $hash{$KEY} を書き直す場合は、どのように書けばよいのでしょうか?
$hash{+KEY} = "hanya-n";
>JAPUさん なるほど、そうやるのですか。 どうもありがとうございます。
$hash{KEY()}の方が好き。なんとなく。
Ezwebページ用のcgiを作成しています。 その中で、 $cgi->redirect('url'); と、リダイレクトしている箇所があるのですが、up.browser3.3のように、とある機種で、 「Found redirection nut url not provided...」 と出てしまう事があります。 なにかご存知の方がおりましたら、お知恵をお貸しできませんでしょうか?
>>14 upbrowserはLocationヘッダを解釈できない気が。
16 :
名無しさん@お腹いっぱい。 :01/09/21 09:03 ID:nHXPpHxc
CGIの設置で困っている超初心者なんですが、
質問してよろしいでしょうか?(スレ違いでしたらごめんなさい)
過去ログ自動作成機能付きの掲示板を設置しているのですが、
新規に記事の書き込みや削除などを行うと、
「エラー Can't open logfile」
と表示され、過去ログが見れなくなってしまうのです。
過去ログの入っているディレクトリのパーミッションは
このCGIの指定通り「777」に設定していますが、
確認すると勝手に「666」に変更されている場合があります。
あらためて「777」に設定し直すと、読み込みが可能になる
のですが、新規に書き込みをすると同じエラーがでます。
これは何か設定に間違いがあるのでしょうか?
使っている掲示板は
http://sk.redbit.ne.jp/~tboard/cgiroom.html のtboard009というタイプです。
本当は作者の方に質問すればよいのでしょうが、
サポート掲示板が閉鎖されているので、こちらでお尋ねします。
よろしくおねがいします。
>>15 回答、ありがとうございます。
Location ヘッダが解釈できないって本当ですか!?
そうだったんですか。。。
うーん、どうしよう。。。
あと、調査してみたんですが、Up.Browser4.0 は cgi オブジェクトで、リダイレクトはしてくれます。
が、その処理を telnet 上で実行し、返されたヘッダ等を print 文でそのまま書くと、エラーになるんですよね。
不思議です。
18 :
16 :01/09/21 10:10 ID:???
すいません、解決しました。 CGIプログラムの中に過去ログファイルのパーミッションを自動的に 666にするという項目があって、そこをoffにするだけのことだった みたいです。
19 :
mono :01/09/23 06:49 ID:WDk3zB9E
質問です。 今共有サーバー運営しています。 telnet.cgiが共有サーバーに置かれていて、 このtelnetと同じ動作をするCGIの制御を殺したいのですが 何かいい方法はありませんか?
monoたん、もうちょっと詳しく書いた方が回答が得やすいですよ。 少なくとも私には何をやりたいのか全く読み取れませんでした。
>>20 >>19 シェルアクセスを禁止してるけど、
個別にtelnet.cgi(print `$cmd`;)置かれるから意味が無いってことでしょ。
FreeBSDでjail環境にすればいいんじゃないかな。
22 :
- :01/09/23 11:46 ID:my6tpUls
23 :
名無しさん@お腹いっぱい。 :01/09/23 23:29 ID:OUfu57AI
板違い、以上。
25 :
23 :01/09/23 23:39 ID:???
バナー消すのはやめましょう (w
27 :
定期上げ :01/09/26 07:24 ID:???
定期上げ
28 :
名無しさん@お腹いっぱい :01/09/27 14:52 ID:yTHL.Q7E
ファイルウプ機能を既存CGIに足してるんです。 ディレクトリは掘りますが、ファイルは空の残骸すら出来ません。 MIMEはバラせてるので、他のformデータを見る限りデータは取れています。 $upfile=ファイル名 $updata=ファイル if ($upfile ne "") { mkdir "$htmlpath/$board/file/${loge}_${sub}", 0755; $upfile_name = "$htmlpath/$board/file/${loge}_${sub}/${append_file}"; open(OUT,"> $upfile_name") || &error("ファイルのアップロードに失敗しました","lock"); binmode(OUT); print OUT $updata; close(OUT); chmod (0666,$upfile_name); } なぜでしょう? 教えてくださいませ
29 :
名無しさん@お腹いっぱい。 :01/09/27 15:11 ID:hez/Y7fQ
Jフォンから、写真添付メールを送ると、 そのまま掲示板に掲載することのできるCGIはありませんか?
>>28 umaskの設定のせいで、掘ったディレクトリが0755になってないのでは?
32 :
28 :01/09/28 00:18 ID:w43RMk9g
>>31 一応再確認しましたが、755になってます
正直open〜chmodの流れはサンプルのコピペなんで欠けが無いか
不安です。
ログファイルでも作るしかないですかね。
ディレクトリ掘れる所まで確認出来てるなら、もうちょっと細かく調べてみ ファイル作る位調べれば一杯出てくるから。 $upfile_name にdでもない値が入ってる辺りが有力 ${append_file}にダメ文字とかね 取り合えずファイル作ったり消したりして遊んでみれ
>>29 そういう掲示板を提供してるサービスがいくつかあるから
調べればいいよ。じゃーね。
自分で設置したいの? やめといたほうがいいって。
35 :
28 :01/09/28 02:15 ID:w43RMk9g
36 :
28 :01/09/28 02:18 ID:w43RMk9g
あ、あと1こ質問させておいて下さい。 updataの中身を失敗していた場合でもopen〜closeしたらガラは 残りますよね?
37 :
名無しさん@お腹いっぱい。 :01/09/28 03:17 ID:D2ua77aU
>>28 &error("ファイルのアップロードに失敗しました$!","lock");
$!を入れればエラーメッセージ表示できないだろうか
>>37 ついでに
&error("${upfile_name}のアップロードに失敗しました$!","lock");
と書けば、ファイル名も確認できるな
39 :
28 :01/09/28 17:00 ID:hZeMEb.6
できました。サンクスです ヤハーリupfile_nameがおかしかったです。 2chタイプ掲示板(megabbs)なので、管理がグチャグチャで難儀してましたが 無事動作しました。
どうでもいいけど、おんぷたんって可愛くねえ?
CGI-scriptで書き出したパスワードfileで、 暗号化されていますが、 それを単純に.htaccessを入れたフォルダの 認証に使えますか? 例えばkentさんのアクセス制限cgiで出来た パスワードfileを、そのcgiからの認証に 使わないで他のcgiや単に.htaccessを入れて制限した htmlのアクセス制限に使えるでしょうか?
42 :
名無しさん@お腹いっぱい。 :01/09/29 12:57 ID:9B0lqUxs
ジオゴングみたいなアンケートCGIってありますか? (ウェブゴング以外で)
キングコング
44 :
名無しさん@お腹いっぱい。 :01/09/29 15:09 ID:0rQ/9w3k
>>41 .htaccessのユーザ認証で使うパスワードファイルは、各行ごとに
ユーザ名:cryptされたパスワード
という形式なので、それと同じなら使えるです。
>例えばkentさんのアクセス制限cgiで出来た
>パスワードfile
これはどんなフォーマットになってるんですか?
45 :
名無しさん@お腹いっぱい。 :01/09/30 00:27 ID:eXFd9tX6
Apache + tomcat の仮想ホストで servletを実行しようとすると ダウンロードになってしまうのですが認識させ実行するには何か 設定がたりないのでしょうか・・
46 :
名無しさん@お腹いっぱい。 :01/09/30 13:44 ID:QtyCszVE
しょうもないシツモンですいません。 デコード部分でイチバン最適な書き方ってありますか? (オブジェクト指向スタイルでもok) if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{QUERY_STRING}; } foreach ( split(/&/, $buf) ) { my ($name, $value) = split(/=/, $_); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $form{$name} = $value; }
最適って何を? 使用メモリ減らしたいのか、速くしたいのか、 コードの文字数を減らしたいのか。 CGI.pmとか使いたくないなら、普通は上の定石でいいと思うが。 #ただしpackのとこは pack("H2",$1) のほうが効率いい。 そういや前に誰か、一度に$bufに読まないで1文字ずつ読んで デコードするという省メモリ方法を提案してたねえ。 このスレだったか、別スレだったか。。
48 :
名無しさん@お腹いっぱい。 :01/10/01 02:33 ID:4de04BqA
tracerouteとpingが実行できるCGIってどっかで配布されてないですかね? なかなかみつかりません。どなたか知りませんか。
>>46 いまは無きチャットスレの,252chatにこんなのがあった。
#POSTデータをデコードして%POSTに格納
sub decode_postdata {
my $i;
read(STDIN,my $buffer,$ENV{'CONTENT_LENGTH'});
%POST = map {
if($i++%2){
tr/+/ /;
s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2",$1)/eg; #thx2 349
s/&/&/g;
s/"/"/g;
s/</</g;
s/>/>/g;
tr/\x00-\x1f//d;
}
$_;
} split /[&=]/, $buffer;
}# thx2 320
>>48 10行なくてできるため自作したほうが早いと思われ。
つーかスレ違い。
板管やってます。 掲示板にアクセスされたときに、閲覧者のクッキーの情報の ログを採りたいのですが、良い物ないでしょうか。
52 :
名無しさん@お腹いっぱい。 :01/10/03 01:57 ID:52wgSISs
>>51 いちおう念のために聞いておきますけど、
自分のサイトで発行したクッキーだけでいいんですね?
いや以前どっかのスレで、訪問者のPCに入ってるクッキーを
セキュリティホール突いて全部取得したいとかいう
邪悪なやつがいたので。。。
53 :
FREAKES :01/10/03 02:23 ID:iOlT3Zgg
自宅サーバーを立てたのですが
CGIの掲示板をおいたところ自分で見ることは、できたのですが
友達に見てもらってもエラーがでてしまいます
パーミッションが違うと言われましたが
どうなんでしょう
WINだとパーミッションは、関係ないと思うのですが
ぜひ、お願いします
http://www.freakes.dyn.to/
54 :
名無しさん@お腹いっぱい。 :01/10/03 02:34 ID:rmSH5DLs
55 :
FREAKES :01/10/03 02:37 ID:iOlT3Zgg
すいません マジで困っています 教えていただけませんか?
俺のサーバーにこんなの(aska.cgi)入ってね-もん
>>55 マルチポストやめれ
127.0.0.1で見れるわけがない
優しいなぁ、
>>57 は。ちゃんと答えを教えてあげてるじゃん。
俺だったら氏ねの一言で終わりだもんな。
59 :
名無しさん@お腹いっぱい。 :01/10/04 14:04 ID:nOAoqb9A
画像を返すCGIを作っているのですが、このとき、画像を2つ返すことは できるでしょうか(ウィンドウが2つ開く感じ)。
60 :
名無しさん@お腹いっぱい。 :01/10/04 14:38 ID:nOAoqb9A
連続質問ですみません。フォームに複数のsubmitボタンをつけて それぞれ違うCGIを呼び出すことは可能でしょうか。 submitにname=を付けて区別するというところまでは わかったのですが、actionでどう指定したら良いかが わからないのです。
#!/usr/bin/perl $name=<STDIN>; if($name eq "60"){ print "逝って良し"; }
62 :
名無しさん@お腹いっぱい。 :01/10/04 14:50 ID:ZexXU3iQ
<?php $name = '61'; if($name == 61){ echo "61=ドキュソ"; } ?>
前の行で $name='61' としておいて if ($name == 61) も
糞も無いと思うのだが。
>>60 submit で actionするCGI を変更するには javascriptを使う必要があります。
CGIでは出来ません。
Web製作板へのJavaScript質問スレッドへどうぞ。
# cgiでどのsubmitボタンが押されたか判別してredirectする方法も有るけど。
64 :
名無しさん@お腹いっぱい。 :01/10/04 15:33 ID:nOAoqb9A
>>63 ありがとうございます。
Web制作板へ逝ってきます。
65 :
51 :01/10/04 22:02 ID:???
>>52 荒らしがきてるんで、そいつのクッキー全部覗きたかったんだけど、
後で調べてみたら、それは簡単に出来そうにないんですね。
66 :
名無しさん@お腹いっぱい。 :01/10/05 13:38 ID:uprQiXAY
フリーのCGIをちょっと加工するくらいしかできない厨房(年食ってるけど)です。 質問させてください。 1つの掲示板で、多言語OKにするには、どうしたら良いのでしょう? 現在、アメリカの無料ゲストブックを借りて使っていますが、自前のものに 替えたくて、いろいろと探しています。 日本のCGIだと、jcode.plが必須で、それだと中国語等はどうもうまく行かない ような気がします。 日本のCGIから日本語機能(?)を取り除く方法ってありますか?
67 :
名無しさん@お腹いっぱい。 :01/10/05 16:44 ID:xs79T5cc
>>66 日本語で書き込まれても中国語で書き込まれても、
文字コードをUTF-8に統一して保存および表示すれば、
混在可能だと思う。
特定の文字コードをUTF-8にコンバートするのは難しくない。
今のunixにはlibiconvという文字コード変換ライブラリや、
それを使ったiconvコマンドがあるし。
問題は書き込まれた文字コードの判定だ。
日本語だけという条件であっても、自動判別させようと思うと
Shjift_JISとEUC_JPを間違えることがあるぐらいだから、
中国語が入ったらさらに混乱必至ではないか(想像ですけどね)。
だったらブラウザから書き込むときに、もう最初っからUTF-8で
送信させればいいわけだ。
それは具体的にどうするか、ってのは正直スマンが知りません。
誰かフォロー頼む。
>>66 >日本のCGIから日本語機能(?)を取り除く方法ってありますか?
ありますよ。でもスクリプト見ないと何も言えない。
69 :
66 :01/10/05 18:26 ID:IlecsqKU
67さん、68さん、ありがとうございます。
現在使っているフリーのゲストブックはアメリカものなので、間違いなく
jcode.plは無関係で、英語はもちろん、中国語Big5,中国語GBでも
書込みOKです。(ブラウザで文字コードを変えればきちんとそれぞれ
読めます。当然、同時に全てをきちんと表示することは出来ませんが、
読めれば良いので問題ありません。)
ですから、英語のゲストブックCGIを使えば良いのでしょうが、ただでさえ
CGI素人なのに英語では更に厳しいので、日本のCGIを使いたいと思った
わけです。
>68さん
いただいて来たスクリプトをテキストでアップしてみました。
↓
ttp://members.tripod.co.jp/k_napper/nyaponika.txt これのどこを削ったりアレンジしたりすれば良いのか、ちょっと
わからないのです。
ご教授いただけると、とっても助かります。
71 :
名無しさん@お腹いっぱい。 :01/10/06 02:00 ID:MEgHrhMk
FORMのtextareaのデータを、改行毎に分割したい場合、 split("\n", $data) でいいのでしょうか? 改行コードってどんな端末からでも\n?
勿論違うよ、どんなのかは調べてもらうとして 普通は $data =~ s/\r\n|\r/\n/g; こんなのが前に入る
73 :
名無しさん@お腹いっぱい。 :01/10/06 02:41 ID:MEgHrhMk
質問させて下さい。 CGIでテキストデータを生成して、クライアント側に 保存させるにはどうやったら良いのでしょうか? テキストデータには、text/plainなどのヘッダを 付けたくないのです。
保存ってクライアントを操作するって事だったら無理だよ? もろにCGIの仕様に引っ掛かるもん 単にクライアントにコピペで保存してもらうだけなら テキストエリアに吐き出してREADONLYとでもしとけば良いけど。。 ヤバ文字が含まれそうだったらちゃんとエスケープしてね。 無料サーバのファイルマネージャみたいな感じで
76 :
名無しさん@お腹いっぱい。 :01/10/06 03:34 ID:KSO8kPZM
>>76 適当にまとめると,
クッキーで連続投稿を防止しようとしてるが,IEとネスケで動作が違う。実装の違いを教えれ。
ってことかな?
クッキーは勝手にネスケが開発してたので
仕様はnetscapeのサイトにあったはず。
W3Cの規格にはまだなってない。
ブラウザごとの実装の違いは知らない。
クッキーは拒否されることもあるので,
連続投稿規制はサーバーにIPとかを保存するようにするのが一般的。
78 :
JAPU :01/10/06 04:16 ID:???
>>75 ありがとうございます。
えっと、テキストデータを生成して、保存させるための
ダイアログを出したいという感じです(あとはクライアントに
おまかせ)。
できればこのとき、デフォルトのファイル名もこちらで
準備したいです。
>>79 ヘッダを、
Content-disposition: attachment; filename="hoge.txt"
Content-type: application/octet-stream
にしたときは、ブラウザは保存ダイアログを出すべきだ、
…とRFC2616の19.5.1節に書いてあるよ。
ただし強い勧告(SHOULD〜)じゃなくて弱気な勧め(should〜)だし、
すべてのブラウザがこのRFCに準拠してるかどうか、非常に疑わしい。。。
昔のIEなんかだと、どんなHTTPヘッダを付けても
中身がテキストっぽければ画面に表示しちゃったからなあ。
>>79 そう言う意味だったのかー、ゴメソ
昔テキストのDLカウンター付けたくてちょっとやった事があったな
僕も
>>80 氏に激しく同意です。mustにして欲しい所だ
application/zipとか吐けばかなりの確立でDL窓出せるんだけどねー
ただCGI通したいだけならLocationで飛ばすとか
追 application/zip吐くとファイル名が.cgiになるので凄くダサいです 今のブラウザの実装は知らないけど
ありがとうございます!
>>80 ヘッダに書いて、あとはクライアント次第ということで
行こうと思います。助かりました。
>昔のIEなんかだと、どんなHTTPヘッダを付けても 今でもそう、つーかバイナリ判別の精度が上がってるような (-_-..
85 :
名無しさん@お腹いっぱい。 :01/10/06 11:21 ID:MEgHrhMk
テキストの場合どうするんだろ? text/plainだとブラウザで表示されちゃう率が高いから application/octet-streamにするって感じ? シフトJISそのまんま流すからapplication/octet-stream? …ていうか漏れわけわかんないこと書いてる? ヘッダむずかしー
>>80 テキストファイルなのにapplication/octet-stream 吐き出すのは利用者にとっては迷惑かも知れない。
> 昔のIEなんかだと、どんなHTTPヘッダを付けても
> 中身がテキストっぽければ画面に表示しちゃったからなあ。
今でも中身をみて判断するというダサい実装になっている。
text/plain 吐き出しても HTML っぽければそう解釈するし。
>>82 moe.cgi/nae.zip のようにアクセスすると nae.zip というファイル名で保存できるかもしれない。
87 :
80 :01/10/06 12:13 ID:780019M6
>85-86 あー、そうか。テキストだよな。 >テキストファイルなのにapplication/octet-stream 吐き出すのは なはは。たしかに。 で、UserAgentを見てWin系なら改行コードを"\r\n"にするとか 小細工をはじめると、泥沼にズブズブ入っていくんですな、きっと。 >text/plain 吐き出しても HTML っぽければそう解釈するし。 がーん。ほんとだ。ダセー>IE5
88 :
名無しさん@お腹いっぱい。 :01/10/06 12:24 ID:780019M6
>>84 >今でもそう、つーかバイナリ判別の精度が上がってるような (-_-..
なんか最悪ですな。ヘッダを信用しないのはなぜだ?>MS
サーバ管理者にはmime.typesを管理する能力がないとでも?
あ、それはApacheの話か。。。IISはその辺どーなってんの?
89 :
76 :01/10/06 13:59 ID:???
>>77-78 ありがとうございます。
確かにCookie拒否されたらダメでしたね…。
そこまで考えてませんでした。
IPアドレスなど使って作ってみようと思います。
実装の違いについては、
$ENV{'HTTP_COOKIE'}を両者に吐かせてみても違っているので
もうちょっと調べてみたいと思います。
90 :
名無しさん@お腹いっぱい。 :01/10/07 13:18 ID:n4Hjc.oI
掲示板だけを運営していたのですが閉鎖する事になり その事を来て頂いていた皆さんにお知らせしたいのです。 閉鎖にいたっての報告などはHTMLに書きWWWにアップして いるのですが、そのURLに自動的にジャンプするには どういったcgiを書けばよいのでしょうか? 掲示板にURLを書けば良い事なのですが掲示板はもう削除して しまって無いので自動的にそのURLにジャンプするcgiを教えて下さい。
92 :
名無しさん@お腹いっぱい。 :01/10/07 17:10 ID:n4Hjc.oI
93 :
名無しさん@お腹いっぱい。 :01/10/07 20:05 ID:TC4eI282
Cobalt (多分 Qube3 という機種) で Perl の CGI を動かそ
うとしたんですが、トラブってしまいました。
で、調べてみたら環境変数 PATH_INFO の値が変です。
http://hoge.fuge.co.jp/bbs/bbs.cgi がスクリプトへの URL だとすると、
PATH_INFO=/bbs/bbs.cgi になっています。この値が設定さ
れていると CGI.pm の url(-relative=>1) が undef になり、
また url(-absolute=>1) は空文字列になっちゃうようです。
とりあえず new CGI をする前に $ENV{PATH_INFO} = '' と
して逃げましたが、同様の問題を経験された人はいますか?
あるいは、このサーバの設定が悪かっただけでしょうか…
それ俺も喰らった事あるなぁ 多分鯖はズィタミだったと思う 丁度今の2chのread.cgiみたいにしてたんで困ったよ 結局正規表現でゴミ取って、使ってたけど鬱陶しいからQUERY使うようにしたよ(´Д`;) ヘナヘナ 原因不明、多分設定がタコだと思ったんだけど 俺も知り鯛あげ!
下げちゃった・・・
PATH_INFOが変てーと、原因はなんでしょうね。 触ったことないけどCGIWrapの問題? 古いApacheだとhttpd.confのAlias設定でも問題出るらしい?
97 :
93 :01/10/08 16:07 ID:???
CGIWrap や cobalt-users という ML のアーカイブ を検索すると、同じような問題が出ていますね。原 因はまだよく分かりませんが。
>>90 つーか自動的にジャンプさせるぐらい
METAタグでできるだろ。
>>98 でもMETAタグを含むHTMLデータをbbs.cgiに吐かせるぐらいなら
Locationでいいじゃん?
>>98 分かりきった事得意げに書くなよ (´Д`;) アウアウー
101 :
93 :01/10/08 16:50 ID:???
問題が起きた CGI.pm のバージョンは 2.56 でした。 もっと新しいバージョンなら url() のコードも変わっ ているので、問題無いかも。
>>101 今CGI.pm ver2.752のソースみたら、PATH_INFOを含む部分の
コードが何行かコメントアウトされてますね(笑
そしてCGI.pmのurl()が正しく動作するようになっても
PATH_INFO自体を使いたいという
>>94 の願いが
天に届くことはなかった。。。ナムナム
103 :
93 :01/10/08 17:31 ID:???
I am onanism boy!! ore no eigoha metyakutya daze!!!!!
105 :
名無しさん@お腹いっぱい。 :01/10/08 19:45 ID:x261FvpI
現在アンケートページを作ってます。 必須項目が入力されていない場合はエラー用のページに飛ばして、そこに戻る ボタン(単なるリンク)を用意しています。 その戻るボタンをクリックして最初のアンケートページに戻る際、各質問項目に 前回の値(ユーザーがエラーページに飛ばされる前に入れていた値)をあらかじめ 入れておきたいのですが、どうやれば出来るのか上手く出来るのかが分かりません。 フォームデータはCGI_Lite.pmを使ってます。ヒントでも良いので、よろしくお願いします
>>105 『ブラウザの「戻る」ボタンを押して戻ってください』
とエラーページに書いておく。カコワルイ?
解決になっていないような気もする。
>105 foreach(keys %FORM){ print qq(<input type=hidden name="$_" value="$FORM{"$_"}">\n); } を、戻るボタンのところに埋め込めば?
hiddenで渡すか print<<"_END_"; ブラウザのバックボタンをオシテクレ w _END_
109 :
名無しさん@お腹いっぱい。 :01/10/08 20:26 ID:WEFUx3wE
生IPを抜くCGIありませんか?
アンケートを受け付けるCGIが直接再入力用のフォームを出力するとかが 一番いいような気がしますが。 どうしてもHTMLで書かれたアンケート入力ページに戻したいという動機があるなら JavaScript+Cookieとか?
>>105 「戻らない」っていう方法もあるかも。不備の
ある部分だけのフォームを表示し続ける。OK な
項目は hidden で渡して逝く。
Yahoo Japan ID の登録がそんな感じだったと
思う。
手間がかかる割りに役に立たないような。
CGI.pm VERSION3 ってどなたか使った事ありますか? とりあえず読み込み・初期化(do FILE)だけを比べてみると5倍ほど早いようですが。
あーでもまだバグだらけみたいですね。 #line 170 CGI/Object/Html.pm にバグみっけ。 [CGI.pm version3.01]
115 :
名無しさん :01/10/11 22:51 ID:OddRAZgw
perl+cgiで掲示板旁から始めようと思っています。 そこで、とりあえず、ソースをつくって、 コンパイルしようとしたら、 #perl bbs2.cgi (offline mode: enter name=value pairs on standard input) というエラー??がでます。 意味が分かりません。 さらに、僕は、このcgiで use DBI; use strict; use CGI; use Date::Calc qw(Today Add_Delta_Days); というふうに書いているのですが、 DBIとDate::CalcはCPANからインストールしたのですが、 CGIとstrictそのものは、CPANにおいてなかったませんでした。 この2つのモジュールは最初から入っていますよね?? ちなみにOSはFreeBSDでapacheを使ってます。
116 :
名無しさん :01/10/11 22:52 ID:OddRAZgw
ちなみにapacheでも internal server errorがでます。 昔は、動いたんですが。
117 :
名無しさん@お腹いっぱい。 :01/10/11 23:55 ID:aIf8/row
>>115 それ、なぜかCGI.pmがフルデバッグモードで動いてるみたいです。
use CGI qw(-no_debug ・・・);
と、-no_debugを指定すると消えませんか。
くわしくはperldoc CGIで"DEBUGGING"の説明を見てください。
118 :
115 :01/10/12 00:01 ID:2WUE5QsI
>>117 ほんとだ!
できました。こういう事がおきると初心者には対処できないです。
CGI、別に何もいじってないんですが。。。
"DEBUGGING"また読んでおきます。
うちでも昔おんなじことがおきたよ。 バージョンによっては$CGI::DEBUGの初期値が2に設定されてるのでは ないかと推測。本来は1なんですよね? ていうか今↓のスクリプトを実行したらDEBUG=1になってた。 use CGI; print "VERSION : $CGI::VERSION\n"; print "DEBUG : $CGI::DEBUG\n"; 実行結果 VERSION : 2.752 DEBUG : 1
120 :
名無しさん@お腹いっぱい。 :01/10/12 15:23 ID:2WUE5QsI
初心者ですが、頑張って掲示板を完成させてみました。 しかし、以下のソースだと、ページをリロードするたびに、 同じ内容の投稿がなされてしまいます。その改善法を御教示お願いします。
121 :
part1 :01/10/12 15:24 ID:2WUE5QsI
#!/usr/bin/perl use DBI; use strict; use CGI qw(-no_debug); use Date::Calc qw(Today Add_Delta_Days); #パスの設定 my $nkf = '/usr/local/bin/nkf'; #オブジェクトの生成 my $q = new CGI; my $msg = $q->param('msg'); #出力文字コードの設定 open HTML, "|$nkf -e"; select(HTML); $|=1;
122 :
part1 :01/10/12 15:25 ID:2WUE5QsI
#!/usr/bin/perl use DBI; use strict; use CGI qw(-no_debug); use Date::Calc qw(Today Add_Delta_Days); #パスの設定 my $nkf = '/usr/local/bin/nkf';
123 :
part2 :01/10/12 15:25 ID:2WUE5QsI
#html表示 print $q->header(-expire=>'now'); print $q->start_html(-title=>'bbs',-bgcolor=>'#DDDDDD'); print "掲示版"; print $q->hr; print $q->start_form(-method=>'POST',-action=>'./bbs2.cgi'); print $q->textarea(-name=>'msg', -rows=>3, -column=>16); print "<br>\n"; print $q->submit(-name=>'submit',-value=>'送信'); print $q->end_form; if ($msg ne '' ){ open(OUT,">> ./bbs2.dat"); print OUT "$msg<HR>\n"; close(OUT); }
124 :
part3 :01/10/12 15:26 ID:2WUE5QsI
# データファイル内容を表示 open(IN,"./bbs2.dat"); print <IN>; close(IN); print $q->end_html; close(HTML);
125 :
名無しさん@お腹いっぱい。 :01/10/12 15:27 ID:2WUE5QsI
121 123 124 の順番のソースファイルです。 ソースそのままはれるかと思ったら "改行多すぎます" といわれたので、分割しました。 掲示板ぐちゃぐちゃにしてごめんなさい
投稿した後にリロードするとそうなるのはブラウザの仕様ですの POSTに値がセットされた状態でリロードされるから いやならLocation: ./script.cgi\n\n か METAでほげってセッションを分けるですの
多重投稿を防ぐ方法のメジャーなものには ・直前のデータを読み込んで、内容を比較する ・ワンクッション置く(「無事投稿されました」のようなページを置く) ・最後にLocationで飛ばす があります。 リロードで送信されるのを避けるにはLocationが適当でしょう。
128 :
名無しさん@お腹いっぱい。 :01/10/12 15:42 ID:AsTpdvqA
129 :
120 :01/10/12 16:15 ID:2WUE5QsI
良く理解できました。 ありがとうございます。 頑張ります。
130 :
名無しさん@お腹いっぱい。 :01/10/12 21:04 ID:YvyJWcYo
AnHttpd使ってローカル環境でCGIのチェックをしているのですが
cookieが上手くブラウザに格納されてくれません。
ひょっとして
http://localhost/ だとだめなんでしょうか?
あと path、domeinって省略してもブラウザで勝手に解釈
してくれるんでしたっけ?
131 :
130 :01/10/12 21:10 ID:???
>>130 自己レスです。
cookie吐き出すだけのやつ試してみたらちゃんとlocalhostでも
登録されていました。どうやら他に原因があるようです。
どうもすいませんでした。
>あと path、domeinって省略してもブラウザで勝手に解釈 >してくれるんでしたっけ? OK、でもDOTが2つ無いとダメだよ
133 :
130 :01/10/13 02:09 ID:???
cookie登録されない理由わかりました。
HTTP::C\ookiesの scalar( $cookie_ja->as_string );
で取り出した expires の書式が
Mon, 31, Dec 2001 20:00:00 GMT
じゃなくて
2001-12-31 22:00:00Z
になっていたのが原因でした(なぜにこの書式?)。
>>132 DOT2つというのはどういうことでしょう?
DOT2つってこれじゃなくて? -> .
うわヤな言い方だ s/僕も/僕は/ (-_-)
138 :
134 :01/10/13 02:48 ID:Deyy6KfQ
139 :
名無しさん@お腹いっぱい。 :01/10/13 03:34 ID:qXCBod/U
またまたcookieについてです。今作っているのが
ローカルマシン
↓
CGI( LWP::UserAgent、
HTTP::Cookies使用 )
↓
目的のサイト
という中継ツールなのですが、「目的のサイト」のcookieを
ローカルマシンに保存することはできました。
しかしそれを「目的のサイト」側から読ませることができません。
具体的には以下のようにやっています。
----------------------------------
$ua = LWP::UserAgent->new;
$ck =
HTTP::Cookies- >new;
$hd =
HTTP::Headers- >new;
$req=
HTTP::Request- >new( 'GET', '
http://www.hoehoe.com/ ' );
### ブラウザの cookie情報をドメインを書き換えて登録
foreach $ckey ( keys %COOKIES ){
$ck->set_cookie( , $key, $COOKIES{$key}, '/', '.hoehoe.com', , , ,60*60*24*365*10 );
}
$ck->add_cookie_header( $req );
$ua->cookie_jar( $ck );
$res = $ua->request( $req );
$ck->extract_cookies( $res );
----------------------------------
ドメイン名を書き換えて
HTTP::UserAgent に登録って出来るのでしょうか?
140 :
名無しさん@お腹いっぱい。 :01/10/13 06:40 ID:bzY0j0uY
すみません。 カウンターなんですけど、 ソースにはちゃんと出てるのに 画像が表示されないのはなぜですか? <img src="cgi-bin4/ecount.cgi?6"width="6" height="13"> こんな感じで設置してるのですけど。
>140 まず基本的なこととして、カウンターのURLを直接入力してちゃんと表示されるか確認してみよう。 それで表示されたら単なるURLの指定ミス。 表示されなかったらスクリプトの問題。 スクリプトのソースを公開したまへ。
142 :
140 :01/10/13 08:49 ID:bzY0j0uY
>>141 わざわざ有難う御座いますです。
ログファイルのパス:OK!
ログファイルのパーミッション:OK!
画像:./gif/0.gif → OK!
画像:./gif/1.gif → OK!
画像:./gif/2.gif → OK!
画像:./gif/3.gif → OK!
画像:./gif/4.gif → OK!
画像:./gif/5.gif → OK!
画像:./gif/6.gif → OK!
画像:./gif/7.gif → OK!
画像:./gif/8.gif → OK!
画像:./gif/9.gif → OK!
ロック形式:symlink
ロックディレクトリのパス:OK!
ロックディレクトリのパーミッション:OK!
ちゃんとOKでてるのになぜか画像表示されない・・・
>142 そうじゃなくて。 http;//xxxxxxxx.com/cgi-bin4/ecount.cgi?6 でカウンターは表示されるの?
144 :
140 :01/10/13 09:01 ID:bzY0j0uY
>144 じゃあ、ソース公開きぼん。 ソースを見ないと画像の表示されない理由はわからないよ。 Content-typeが間違ってるとかじゃないの?
146 :
140 :01/10/13 09:23 ID:bzY0j0uY
ttp://www.kent-web.com/count/ecount.html? kentのecountなんですけど。。
open(IMG,"$imgdir$view$tail") || &error;
print "Content-type: image\/$mime\n\n";
binmode(IMG);
binmode(STDOUT);
print <IMG>;
close(IMG);
こんな感じなんですが間違っているのかどうか
さっぱり分かりませんです。
http;//xxxxxxxx.com/cgi-bin4/ecount.cgi?6 で画像が表示されるなら <img src="cgi-bin4/ecount.cgi?6"width="6" height="13"> が間違ってるんだろ。
>147 そうだ。 ちょっと眠かったからボケてしまった。 スマソ。>140
149 :
:01/10/13 11:50 ID:???
150 :
139 :01/10/13 14:33 ID:qXCBod/U
>>139 $ck->set_cookie( , $key, $COOKIES{$key}, '/', '.hoehoe.com', , , ,60*60*24*365*10 );
↑でドメイン、パスを書き換えて UserAgentに cookieを登録することは
出来ましたが、目的のサーバーからは見えないようです。
HTTP::UserAgentって自分の $ENV{'HTTP_COOKIE'} を持つことは
できないのですか?
Cで全ての環境変数を表示させることはできますか? getenv()をどう使ったら全部表示させられるか教えてください。
152 :
名無しさん@お腹いっぱい。 :01/10/13 15:01 ID:c5AddB8U
>>151 int main(int argc, char **argv, char **envp) {以下略
あとはenvpから取得。つーのを愛用してます。
>>151 main() の第3引数を使え。
getenv() は特定の環境変数だけだろ。
ネットに存在するアーカイブ内のファイルが抽出できるCGIってないですかね? melt.cgi/www.hoge.net/hoge.lzh/readme.htm とするとhoge.lzh内のreadme.htmが表示できるみたいな奴。
>>154 このスレに書いたということは、そのやり方を教えてくれという事か?
とりあえずLWPでアーカイブを取ってきて
適当なモジュールなり外部プログラムなりで展開して
目的の文書を探す、という感じだと思うが。
まぁ非効率的だな。
サーバ上のアーカイブと直にデータがやり取りできる
プロトコルって、あったら便利かもなー。
そういうのがあれば、
>>154 みたいなCGIも効率的に書けそう。
157 :
151 :01/10/13 17:53 ID:???
>>152-153 ありがとうございます。
main関数って引数があったんですね(^_^;てっきりvoid型かと・・・・
extern char **environ; ってのもあるな。 何種類かのUNIXで調べたけど、全部であったからそれなりに移植性はありそう。 (FreeBSD, OSF1, Linux)
>>158 environてのはANSIの規格にないんでしたっけ?
main()の第3引数はたしか(char**)型で環境変数が入るって
規定されてようなおぼろげな記憶。。。
161 :
名無しさん@お腹いっぱい。 :01/10/13 21:34 ID:nMwqY5mo
スクロールバーの色を変えるのってどうやるの?
163 :
名無しさん@お腹いっぱい。 :01/10/13 23:26 ID:AeCpTnbA
アンケートを取るCGIを作っています。 現在のデータ形式は↓こんなのです。(本当はタブ区切りです) めろん<>山田 めろん<>田中 めろん<>鈴木 すいか<>山田 すいか<>鈴木 いちご<>田中 りんご<>鈴木 ぶどう<>鈴木 ぶどう<>竹下 ぱいん<>山田 このままだと見づらいので、 3<>めろん<>山田<>田中<>鈴木 2<>すいか<>山田<>鈴木 2<>ぶどう<>鈴木<>竹下 1<>いちご<>田中 1<>ぱいん<>山田 1<>りんご<>鈴木 こんな風にデータをコンバートして重複部分をまとめたいんです。 ソートを使えばいいのかなと思ったんですが、アイデアが浮かびません。。 「こうすりゃいいだろゴルァ」という方法があったらご教授下さい。
めろん<>山田 めろん<>田中 めろん<>鈴木 すいか<>山田 すいか<>鈴木 いちご<>田中 りんご<>鈴木 ぶどう<>鈴木 ぶどう<>竹下 ぱいん<>山田 ↑これが@dataに入っているとして foreach(@data){ $_ =~ s/\n//; @mini = split(/<>/); $count{"$mini[0]"} ++; $touhyou{"$mini[0]"} .= "<>$mini[1]"; } foreach(sort{$count{"$a"} => $count{"$b"}} keys %count){ push(@save_data,qq($count{"$_"}<>$_$touhyou{"$_"}\n); } もっと効率いい方法はあると思う・・・。
#!/usr/bin/perl use constant SEPARATE => qq(<>); use strict; my %data = (); while(<DATA>){ chomp; my($hoge, $fuga) = split SEPARATE; push @{$data{$hoge}}, $fuga; } # 試しに出力 foreach ( sort{ @{$data{$b} } <=> @{$data{$a}} } keys %data ){ print "$_=>", join(",", @{$data{$_}}), "\n"; } __DATA__ めろん<>山田 めろん<>田中 めろん<>鈴木 すいか<>山田 すいか<>鈴木 いちご<>田中 りんご<>鈴木 ぶどう<>鈴木 ぶどう<>竹下 ぱいん<>山田
166 :
163 :01/10/14 00:39 ID:???
>>164-165 上手くいきました!
これを参考にして、自分なりに改良していきたいと思います。
ありがとうございました。
@data = qw[ めろん<>山田 めろん<>田中 めろん<>鈴木 すいか<>山田 すいか<>鈴木 いちご<>田中 りんご<>鈴木 ぶどう<>鈴木 ぶどう<>竹下 ぱいん<>山田 ]; # 作業 foreach(@data) { # 集計 next if /^#/; ($item,$name) = split /<>/; $count{$item}[0]++; push(@{$count{$item}}, $name); } @save_data = # 配列に保存 map { join('<>', @{$count{$_}})."\n" } sort { $count{$b}[0] <=> $count{$a}[0] } keys %count; # テスト出力 foreach( @save_data ) { print; } __END__
168 :
167 :01/10/14 00:43 ID:???
あら,解決してたか。
169 :
166 :01/10/14 00:59 ID:l01Ytp8Q
WinでもUnixでもいいんですが, ブラウザからでたGETやらPUTやらのメッセージを 生で見たいんですけど,いいツールありませんか?
ネタ? print $ENV{QUERY_STRING}; GET print $OUT = <STDIN>; POST PUTと言うMethodは知らない、勘違いしてたらスマソ
HTTPヘッダが見たいとか・・・。
>>171 リクエストヘッダをそのまま返すようなHTTPDを書くとか。
スマートな方法は知らん。
telnet
Etherealとかでパケットキャプチャする
177 :
171 :01/10/15 00:51 ID:???
180 :
171 :01/10/15 01:44 ID:???
(; ・∀・)ドヒャー 知らなかったよぅ さんくす>>電動ナナシさん つーかGET,HEAD,POST,PUT...等って、、まだ有るノカー
ここってみょーに素直な人多いな 何か他の(某保険板)板とかから来たら2chじゃ無いみたいで気持ち悪いよ w もっと罵りあえや! (ウソ) でもちょっとびっくりしたよ
183 :
182 :01/10/15 02:54 ID:???
なんかおれ変な日本語。いいさ、別に。
ども,私はPUTとPOST間違ってました(w 結局,横取りして,ブラウザからのデータを見てみたいってのが要求で, あんまりよく見てないけど,Proxomitron というのができそうです. # でも,プロキシ使ってるなら,unix系のプロキシサーバでもできるのかな?
185 :
名無しさん@お腹いっぱい。 :01/10/15 10:40 ID:xRor1qD5
マクで恐縮ですが、jcode.plのエラーが出ます。 # /\216([\241-\337])(\216([\336\337]))?/: unmatched () in regexp. File ':jcode.pl'; Line 645 これはMacJPerlを使ってるから出るのでしょうか?
WEBページを画像として(サムネイル)保存するにはどうすればいいのでしょうか? use ThumbnailMaker; と記述があるスクリプトを見つけたのですが、 検索しても、ThumbnailMakerに関する情報がまったく見つかりません。
188 :
186 :01/10/15 17:32 ID:???
>>187 そうです。C-boardさんのところです。
やっぱり、ThumbnailMakerは独自のモジュールなんですかね。
IEコンポーネントかGeckoとかのレンダリングエンジンを使って画像に視点のかねー
結局,Proxomitron使わないで, tcpdumpで生パケットキャプチャしてlessで見た(w
>>185 たぶんそうです。JPerlとjcode.plは共存できません。
どちらかにしてください。
194 :
名無しさん@お腹いっぱい。 :01/10/16 10:06 ID:Nx0C2n2e
>>194 make.plという名前のスクリプトからThubmnailMakerを呼んでますね。
やはりこれはサーバ上で動くCGIじゃなくて、
ローカルで「サイトアクセス+キャプチャ+縮小画像作成」を
自動的に行うツール的なものじゃないかな。
196 :
名無しさん@お腹いっぱい。 :01/10/16 14:58 ID:OTuIl/br
flockが使えない環境で、もっとも壊れにくいロックって どのようは方法でしょうか。 ファイルは追記だけでなく、上書きモードでもオープンします。
197 :
名無しさん@お腹いっぱい。 :01/10/16 15:16 ID:JPZjm6AB
>>196 やはりそれは、新しいファイルに書き出してからrename方式かなー。
ただしファイル書き込み時のシグナルトラップは必須。
ロックして上書きだと、自分自身を書き換えてる最中にプロセスが
止められたりするのが怖いかも。心配しすぎかも。かも。
とか言ってうちのカウンタは上書きモードでやってます。
カウンタ程度ならまあいいや、と。
198 :
名無しさん@お腹いっぱい。 :01/10/16 16:00 ID:PzN9I2Gr
CGIをEzweb対応にするにはどうすればいいんだい? 教えてくれたまへ(´ー`)y─┛~~
CGI(コモソゲートウェイイソターフェイス)はUAがどんなものであろうが関係ないと思うのだが。
200 :
196 :01/10/16 16:21 ID:OTuIl/br
>>197 ありがとうございます。
新しいファイルを作成するディレクトリのパーミッションを777に
設定していますが、新規作成すると404?になりますよね?
これを書換えが出来るようにperlでパーミッション変更できるのでしょうか。
実はイソヂーの対応は結構めんどいなー その聞き方じゃ駄目っぽい気がする。。。
>>198 面倒がらずHDMLで検索すれ(´ー`)y─┛~~ 便利なサイトはイパーイある
204 :
名無しさん@お腹いっぱい。 :01/10/16 19:57 ID:X5f/mGwI
激しく既出だと思うが、自分で書いたPerlのテスト方法が分かりません。 よかったらhttpd環境に合った初心者向けPerl解説ページを教えてください。
静的htmlへのgateにcgiを使っています。 1:cgiでリクエストをパース、 2:リクエストにIf-Modified-Sinceが含まれて無ければ Last-Modified を返した後、Content-Locationでhtmlへ 3:リクエストにIf-Modified-Sinceが含まれていれば 突合せをしてNot-ModifiedかContent-Locationを返す と言った事がしたいと思っています。 が、cgi(perlスクリプト)でIf-Modified-Sinceを読む事が出来ません。 $ENV{If-Modified-Since}では無いのでしょうか? また、3の場合出来れば差分だけを転送したい(rangeと言うヘッダが付いてくる?)のですが、 そう言う事は可能でしょうか? 何か物凄い勘違いをしてる気がするのですが、そもそもhttpdを飛び越して cgiで Not-modified や HTTP 1.0 といったヘッダを返せるのかが分からないのです。 今rfc2616を精読中なんですが、、、
↑ えと、目的はとにかく転送量を減らしたいのです。 gzip版と未圧縮を用意してそれぞれに飛ばす、と言うのは一応成功しています。 見当違いな事を言ってるかもしれませんが、お願いします。
>>206-207 すべて可能だと思います。
RFC2616を読んでもわからない情報つーと、こんなものかな?
・If-Modified-Sinceヘッダは $ENV{HTTP_IF_MODIFIED_SINCE} という環境変数に入る。
・Apacheの介在なしにCGIの出力をそのまま返すには、nph-hoge.cgiのようなファイル名にする。
ぐらいかな?がんばってね。
おお!!即レス&&ど真ん中ストライクですぅ (^-^*
>>208 さま 謝謝です
>・If-Modified-Sinceヘッダは $ENV{HTTP_IF_MODIFIED_SINCE} という環境変数に入る。
なるほど!、%ENVを全て吐き出してみたのですが、これは僕のSetの仕方が
悪かったと思います。Apacheに横取りされてるのかな? などと逆切れ^^
しかかっていたのでした。
>・Apacheの介在なしにCGIの出力をそのまま返すには、nph-hoge.cgiのようなファイル名にする。
これも疑問だったんです、No Parse Headers ですか、なるほど!
この辺はApacheの設定とも関わりが有りそうですね。
何とか見通しが立ちました、相当な亀ですが追って結果報告させて
もらいます。 感謝です m(_ _)m ペコ
210 :
名無 :01/10/17 00:14 ID:bB7m9GMd
>>206 ・Not Modified は、ヘッダの部分に `Status: 304(CRLF)' を出力すればOK。
・Range ヘッダはレジュームリクエストの際に使うもので、サーバ側から送っても意味が無い。
またまた感謝です
>>210 さま、今日はツイてる *^-^*
>・Not Modified は、ヘッダの部分に `Status: 304(CRLF)' を出力すればOK
了解です、nphでは全てのHTTPヘッダをスクリプトから送信出来るんですね、
僕が入っているレンタルサーバで利用出来る事が分かりました。
>・Range ヘッダはレジュームリクエストの際に使うもので、サーバ側から送っても意味が無い。
これに付いては少し困ってます、追記型のリンク集のような物なのですが
htmlの閉じタグ部分(</body></html>)がある為に、もろにリジュ-ムされると
タグがどんどん重複して行くと考えました、それでわざとタグ分を差し引いて
そこからDLして貰えないかと思いました。
HTMLの差分と言うのがあまり一般的では無いのかなぁ・・・・
まずは2616をよく読んでNot-modifiedに挑戦しようと思います。
ありがとうございます。 m(_ _)m ペコ
>>211 "Statas: 304\n\n" で返すときは、逆にnphにしたらまずいです。
一般的に、nphの使用はあまり勧められていません。
それは、リクエストのHTTPのバージョンに合せて、「完全な」
レスポンスヘッダを出力しなければならず、とても面倒だからです。
Not Modifiedの時は、普通のCGIで
print "Statas: 304\n\n";
これだけ。
後のことはWebサーバに任せておけばいい。
213 :
雑談スレからお引っ越し :01/10/17 10:02 ID:NS90rX+W
微妙に板違いかもしれんけど質問させてくれ。 getメソッドで投稿受け付けるWebチャット作ったんだけど、 特定環境(マク+IE,マク+ネスケ6)から投稿すると、「二重投稿になる」 て言われてるんすよ。んで、ログ確認すると、同一時刻に同一 リクエストを2個受け付けてるのね。 対症療法として二重投稿禁止をすればいいんだけど、 こんな現象他に聞いたことある?もしかしてガイシュツだったら 回線切って首吊って(以下略 から、その前にもし知ってたら 教えておくれやす。
214 :
雑談スレからお引っ越し :01/10/17 10:05 ID:NS90rX+W
続き。 実験完了。被験者に串使わずに生IPでテストしてもらったっす。Apacheのログ見ると、 全く同一のGETメソッドを使用したリクエストが1秒間隔で2回きてるっす。 本人曰くsubmitボタン1回しか押してないそうなんだけど。 なおMacOS8.6 Mozilla0.9.4、0.9.5、IE5、iCab2.5.3 だそうで。 Cyberdog2.0とNC4.7は二重投稿にならないそうデス。 まあ、気になるのは、前者は標準でHTTP 1.1を使ってることなんだけど、 IEでHTTP1.0使ってテストしてもらってもやっぱり二重投稿になってたし。 一応吐き出すHTMLには <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> 付けてるんだがのぉ。正直お手上げっす。マクなんて持ってないしな・・・ やはりPOSTに変更したほうがいいんだろか。 ちなみに上フレーム→発言表示 下フレーム→投稿フォームで、 発言表示と投稿は同一CGIを異なるパラメータで叩いている、という やり方っす。とりあえずWinでは大丈夫なんだがなー 引き続き、被験者(藁 に、ローカルでリクエストとレスポンスを ロギングしてくれ、と依頼中。先は長いかな。
215 :
雑談スレからお引っ越し :01/10/17 10:10 ID:NS90rX+W
鯖書き忘れた。WebARENAのApache1.3.20でつ。 Winな人からは全然二重投稿になるって報告きいてないんだよなー、頭いたい。
自動リロードとかその辺? よくわかんないけど。
217 :
216 :01/10/17 10:11 ID:???
ていうか初心者は帰ります。 おもしろそうだから成り行きは見守らせていただきます。
218 :
雑談スレからお引っ越し :01/10/17 10:22 ID:Di+gGr3E
ふっと板を見回してみると総合質問スレってないのね。まあいいや。 なんかWeb制作板で聞いても板違いと言われそうなんだけど (かといってここもどうかと思うけど)、 ブラウザがリロードする時のキャッシュの使い方(レスポンス ヘッダを正しく解釈するのかどうか)について言及したページとか ないかな。「このブラウザは正しく実装されてないよ」とか。 自動リロードはねー、表示部のHTML吐き出す時に表示するためのCGI叩くURL を10秒間隔でRefreshするようMETAタグ埋め込んであるんですよ。 投稿して即時にログファイルには反映されるけど、表示部のリロードタイミング は投稿受付とは非同期でつ。
つーか、IEにしても、Mozillaにしても GETするたびに二重にリクエスト送ってるとしたら大問題なってるはず。 絶対ほかに原因がある。ソース出す気は無いの?
220 :
294 :01/10/17 10:43 ID:dyqQWczJ
ソースは出しますヨ。ただ、ちょっと今外からなので今晩にでもこちらに出します。
221 :
名無しさん@お腹いっぱい。 :01/10/17 11:42 ID:DEbR16BG
はじめまして。 Web更新用CGI(複数ファイルアップロード型)を設置しようとしているものです。 (いまいるとこはFTPが使えないサーバ・・・←激つかえねー;;) いくつかサーチエンジンで拾ってみたんですが(日本語CGIインデックスと BestなんとかってCGI専門エンジン)、「セキュリティ保護のため 認められないコマンドがあります」と出て全滅。 何が引っかかるんでしょうか・・・。 (今までCGI設置して動かしたことはまったくありません(ゆ○チャ 触ったぐらい)
>>214 >全く同一のGETメソッドを
REMOTE_ADDRも同一??
取り合えず、カウンター書いてその人にそこ見て貰えば?
多分それでも2重になる筈だけど、、
もしそれでもならなかったらMacが怪しいって事になるね
フォームボタン実装のバグとか (笑
>やはりPOSTに変更したほうがいいんだろか。
逆にGETで書く意味を知り鯛んだけども、
基本的にaccess_logが無駄に大きくなるし
access_log見れる人なら誰でも発言をデコード出来るんだよ
改造って程でも無いし、モジュール使ってもいいし
まず小さいの書いて試す事を薦めるなあ
223 :
初心者@真性厨房 :01/10/17 17:16 ID:fkYQZcMH
CGIでリンク先のURLを隠すのってどうやるんですか?
225 :
名無しさん@お腹いっぱい。 :01/10/17 17:22 ID:I56AAFP7
>>221 OSのコマンドを直に呼んだりしてるかモナー。
sysetm("mkdir ...") とか `mkdir ...` とか。
詳細はソースを見ないとわからない。
>>221 サーバ管理者に聞くのが一番速い。
てゆーか「FTPが使えないサーバ」ってブラウザでアップする為の
機能が用意されているんだろ?
何でわざわざ自分で設置するの?
227 :
294 :01/10/17 20:13 ID:oPPxmXO4
>>222 REMOTE_ADDRも同一です(確認ずみ)
GETで書いたのは、単に作成の際UIを参考にしたチャット(今は消滅)が
GET使ってたので真似しただけで、あまり何も考えていないといえばいないです。
ソースは少し待ってちょ。まだ家に帰りついてないので・・・
早速指摘が。 <BODY>要素の中に<META>タグ記述してました。ガクーリ。タコですね。 ただいま修正中....
とりあえず、229に書いた不具合を修正して、もっぺんマク使いの人に 実験手伝ってもらいましたが、やはり改善しません。 POSTメソッドで投稿するバージョンも作ろうっと・・・
METHODを明示してないのは良いの? 全然解らんけど色んなUAに対応するならshallは良いとして mustは守った方が良いと思うんだけど。。 後actionがcgi?n=hogehoge← これは名前?だと思うんだけど これ下にフォームが有るから要らないのでは? 良く読んでないけど、どうもフォームの記述に問題有る気がした。
>>231 そうですね。言われて気付きました。METHODがないや・・・
n=hogehogeもいらないッスね。修正シマス
233 :
211 :01/10/18 00:10 ID:???
>>212 ありがとう御座います。
>それは、リクエストのHTTPのバージョンに合せて、「完全な」
>レスポンスヘッダを出力しなければならず、とても面倒だからです。
はい、良く考えたらHTTPの仕様を殆ど知らない訳で (^ ^;)
そんな状態で変な応答を垂れ流しちゃうのも考え物ですね。
前に絶対パスを得るのにモジュールを使ったりして、半泣きになったんですが
その時もApacheって凄いなぁ、とつくづく思い知らされました。
今、Statas: 304\n\n を返す様にしてNot-modifiedは何とか上手く行きました。
後は差分読みが出来るかを色々考えてます、折角だからnphにしてブラウザ位には
正しいヘッダを返せる位理解したいなと思ってます。
皆さんのお陰で、何も分からない状態から色々勉強出来ましたです。 大感謝!!
恥ずかしいのでsage進行継続で。 フォーム関係若干修正シマシタ。これで少しはマシになったのかな・・・?
そして修正しましたが、Mac + IEとかMozillaとかでの二回リクエスト は直っていないのでした。ご報告まで...
当方マクなので,アドレス教えてくれれば少しは実験できるよ。 iCabとIEだけど。
協力してあげたいけど、WINなんで駄目だ w 上の方の人も言ってるけど、俺もpostを進めるよ 何がウザイってhttpdのログが膨れるんすよ、エスケープされてるから あ(2バイト)が%82%A0(6バイト)になる、これかなり凶悪 次から鯖缶にマークされると言う(以下略) つー事でメソッド変えて $inputの所こんな感じにすれば、簡単に両対応になるから一応書いとく if ($ENV{'REQUEST_METHOD'} eq 'GET'){     $input = $ENV{'QUERY_STRING'}; }elsif ($ENV{'REQUEST_METHOD'} eq 'POST'){     ###まず標準入力から読み込み     read(STDIN, $input, $ENV{'CONTENT_LENGTH'});     ###お尻にQUERYを足す     $input .= "\&$ENV{'QUERY_STRING'}"; 俺はGETは大嫌いだけど w しかし不思議だね、がんばってくれ
238 :
名無しさん@お腹いっぱい。 :01/10/18 00:56 ID:QwckH/0y
くだらない質問なんですが コメント文って動作のスピードに関係することってありますか? 例えば同じカウンターとかでもコメントがたくさん入っているカウンターと コメントのまったく入ってない同じプログラムのカウンターとかでは やはり微妙にコメントのある方とかが重くなったりしますか?
あ、、、閉じかっこが無くなった
そりゃ関係するだろ (笑 計測したいならtimeとかuse Benchmarkするよろし
>>231 METHOD の値を明示しないときは GET です。
>>238 コメントの有無で変化する速度を気にするくらいなら、アセンブラで書かなくちゃダメだよ。(笑)
243 :
むぎ茶 :01/10/18 02:03 ID:???
> 確かにログ膨れますね。うちは毎日未圧縮状態で8MBです・・・<ログ
> POST使って再構築もしてみますわ・・・
(´-`).。oO( わざわざアクセスログなんか取るなよ ..... )
┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶 ┃
┃
[email protected] ┃
┗━━━━━━━━━┛
244 :
:01/10/18 03:44 ID:2/jyRhv/
拡張子を.logにしてもログファイルが見られない掲示板あるよね? 見れるようにするにはどうすればいいの?
>>244 アクセス可能な場所に置いて、
読めるパーミッション付けて、
.htaccess等でアクセス禁止しない。
246 :
天災君 :01/10/18 13:23 ID:5HREq8s2
.htaccessスレのほうが良かない?>直リン禁止ネタ
過去ログ/スレ読め。 --------------直リンネタ終了--------------
Webのフォーム画面からメールを配信するプログラムを作成しています。 配信先の人数が3000人ほどいるのですが、これを一人一人に対して sendmailをたたく(CGIからわたす)のは負荷が高くてとてもできません。 こういった大人数を対象にメールを送るプログラムってありますか?
250 :
悲惨な294 :01/10/18 15:11 ID:qcfy9XST
なんとなく可能性が見えてきました。 IE4/5はMETAタグによるPragma: no-cacheは、SSL接続の場合のみクライアント 側にキャッシュしない動作をする(しかも、本来HTTP/1.0ではPragma: no-cache はリクエストコンテキストでの動作のみが定義されており、レスポンス コンテキストでの動作は未定義である) IE4/5はMETAタグによるcache-control:no-cacheは無視される。 というわけで今晩あたり、METAタグではなくレスポンスヘッダにキャッシュを 無効にするような対応をとって実験してみます。
251 :
悲惨な294 :01/10/18 15:20 ID:qcfy9XST
追加:IE4/5と書きましたが、正確には、IE5で、METAタグのHTTP-EQUIV属性 を使用したキャッシュコントロールを行わないように仕様が変更されたそうです。
>>250 がんばれー。なにも手助けできないけど、このスレ見守ってます。
253 :
名無しさん@お腹いっぱい。 :01/10/18 15:22 ID:5HREq8s2
>>249 情報が足りなすぎ。
OSはUnix系かWindowsか。Webサーバはなに。
自由にソフトがインストールできる自鯖なのか、
CGI程度しか使えないプロバイダのおまけスペースなんか。
254 :
249 :01/10/18 15:30 ID:???
>>253 失礼しました。
OSはLinuxです。WebサーバーはApacheで私がrootになれる
環境です。もちろんソフトはなんでもインストールできます。
全部 To: にカンマ区切りで並べれば?(藁
256 :
221 :01/10/18 16:03 ID:w9ApYg4f
221です。
>>226 もちろん、システムがわにファイルアップシステムはあります。
かなり高機能なものなんですが(GMW−Managerみたい、ダウンロードもできる)、
ファイルが「ひとつづつしか」UPできないんです。毎回毎回30ファイルづつぐら
いアップ(上書きあり)するのでうっとおしくて。
FTP無理でもCGIなら使えるから、自分で設置してやろうと、こういうわけなんです。
>>225 なるほど・・・確かに「ディレクトリ作成」「ディレクトリ削除」ができるもの
でした。<ダメだったもの
>>256 鯖のOSは何?ていうかどこのレンタル?
どこで配布している何て言うスクリプト?
これさえ書けば全部解決だろうに・・・。
>>256 mkdirはたんなる一例として書いただけで、それより
system関数とかバッククォートがあると拒否されるんじゃないか
ということなんすが。どっちにしてもサーバ管理者に聞くのがいちばん。
260 :
221 :01/10/18 18:21 ID:w9ApYg4f
261 :
221 :01/10/18 18:24 ID:w9ApYg4f
262 :
221 :01/10/18 18:33 ID:w9ApYg4f
サポートないところをなんで、と思われるでしょうから注釈、 もとい弁解(アイタタ・・・) CGIを設置するつもりがなかったからです。 CGI以外のことでは、サポートはすでにいらない人だったので・・・。
263 :
221 :01/10/18 18:36 ID:w9ApYg4f
何でサポートないところに!と思われるでしょうから注釈もとい 弁解(アイタタタタ・・・) CGIを設置する気(必要性)がなかったからです。 それ以外だったらサポートはすでにいらなかったので選んだ・・・んですが まさかここまでアイタタな状況になるとは・・・。
括弧が多すぎ
↑ つまんねーレスすなアホ!!
>>263 つーかオマエがアタタタなの
どんな設定してどんなエラー出るのかちゃんと書けよ、別の板で自分で改造する
とか言ってたけど、そんなんで出来んのか?
取り合えずktoolっての見てみたけどシステムコールしてないから
どのサーバでも動く可能性が高い。
ただ、もし「セキュリティ保護のため認められないコマンドがあります」←
これがサーバのエラーメッセージ(スクリプトじゃ無く)でktoolを使ってこの
エラーが出るなら、perlの特定関数(readdirとか)も殺されてる可能性が有る。
一般的に、そこまでする所は勿論システムコールもさせてくれない事が多い
つまりKTOOLを使って駄目ならかなり絶望的って事
>265に補足すると 具体的に何と言うスクリプトのどう言う動作が出来なくて どんなエラーが出るのか、だと思うよ。 勿論属性他がちゃんと設定出来てる事が前提、がんばってね。
268 :
221 :01/10/18 20:52 ID:???
なんか発言ダブルポスト・・・鬱だな。
最近ネット調子悪くて・・・(汗)
>>266 別の板?
・・は、ともかくとして、そんなの無謀としか思いませんけど。<自己改造
所詮厨房ですから(死亡)
>>267 設置自体ができない状態です。
Web用ファイルではなくて、CGIファイルのアップ自体ができない状態な
のです。・・・ほかのものが大丈夫ということは、つまり・・・・
「そんなもん使うな」ってことでしょうね・・。
・・・他いくのが吉かも。
ありがとうございました、逝ってきます。
269 :
$unknown :01/10/18 21:45 ID:1KyR3Lr1
えーと、とりあえずHTTPレスポンスヘッダに Cache-Control: no-cache Pragma: no-cache を付加するように修正してテストに付き合ってもらったんですけど、 やはりダメでした。 一応Proxomitronで確認してみたら、確かにレスポンスに上記二つの ヘッダ付加されていましたが。 色々検索したみたんですが、IE5だと、レスポンスヘッダでキャッシュを 禁止しても、結局ローカルにキャッシュしてしまう(メモリキャッシュ?) のか、うまくいきません。
で、キャッシュの話とは別に、同一URLに対してリクエスト再発行 した時に、マク+特定ブラウザの環境だと、同時にキャッシュからも リクエスト発行しているのかなー・・・? 環境もないし、途中まで 調べたんですけど、よくわかりません。 とりあえず今後の対策としては、確実な方策として ・直前のログと比較して書き込み抑制 ・POSTメソッドに変更 の二本立てで週末にでも取り組んでみたいと思います。
273 :
名無しさん@お腹いっぱい。 :01/10/19 12:50 ID:0zjdPKGm
管理人以外で、 拡張子を.logにしてもログファイルが見られない掲示板あるよね? 見れるようにするにはどうすればいいの?
275 :
273 :01/10/19 13:25 ID:0zjdPKGm
そういうふうになっている掲示板のログファイルが見たいんです。ちなみに、私は管理人ではありません。
>275 管理人でもないのにログが見たいなんて、パスワードでも盗みたいの?
277 :
名無しさん@お腹いっぱい。 :01/10/19 13:36 ID:y4jf7d/d
CGIから、CGIを実行しているサーバ上のファイルを 書き換えたいのですがエラーになってしまいます。 Win2000+IIS5で、CGIはC:\Inetpub\cgi-binにあるPerlスクリプト、 書き換えたいファイルはC:\Program Files\dummy\testにあります。 どの辺に問題があるのでしょうか?ご助言願います。
>>273 先ずPerlとUNIX勉強しろ。最近はPCも廉いし2ndPC位楽勝でしょ。
それが嫌ならデュアルにでもしてみろ。
そうすれば、お前さんの質問の程度と結論位はすぐ分かるさ。
まだアレだったら答える余地も有るのに…なんだかね(藁
お絵描きしぃ板にペイントとかの画像貼り付けられるってきいたんだけど どうするの?
280 :
武彦 吉田 :01/10/19 15:40 ID:2hGpSWy8
cgiを勉強したいんですけど、お勧めサイトを教えてください
>>278 意味がわからないのは俺がIIS知らないから?
PerlとUNIXがわかれば問題が解決するって、
IISってそういうもんなの??
>>277 スペースがはいってるからとかじゃない?あてずっぽだけど
>277 ありがちなパターン。 ×$file = "C:\Program Files\dummy\test"; ○$file = "C:\\Program Files\\dummy\\test"; ○$file = 'C:\Program Files\dummy\test';
286 :
悲惨な294 :01/10/19 20:54 ID:UB1nBewH
投稿にGETを使う自作Webチャットで、MacOS8.6 with iCab, mozilla or IEで二重投稿 になっていた問題で、HTTPレスポンスヘッダに"Expires: -1"を追加することで、 IE,iCabで二重投稿が解消したとの報告を受けました(mozillaは解消せず) しかし、更に改善のため、投稿にPOSTを使用するよう改造して試してみるつもり っす。結果がでたらまた報告します。
287 :
名無しさん@お腹いっぱい。 :01/10/19 21:12 ID:OBTzMGjn
>>286 なるほどぅ。やっぱキャッシュの問題なのか。
ローカルキャッシュにデータを残させない方法が
ブラウザごとにばらばらなのが諸悪の根源というか。
>>272 の参考文献によると、IE5では
Cache-control: no-cache
Expires: -1
の2つを吐けばキャッシュされないんですよね。
IE4やネスケやmozillaだと、そのへんどうなってんの?
あとRFCではどう決められてるんでしたっけ。
288 :
名無しさん@お腹いっぱい。 :01/10/19 21:44 ID:O4d9Rk3g
289 :
名無しさん@お腹いっぱい。 :01/10/19 21:49 ID:O4d9Rk3g
>>288 目的は、CGIの呼び出し元のHTMLファイルを
書き換えたいのです
290 :
名無しさん@お腹いっぱい。 :01/10/19 22:07 ID:OBTzMGjn
>>288 Apacheなら$ENV{SCRIPT_FILENAME}見るのは?
291 :
290 :01/10/19 22:07 ID:???
>>287 当方では今のところレスポンスヘッダに
Expires: -1
Cache-control: no-cache
Pragma: no-cache
を含めています。ほんとはCache-control: no-cache,must-revalidateと
したほうがよいかも。
具体的なブラウザの振る舞いについては調査不足でわかりません。
(mozillaはソース読める人ならどうなってるのかわかるかも)
RFCではレスポンスがキャッシュ可能になるのは、
GETもPOSTも、適切なCache-controlかExpiresを指定された時のみ
である、と書いてありますね。しかしUser-Agentが、そのような
キャッシングメカニズムとは別のものを使うことは禁止していません。
(
http://way.direct.ne.jp/HTTP/rfc2616_ja/sec13.html#sec13 参照)
つーわけで、根本的には、リクエストラインに投稿内容が入る
GETを使うからこういうトラブルに遭遇する可能性が高まるのかなー、
という気がしてきました。POSTにかえよ(しつこい)
locationで飛ばすのとかは?
>>294 同一URIへのリダイレクトってOKなんでしょうか?
(とか聞いてる間に実験しろと言われそうだ)
279に答えろ うんち
わかんないよぉ、何かモジュール使うって事かなー
>>279
(・∀・)マリガトー ぜんぜんわからんけど>>297 >>298 なんだとぉ あの世で俺にわび続けろ 298ーーーーーーーーーーッ!!!
300げっと
>>ちたん うざい。半角板に帰れ。
半角のコテハンかよ... (´Д`;)アゥアゥ
>>301 ちげえええええええええええ!!!!!! FFDQ板のだよ!!!!!!!!!!!
302も
どちらにせよ帰れ。
誰か知ってる奴は居ないのかよ お絵かきってJavaアーカイブの奴だろ、アレにペイントの画像を貼り付ける?俺は全然解らん
ペーストできねーよ
>>295 規格は知らんが,自分で試してみた限りでは特に問題無かった。
>>279 >296 >308
使い方わからんのなら作者のとことかで聞きなよ。
掲示板ならともかく,アプレットは板違い。
やはりWebチャットのマク+IEその他で二重書き込みになる件、 投稿時のリクエストメソッドをGETからPOSTに変更したら 二重投稿が解消されたみたいです。やっと解決。 やはり素直にPOSTを使いましょう、ということでした。
>>310 うpしてくりぃぃ
CANNALDUKEつかってんだけどさァ オそーい遅い遅い遅い遅い!!速度もっと上げる方法無い?
いいからさっさと帰りなよ。
なんで????? 俺一応これでもWEB系の板には 1年前からいるってのにぃィィィ
>315 1年いるならわかるだろ。 カエレ
おしえてもらったらかえる おせーて
318 :
a :01/10/20 15:17 ID:CbOnzDxp
ログファイルの中身をまとめて一気に表示させたいんだけど うまくいきません。 open(LOG, ">>$logfile") || die "開けません."; flock(LOG,2); $log_all = <LOG>; $log_all = $data; print LOG "$log_all\n"; close(LOG); flock(LOG,8); print "$log_all"; これを実行すると$dataで入力された部分しか表示されません。 全部表示するにはどのようにすれば良いのでしょうか。
ん? 初心者の俺が見てもおかしいのが分かる…。 $log_all = $data; ってしてるんだから print "$log_all"; で$dataが表示されるのも当たり前じゃないの?
320 :
319 :01/10/20 15:26 ID:???
初心者なりの考えで。。 open(LOG, ">> $logfile") || die "開けません."; flock(LOG,2); print LOG "$data\n"; flock(LOG,8); close(LOG); open(READ,"< $logfile") flock(READ, 2); $log_all = <READ>; flock(READ, 8); close(READ); print "$log_all"; 識者の方々、どうでしょうか?
素直なスクリプトだね。 一つだけ。 $log_all = <READ>; では最初の行しか入らないよ。 @log_all = <READ>; と配列に入れるか。 undef $/; して置く必要がある。 あとは、 flock 解除する必要は無い、closeだけでいい。 読み込みモードで開いたんなら flock(READ, 1) で十分。 って感じかな。 前者については逆に解除するとまずい理由があるんだけどパス。 ただ、open2回は効率が悪い。 +< で開いてopen一回で済ませる方法も考えてみるといいかも。
322 :
318ではないですが :01/10/20 17:29 ID:hnM1JpJW
ただ単にファイルの中身を全て表示したいのですが どうすればいいっすか?
過去ログを読めばいいっす。
324 :
318ではないですが :01/10/20 17:43 ID:hnM1JpJW
旧スレにいくとそんなスレないっていわれました
>324 HTML化してるだけやん。見れたよ。 Perlなら,とほほに書いてあること一通り読んで。
326 :
319 :01/10/20 18:01 ID:???
>>321 なるほど…。
というわけで、出直して参りました。
+<に関する情報が思いの外少なくて苦労しました。
ラマ本には載ってないし…。
open(LOG, "+< $logfile") || die "開けません.";
flock(LOG,2);
print LOG "$data\n";
@log_all = <LOG>;
close(LOG);
foreach(0 .. $#log_all){
print "$log_all[$_]\n";
}
ていうか俺は318じゃないのに良いんだろうか?(笑
>>326 ん、その+<は試してから書いた?
あとforeachは
foreach (@log_all) { print "$_\n" }
だけでいいような。
328 :
gorn :01/10/20 18:59 ID:m+yOgEsu
サーバーレンタルしてるんだけど そことは、ショッピングバスケット使っちゃいけない契約(体言止め) 負荷の問題らしいけど、あんまり掲示板と変わんないよね それで、文句を言われてもBBSとMailとCountの複合技ですっと言い張れる感じに仕上がる ショッピングシステムを思案中です なんかいいアイディア無いですか? あと、そこのサーバはLinuxなんですけど MySQLがインストールされているんです アナウンスされてないけど 勝手に使っていいんでしょうかね
329 :
319 :01/10/20 19:45 ID:???
>>327 試したらドえらいことに…。
+>>、seekについては、とりあえず意味も分からず
ソースだけ盗んで動くようになりました。
これから勉強してみます。
foreachについては恥ずかしい限りです…。
$logfile = "log";
$data = "hogehoge";
open(LOG, "+>> $logfile");
print LOG "$data\n";
seek(LOG,0,0);
@log_all = <LOG>;
close(LOG);
foreach(@log_all){
print "$_\n";
}
ていうか、スレ違い気味なので今回のは終了にします。
続きがあったらPerl初心者スレでやります。
ありがとうございました。
>>318 なんか横取りみたいでスマソ。
これで一旦解決と思ったら、またUser-Agent依存の挙動が発見 されました。 PocketIEはレスポンスヘッダに不可した Refresh; n,URL=ほげほげ を解釈できないかもしれないです。iPAQユーザから「全くリロード しなくなった」と報告をうけました。つーことは<META>タグで 埋め込んでやらないと自動リロードしないのかー。
不可→付加の、まちがいです。
iPAQまで面倒見てるのか ヽ(´ー`)ノ 頑張ってくれ。うちはIE4以降onWIN以外無視だからなあ。。
333 :
名無しさん@お腹いっぱい。 :01/10/21 02:11 ID:FKLL3OSG
みなさんこんばんわ 僕もCGIというのをおぼえようとおもっているのですが 自作のCGiをおける大手プロバイダでおすすめはどこになりますか ホントはADSLに変えたいのですが高いです スレちがいですか プロバイダ板はyahoo関係に占領されてたのですが。。。 ちなみにいまはdionのこみこみ20じかんこーすでmacOS9.02です りゅうこうはPHPをおぼえればイケイケらしいのですが 大手プロバイダでのサポートは少ないらしく またいかんせんmacOSXでないとダメだそうです webでざいなーを目指す第いっぽなので どうかよろしくおねがいします。。。
とりあえず漢字ぐらい変換できるようになれ。 とりあえず適当な本買って、基礎知識手に入れてからにしな。 あと、デザイナー目指すならデザイン勉強したほうがいいよ。
335 :
333 :01/10/21 03:57 ID:gzw1ipZQ
すみません。333です。 企業はデザインだけ出来る人よりも、オールマイティーな人材を求めている と聞いたので、サーバーサイドの基礎知識を少し身に付けたいのです。 デザインはflashやdreamweaverなどで コードはhtml、javascriptなんかをやりだしたくらいなのですが CGIのアクセスログなんかを自分で創りたくてウズウズしてます。 だって、そっちの方が面白そうだもの。 自分はどちらかというと面白そうなことなら、まず、実際にやりながら、 参考書片手に勉強というのでなければ続かないたちなので とりあえず簡単に自作のCGIを動かせる大手プロバイダで 「動いた!」という感動を向上心につなげようと思ってます。 でも、本屋に売ってる本で具体的に初心者におすすめのプロバイダとか そういう話は当然のってないんですよね。 かなりスレ違いのような気もするので、簡単に 「僕くらいなら当面biglobeで十分ですか?」 「大手のADSLサービスで自作CGIオーケーなとこってあるんですか?」 今はレンタルサーバーとかは考えてません 下の方の質問はここでするのはかなり勇気入りましたです。 とりあえず、上だけでもよろしくお願いします。
>>335 とりあえず、自分のPCで動かしてみれば?
biglobeってどんなだっけ? w 君はこうしてネットに繋げてる訳だろ? 取り合えずJavaとperlはネットに吐き気がする位ドキュメントが転がってる まずはGoogleに行きなさい、分からない事が有ったらGoogleにキーワードを入れるだけで 関数一つに至るまで、これでもかという位ヒットする、しかもその結果は重み順に並べられている ここで聞くといつ答えが有るか解らんだろ?、Googleに行けば1秒で望みのWebがヒットする 馬鹿にされることも無いし、ヒットしたWebは他の目的でもとても有用な事が多い 試しに「無料」「サーバー」「cgi」で検索してみてくれ。
>>335 >オールマイティーな人材を求めていると聞いたので
聞いた?君はそれを確かめたの?
本当に企業はオールマイティーな人材を求めているの?
実際分業が進んでるところでは、デザイナーには
完全にデザインしかやらせないとこもあるんだよ。
入社したい企業があるのなら、そこに直接電話して
「将来お前のところで働きたいんだけど、どんなデザイナーほしい?」
ぐらい訊く根性見せてくれよ。
ま、Webデザイナーにサーバーサイドの知識があったらあったで
便利なんで適当に勉強してくれや。確かに面白いし。
ただし、器用貧乏にならないようにな。
勉強する程度ならbiglobe(あれdionじゃないの?)でも十分だ。
とにかく、自分で判断・確認しなよ。
他人の言うことを鵜呑みにするな。俺の言うこともな。
ファイルアップロードに付いてですが、 例えばform multi/part で1MBのファイルをアップロードしたとすると ファイルが完全にアップロードされてから、STDINとApacheとのストリームが結びつく んでしょうか。それともバッファ分に分割されて順次STDINに入ってくるんでしょうか 後、どこかでpostメソッドの上限は128kbと書かれてたんですが、これはmulti/partの 場合には当て嵌まりませんか? 下らない事ですが、FTPと比べてメモリを大量に消費する 様なら良くないかと気になってしまって、、
341 :
333 :01/10/21 09:44 ID:WcdX3zQj
>>336 >>338 >>339 助言ありがとうございます。
とりあえず、自作CGIオーケーのbiglobeにでものりかえて実際に勉強しようと
思います。
>ただし、器用貧乏にならないようにな。
あぁ、たしかにそういうこともありがちかもしれませんねぇ。
よく、覚えておきたいです。みなさんありがとうございました。
$logfile = "data"; open(FH, "$logfile"); @log = <FH>; foreach $all (@log) { print $all; } close(IN); とうのを作ったのですがブラウザ上に表示するにはどうすればいいのでしょうか?
print "Content-type: text/html\n\n"; close(FH);
>343 どこにprint "Content-type: text/html\n\n";を入れるんですか?
やったね! ^o^)ノ~~~
はやく教えてくださいっ!!!
349 :
名無しさん@お腹いっぱい。 :01/10/24 03:04 ID:K36o4fv/
無限世代で返信できる掲示板を作っているのですが 後ちょっとのところで出来ません スレにつき一個のログ作ってますんで openしたらあとはそれを並び替えるて書き込むだけなんですが ちゃんと並んでくれません(書き込み時に並べる方針をとってます) ログにはその記事のナンバーと返信元のナンバーなどが記録されています どうか教えてください
>>349 @ary = (0..20);
@ary1 = sort {$a <=> $b} @ary;
@ary2 = sort @ary;
@ary1と@ary2の違いはわかってるよな?
351 :
名無しさん@お腹いっぱい。 :01/10/24 17:33 ID:uoazam2k
一対一で会話中は他の人に見られなくて 客が言葉を教えられるような 人口無能チャットありませんか?
>351 板違いだよ 探してくくれる板に行け
>板違いだよ スレ違いだろ
355 :
名無しさん@お腹いっぱい。 :01/10/26 00:39 ID:6VKZEJwr
IEだと化けないのですが、Netscapeだと化けてしまいます。 HTMLが間違っているのかと思い、NNで保存して、それを 読ませると問題ありません。 試しに print "Content-Type: text/html\n\n"; print "<html><head></head><body>\n"; print "ほえほえ\n"; だけやってみました EUC、SJISどちらも化けます。 どうも昔から NNは CGIの出力だと化けるように思えるのですが…。
>355 METAタグで文字コードを指定したら?
テキストファイルの一番上にデータを保存するにはどうしたらいいんでしょうか。 下のやりかたで出来そうなんですが、あまりきれいじゃないので・・・。 open(IN, $datafile); my @alldata = <IN>; close(IN); unshift(@alldata, $newdata); open(OUT, ">$datafile"); foreach(@alldata){print OUT;} close(OUT);
358 :
名無しさん@お腹いっぱい。 :01/10/26 00:51 ID:6VKZEJwr
>>356 もちろんそれも試しました。
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.01//EN">
<META HTTP-EQUIV=Content-Type CONTENT=text/html; charset=Shift_JIS>
ブラウザでキャラセット変更してもダメなのです。(TДT)
>357 追記保存にしてreverseするってのが一般的かな?
360 :
名無しさん@お腹いっぱい。 :01/10/26 02:23 ID:wndpF29s
>>358 print "Content-Type: text/html; charset=Shift_JIS\n\n";
>>357 print OUT @alldata;
foreach する必要なし。
363 :
教えてください :01/10/26 19:13 ID:lq1ms3Dt
最近ホームページ作りを始めた超初心者です。 フォーム中のテキストフィールドにパスワードを入力して、それを CGIプログラムに渡す時、"/cgi-bin/login.cgi&passwd=xxx"が ブラウザのアドレスに出てきてしまいますよね。 この"passwd=xxx"の部分を、なんとか隠す方法ってないもんでしょうか? 初歩的な質問で、ホントにすみませんが、よろしくお願いします。
>>363 "form メソッド post"で検索してみましょう。
365 :
どうも! :01/10/26 19:44 ID:lq1ms3Dt
>364 ありがとうございます。やってみます。
age
367 :
質問させて :01/10/27 21:03 ID:7BskCaCJ
マイヤフーなんかで、ユーザIDとパスワードを入力してログイン すると、途中で他サイトのページにいっても、そのIDとパスワードを 保持してますよねえ。これって、どんなテクニックを使ってるのだろ?
たぶんくっきー
ついでだから訊きたいんだけど、クッキーのビスケットの違いはどこにあるの?
移転ー
クッキーはヨーロッパでビスケットはアメリカ
>>367 クッキーだよ。
だからクッキー切ってると何もできない・・・
373 :
質問させて :01/10/28 06:59 ID:VHP7SlL7
クッキーですね。ありがとございます。 クッキーの読み書きを勉強してみます。
374 :
名無しさん@お腹いっぱい。 :01/10/28 14:41 ID:D/zGSxyw
最近、CGIでプログラムを書く仕事が増えたのですけど、 Perlって、どうも好きになれんのです。(ややこしすぎ) それで、やはり慣れてるC言語を使うことにしたんですけど、 やっぱり邪道ですかねえ?
>>374 好きな言語で書くのがいちばん。
で374の安心のために言うと、C言語でCGIはわりと多数派。
職場では、シェルでCGIしてる連中が多いです。
>>376 QUERY_STRINGとかの解析はどうやるの?
awkとか?
俺はプロじゃ無いけど、邪道じゃ無いと思う。 仕事ならCの資産も沢山有るだろうし、、 ただワンライナとかヨーイドンで書いたら、Perlの方が絶対早いっすよ つーかC屋さんが入りやすい様な仕様になってるから、 そう嫌がらずにやってみて下さいな w 型無し兄弟でJavascriptとかと一緒にやると、とっつき易いっすよ多分 それでモジュールの本でも読めば、信じられない位手っ取り速く 物は出来上がる感じかなあ(その分信じられない位遅いけど) 個人的にはPerlでパパッと書いて、高く付く所だけCでじっくり書き直す って感じでやってますが・・・
うんとねえ、SEDで抜き出してます。
380 :
377 :01/10/28 15:32 ID:???
>>379 マジッすか?
Perl使いたくならない?
漏れもCGIが動くかどうかのテストくらいなら、
シェルでやるけど…
恐るべしUnixハカー
元からShellとかawk極めちゃってる人にはそれほど興味わかないのかもね その方がUnixっぽいし Emacsとperlしか使わないとか言う人も多いよね、最近。
う、何か文脈が変だ。
Cで書いたCGIって、Linuxでしかコンパイルできないの?
384 :
名無しさん@お腹いっぱい。 :01/10/28 15:55 ID:zfKGpEKi
意味和歌欄
PerlでCGIを書くと、周りの人達から 「Perlなんて誰もメンテナンスできないから、シェルで書くように」 ときつく言われてしまうのですよ。 自分としては、同じ業務で、Bシェル/Cシェル/Bashが混在してる方 がメンテナス性が悪いと思うんですが。
386 :
381 :01/10/28 16:13 ID:???
ははは、ご愁傷さま Unixらーって何でも適材適所で、それを繋げて使うのが好きだよね だからグルー言語は大嫌いっぽい でもEmacsだけは認めちゃうんだよなー (w
387 :
名無しさん@お腹いっぱい。 :01/10/28 21:46 ID:t4fYupat
sub giko { my $mona = $_[0]; my $mona += 100; ←ここの my って必要ありますか? return $mona; }
389 :
387 :01/10/28 21:53 ID:t4fYupat
入れるのは間違いでした。
390 :
名無しさん@お腹いっぱい。 :01/10/28 22:17 ID:8GRVO/dK
掲示板のログは一枚のファイルに保存するのと レス毎にファイルを作成させるのとどちらがいいですか? それとも他に良い方法ありますか?
392 :
名無しさん@お腹いっぱい。 :01/10/28 22:47 ID:jXt5Dm1W
掲示板に於いて、ユーザが書き込みを終え、送信 この時に確認画面を表示させているのですが ユーザが送信した情報を <input type=hidden name=*** value=***> この様にして埋め込み、確認後、再び送信する方法を考案したのですが、 自分でも余りスマートでない気がします。 他の方法はあるのでしょうか?
サーバ側に一時的に情報を保管し、その情報にユニークなIDをつけ。 それをhiddenやcookieでクライアントに渡し、それを再び受け取る方法。
394 :
名無しさん@お腹いっぱい。 :01/10/29 00:30 ID:NjUKg3r1
初歩的な質問なんですが、 掲示板作っているんですが、ログファイルの保存は、 タグ付きで保存しているんですが、","などで区切って、 読み出すときにsplitで分けてからタグ付けて表示したほうがいいんでしょうか? それともタグ付きで保存しといてそのまま表示したほうがいいんでしょうか? 表示速度、読み込み速度、サーバー負担という視点から教えていただけないでしょうか? タグは2chみたいな感じになるんですが。
タグってHTMLのタグだよね。 書き込みより読み込みの方がはるかに多い掲示板の場合、 読むたびにタグ付けする処理が入るので大変効率が悪い。 多少ディスク容量を取るが、書き込み時にタグ付けするほうが確実に有利。 ただその場合、仕様変更に対応するのが難しくなるという弊害も。
396 :
◆Perl/FaQ :01/10/29 01:22 ID:cGo88HG1
CGIで読むな。 perl起動したらどっちでも同じだな
397 :
名無しさん@お腹いっぱい。 :01/10/29 01:23 ID:6+6+yN8N
399 :
394 :01/10/29 02:18 ID:NjUKg3r1
>>395 さん速レス有り難うございます。
書き込むときにタグ付けた方が有利なんですね。
参考になります。
厚かましいんですが、もう一つ質問です。
例えばログファイルの一つに100件のデータがあったとします。
そのファイルの、1〜10件までのデータを取りだしたいとします。
$logfile = "log.dat";
open (LOG,"<$logfile");
@log = <LOG>;
close (LOG);
print @log[ 0 .. 9];
↑このやり方だと一度log.datの内容をすべて@logに格納しますよね。
そこで、本には書いてなかったんですが、
$logfile = "log.dat";
open (LOG,"<$logfile");
@log[ 0 .. 9] = <LOG>;
close (LOG);
print @log;
↑このやり方でもできました。
結果は同じなんですが、2番目のやり方だと読み込む量が
すくなくていいような感じがするんですが、勘違いでしょうか?
ほかに読み込む量が少なくてすむ書き方ってありますか?
なんか間違っている様な気がします。
それで頭の10要素が確保される、全部入れるよりメモリは喰わない 詳しくはマニュアル読んでくれ。 色々やると分かると思うけど、フラットファイルだと、 頭に書き込むのとケツから読み出すのが大変、 ソートしようとすると配列に突っ込んで、弄るのが一番手っ取り早い。 こっちの方がちょっとマシだけど気にすんな while(<>){last if $i>10;$i++;}
401 :
名無しさん@お腹いっぱい。 :01/10/29 12:31 ID:YLwR1OUG
>>394 サーバー負荷って言っているけど、
実際掲示板を閲覧する時は、CGIから読み出すの?HTMLを読むの?
395で説明した人はCGIから読み出す事が前提の説明ですが、
それに対して396の人はCGIで読み出すなら、
タグを保存するのも保存しないのも"目糞鼻糞"って言っているのでしょう。
根本的にHTMLに書き出してそれを読み込んだほうが速い。
このまま作るとKENTの二の舞。
別にKENTの二の舞でもいいと思うけど (笑 一つ言っておくと、HTML化とか言って動かなくなったカウンタを CGIで呼んでたりしたら、まあ殆ど意味無しってこった。 perlのCGIはとにかく起動時に、負荷が掛かる。 ソースが読まれたら、データ構造や配列なんて気にすんなよ 1MBの配列作ったってかまわねえよ(w そのうち慣れんだから 多重投稿防止だかにContent-Locationでcgiリロードなんて駄目駄目 軽くしたのに投稿確認画面付けたりすんのも訳わかんネー
>多重投稿防止だかにContent-Locationでcgiリロードなんて駄目駄目 この辺ちょっと突っ込みどころか、まあいいや
ツッコミどころは他にもあるだろ。まあいいけど。
是非話してくださいませ。
何か棘あるけど漏れも同感だなぁ・・・・
例えばチャットを軽量化するとかってどれくらい意味が有るんだろ?Load ave 見れば何にコストがかかってるのか分かると思うんだけど・・・
>>404 のつっこみが聞きたいなぁ
407 :
名無しさん@お腹いっぱい。 :01/10/29 14:52 ID:Hj4ZWAT1
**ほぼ**正しい 昔どっかのFAQで見た Q:僕のPERLスクリプトを軽くしたいです。A:無理です、PERL以外で書きましょう Q:僕の書いたCGIを速くしたいです。A:無理です、他のソリューションを探しましょう これは核心に近い。セッションを減らす事の方がずっと重い事を忘れては駄目だよ。
>1MBの配列作ったってかまわねえよ(w の時点で馬鹿だと思われ。あとは知らん。
409 :
泉 :01/10/29 16:36 ID:HCVqjE5M
今ゆいちゃっと2000の、複数の部屋の参加者を一気に一覧できるようにするCGIを探しています。
http://www.sakutuu.pos.to/ ここの、「参加者一覧」って所のやつです。。
血眼で探しましたが、全く見つかりません。
CGIに詳しい人が自分で制作するのではって話も聞きましたが、
実際WEBで配布しているらしいです。お願いします、教えてください・・
お、 >あとは知らん。 (笑 効率perlerクンが多そうなんでウザく書いてみただけだ 薄っすらと思うんだけど、 @ary=<DAT>よりwhile(<DAT>)の方が負荷が掛からないです! とか当たり前の事鼻息荒くして言うような人がこのタイプだな。 で、htmlだと負荷が低いんです!!! てなる訳 ワラ 所がそいつん所のbbs見たら上に書いたみたいので、挙句に クッキーが更新されない? だとかでわざわざクッションページ 作ってcgi叩いてやがんの こう言うのは恥かしいからやめなさいってこった
411 :
名無しさん@お腹いっぱい。 :01/10/29 16:49 ID:Vp58ZuMT
C++で作成し、IIS上で稼動する、.dllを叩く形式のWebサー バーアプリケーションを作成しております。 作成した.dllをインストーラに組み込みたいと思いますが、 使用出来るようにするにはIISのWWWルートフォルダ以下に フォルダを作成し、実行権限を付加しなければなりません。 この実行権限の付加をインストールプログラムから(IISの 外部から)行うことが可能でしょうか。方法ご存知の方おられ ましたら、教えていただけないでしょうか。
それInstallShieldでするの? 漏れのはVC++おまけバージョンだけど出来そうに無いっす。 役立たずスマソ
413 :
411 :01/10/29 17:15 ID:Vp58ZuMT
>>412 はい、一応InstallShildを考えています。
ただ、必要であれば、そこから別のバッチ叩いてやることも
考えております。聞いた話では、ASPからIISの有効期限等の
パラメータを変更することが出来るそうなので、そのあたり
の機能を使ってやれるなら、と考えております。
むー、スマソ漏れにはさっぱりです 死 InstallShieldムズ過ぎ ム技板のインストーラスレなんかはどうでしょう (´Д`;)
415 :
411 :01/10/30 09:25 ID:4xZv/Zhz
>>414 ありがとう御座います。そちらで聞いてみます。
スレ・板違いすみません。m(_ _)m
416 :
名無しさん@お腹いっぱい。 :01/10/30 11:43 ID:OUfh+a+D
CGIでmp3ファイルのリストを生成しています。
いったんファイルにセーブして再生する分には問題ないのですが、
ヘッダに "audio/x-mpegurl" を指定して出力すると
Media Playerが起動して(ここまでは望み通り)、
「データが無効です。」
というエラーメッセージが表示されます。
MP3ファイル名は、
(1)ローカル環境のフルパス
(2)呼び出し元HTMLからの相対パス
を試しました
(3)
http://からのパスを示すと 「再生リストのメディアを再生できませんでした」
となります。
なんとかしてCGIから再生させたいのですがどのへんに問題がありそうでしょうか?
417 :
394 :01/10/30 14:43 ID:Fn7+VhKy
みなさん、レス遅くなってすみません。
>>400 さん、有り難うございます。while文使えばいいんですね。
>>401 さん、CGIから読み込んでいます。CGIで読むとき、タグ付き、そうでないのとでは、
サーバー負荷や表示速度に体感出来るような差は無いってことですか?
あと、例えばレスが500件あったとして、100〜200件表示、任意の数〜任意の件数表示、
みたいなこと考えているんですが、CGIで読むのと、HTML作らせて読むのとではどちらが有利ですか?
>>402 さん、書き込みのCGIと、読み込みのCGIを分けていて、
書き込んだあとで読み込みのCGIにMETAタグで戻して、リロードしてますが重くなりますか?
で、読み込みのCGIなんですが、ラスト50件表示にしています。
($logfile はログ、$topはページのトップ部分、$bottomはページのボトム部分です。)
(50件以下の場合のプログラムは省略しています、while文は勉強中です。)
open(LOG,"<$logfile");
@log = (LOG);
close(LOG);
print $top,@log[$#log-50 .. $#log],$bottom;
こんな感じなんですが、@logにlog.datの内容をすべて読み込みますよね。
@logにlog.datのラスト50件だけ格納したい場合(効率がいいかどうかはわかりません)、
書き込みCGIにlog.datのカウンターのファイル(レス数)をあらかじめ作らせておいて、
読み込みCGIにカウンターファイル読み込ませてから@LOGに格納させた方がいいでしょうか?
例えば、こんな感じで(log.cutはlog.datのカウンターファイルです)
open(CUT,"<log.cut");
$cut = <CUT>;
close(CUT);
open(LOG,"<$logfile");
@log[$cut-50 .. $cut] = <LOG>;
close(LOG);
print $top,@log,$bottom;
みたいな感じで、この方法だと効率悪いでしょうか?ほかにいい方法ってありませんか?
418 :
417 :01/10/30 14:58 ID:Fn7+VhKy
訂正、10行目の$logfileはログです。→$logfileはlog.datです。
419 :
初心者 :01/10/30 15:34 ID:eE0Tps3m
洋鳥のパミの変更方教えて下さい。 FFFTP使っています。 アップロードするファイルの属性変更設定でも、 直接変更もできないんです。。。
洋鳥はパーミッション変更しないでもOKなはずです。 (1年以上前にチェックした時はそうだった) しかし、動かないCGIがかなり有るので、エラーが出るようなら原因は ・Perlのパスが違う ・記述ミス ・洋鳥では動かないCGI が考えられます。
421 :
初心者 :01/10/30 16:43 ID:???
>>420 氏
有り難う御座いました。
色々試してみます。
君は相当な効率屋さんみたいだから付き合ってやるよ w >@log[$cut-50 .. $cut] = <LOG>; これは全く駄目、500行のファイルだとすると@logには0〜449まで空の要素が 入って、450〜499までに※頭の※50行が入って来る。 ここでgetarryと言う関数を書く事を考えてみる。 getarry($filename,$backnum,$num,$arry_ref); として呼び出せば、$filenameの最後の$backnum行目から$num行を@arryに 格納してくれるようにしよう。 この関数の中では、ファイルオープン後 例えばsizebuf[128] として seek DATA,0,2; # まずDATAの終端に飛ぶ while(1){ seek (DATA,-$sizebuf,1); # buf分戻る、1は現在からの相対指定、-でバック。 sysread(DATA,$buf,$sizebuf); # $bufに$sizebuf分読み込む # $buf内の改行コード数を得て、$linefeedに追加、省略 last if $linefeed > $backnum; } while(1){# 大きくバックし過ぎているかも知れないから今度は進める last if $linefeed == $backnum; sysread (DATA,$buf,$sizebuf2); # sizebuf2はログ形式に依存 # $buf内の改行コード数を得て、$linefeedから引く、省略 seek (DATA,$sizebuf2,1); # 進める } sysread (DATA,$buf,$sizebuf); # まだファイルポインタは行頭には無い $j = index($buf,"\n"); seek (DAT,$j+1,1); # これで$backnum行目の位置が確定した @$arry_ref[0..$num] = <DATA>; # 配列に入れる こんな感じの処理を行う、大体これが君の求めてるものになる マジメに書けば100行位になるだろう、これを書くと効率面で 助かるのは以下のとおり 1:ファイルを頭から全読みしないからページ数を設定すればログのサイズは どうでも良くなる(ログは100MBでも良い) 2:1と同じ理由で良く有るログの最大保存行数、とかそれに合わせる為の ファイル、配列操作が不要になる 3:従ってファイルはほぼ常に追記モードでの書き込みで良いので、ログ飛び が比較的起きにくくなる、時々サイズをチェックして余りに巨大なら 上のルーチンで最終〜行を抜いて捨ててしまえば良いだろう。 こんな感じ、これは原始的なBookmarkの話でageやらソートやらは一切考慮 してないからよろしく。
ああ、台無しだ
>>417 ね
適当に参考にして頑張ってくれ、ここのread.cgiの動きは参考に
なるだろう、ここのはCだが思いっきり全部読み込んでるけどな w
つーか普通perlでこんな事するのはちょっと変わり者だ
呼び出しに付いては、そのとうり。
セッションを減らす為の工夫をしてくれ。
フリーで配布されているCGIの殆どは関数だらけなんですが、 関数にする必然ってあるのでしょうか?
無いよ別にがんばってね
426 :
424 :01/10/30 19:09 ID:???
>>425 じゃぁ、どうして関数にしてるんでしょう?
>426 名前:424 :01/10/30 19:09 ID:???
>
>>425 >じゃぁ、どうして関数にしてるんでしょう?
ハァ(゚Д゚)?!
と書くより
>>426 (゜∀゜)! アヒャヒャヒャ
と書く方が手っ取り速いから
>>424 メリットはともかく、デメリットなら幾らでもある。
細かく関数にすると速度が劇的に落ちる。
どうしても関数を作成したいならせめて引数はグローバル変数を通して渡すべき。
同じ言語なら関数ゼロの状態が最高に軽いぞ。頑張れ!
429 :
424 :01/10/30 23:48 ID:???
>>428 ありがとうございます。がんばりマッスル
430 :
名無しさん@お腹いっぱい。 :01/10/31 00:06 ID:8Ld6h9BQ
マジレスするならそんな言い方するなよぅ (-_-... 例えば良く使うprint、これもperlの関数だけど、もしこれが無くて 自分でprint関数(にあたる機能)を実装したら500行位になったとする。 これを全部グローバルで呼び出すとどうなる? 何か出力する度に500行づつソースが膨れ上がっていくだろ? 更に、このprint関数(にあたる機能)にあたる部分を修正するとしたらどうする? それは大変だからprintと言う関数に引数を与えるだけで出力出来れば便利だろ? それと局所化せずに適当に変数を使いまわしたりすると、変数に予期しない値が 入ったりして潰しにくいバグになる事が多い、書けば書くほどこう言うのを嫌うわけ。 >グローバル変数を通して渡すべき これは参照を渡せば解決する、 後はどうしても再帰処理したい時、局所化して関数に出来ると凄くありがたい。
>それと局所化せずに適当に変数を使いまわしたりすると、変数に予期しない値が >入ったりして潰しにくいバグになる事が多い、書けば書くほどこう言うのを嫌うわけ。 この部分、有る種類のプログラムを書く人はこう言う事をしてMLなんかに質問を投げてくるが こんなのは変数に何が入ってるか解らんから答えようが無いんだな。 だからuse strict; my ourしてないソースは添削もしてもらえないと言う危険を伴うわけ
何も考えずに$iなんて適当な変数名で、ある時はループカウンタ、またある時はステータスフラグ、 ある時はバッファ、そしてある時はリファレンス、ってな感じで1000行位書いてみれ ワラ
みんな、ネタにマジレス好きなのね
前から思ってたんだけど、どうして
>>433 こういう奴って、
マジをネタだと思うミスは平気なのに、ネタをマジだと思うミスばっか
こんなに恐れてるんだろ。
だからネタネタネタネタうるさいんだよね、いつも。とりあえずそう言っとけば
当座は安心、っつー変な意識があるみたいでさ。
いいじゃん別に。他にこういうこと知りたがってた奴も読んでるだろうしさ。
あのー、、上のどの辺りにマジレスが有るんでしょうか? もしかして・・・漢字10こ以上入ってるとマジレス?? いろいろ大変ですね。。。。 (・∀・)クスクスクス ppp
437 :
417 :01/10/31 14:11 ID:74/7yPpG
>>422 さん、ご丁寧に有り難うございます。
まだ書いてあることが全部理解できないんですが、
もうちょっとレベル上げてから質問するようにします。
>>423 さん、やっぱり我流だと変な書き方になっていますか。
また勉強し直してから質問しようと思います。
その時はまたよろしくお願いします。
あとレス下さった方、有り難うございました。ではまた、、
>>436 それはネタじゃなくて単なる煽りだと思われ。
ていうか、ネタの定義って意外と人によって違うんかねぇ。
俺は
・客観的事実を述べるための発言の場合は、書いた動機がフザケだろうが
その事実が嘘でない限りマジレス、嘘ならネタ
・自分の見解を述べるための発言の場合は、用いた客観的事実が正確だろうが
その見解が本音でない限りネタ、本音ならマジレス
っていうふうに考えてるんで、上の多くはマジレスに見えるが。
>>422 すいません、417さんとは別人ですが
今、サブルーチンを書いているんですが
勉強不足で中々うまく行きません。
seek,DATA,-$hoge,1; した後に
readすると、ポインタが元の位置に戻ってしまいますよね
ファイル終端から - で戻したりしているのですが、
どうしてもずれていってしまうんです。
お助け下さいませ・・・・
440 :
422 :01/10/31 18:08 ID:???
あーすまん、確か倍づつバックするんだったかな、、、 いや、それでも変にポインタがずれるから相対指定やめたような記憶が・・・ 結構前なんで忘れてしまった、帰ったら見るよ、 (´-`).。oO(多分100行位なんだけど、、アップ板のスレが無くなったかな・・・)
Windowsでseekするときはbinmode(FH)しとかないと 変にポインタがずれるから注意。ってがいしゅつかな?
442 :
422 :01/10/31 21:49 ID:???
ありがとう!
>>441 >>422 さん (*^д^)
何となく分かって来ました。最初から読んで行った方が最後のreadで楽が出来るんですね!
\@arry ←こんな風に渡すやり方も勉強になります 参照渡し??
何と言うか、綺麗なソースです
自分で書いてたのは速攻でゴミ箱逝きになりました (^ ^ ;)
ソースにこのスレ442へのポインタを追加させて貰いました。
2chでこんな親切にされたのはじめて、、、うっうっ。・゚・(ノД`)・゚・。
338 名前:心得をよく読みましょう :01/10/14 22:17 ID:5r0xorkP ひろゆきもそろそろ管理人としての姿勢を見直すべき 珍走団がひろゆきに土下座をさせたのは、荒らしの責任を取らせたのではなく あくまでも、ひろゆきの電話での態度について落とし前をつけたまで 日本生命やINSIのように、安全を確信できる相手には、イキガッテみて、 珍走団のように理屈の通じない相手には遜って土下座までするようでは あまりにもカッコワルイ
IDがxorだね。(ダカラドーシタ)
447 :
ウルトラ・ビギナー :01/11/01 21:13 ID:Iq/cGgVz
教えて下さい; URL入力すると、ユーザ名とパスワードを尋ねてくるサイトが ありますけど、これと同じ機能を自分のホームページにも付けたいのです。 初心者の自分には検討がつきません。ヒントだけでも良いので、教えて下さい。
すいません。CGIについて質問です。 掲示板を作ったのですがどんなパーミッション設定(属性)にしようが logを第三者に見られてしまいます。 見られないようにするにはどうしたら良いですか? ちなみに使っているCGIプログラムはkentって人の所のYY-BOARDです CGIは755、logは666と書いてあるんですがこれでは見られてしまうんです。 その他の属性も全て書いてあるとおりにしたんですが見られてしまいます。 どうか教えて下さい。
>451 logのファイル名をデフォルトから変えるといい。 なるべくわかりにくい名前に。 それで9割方防げる。
>>452 有難う御座います。めっちゃ助かりました。
ついでといっては何ですが下記のことについても教えていただけないでしょうか?
板違いで申し訳ないんですが
フレームとmetaの応用なんですが
自動的に次のページへ飛ばすタグがありますが
フレームを使い、1フレームに自動的に次のページへ飛ばすタグを入れ
全ページを次のページへ飛ばすにはどうしたら良いですか?
理解しにくい日本語ですいません。
はい
>453 板違いと思ったら然るべき板に移動しよう。
便乗です、cgiが755や705じゃ無いと動かない?サーバーで ログファイルやホストを記録したファイルをサーバーの他の人にいたづら されてしまいます。これを何とかする方法は無いでしょうか
>>454 ようするにフレームを入れ、ページを縦三分割にしたとしましょう。
そして一番左側のページへmetaタグを入れ自動的に
次のページ(仮にyahooとしましょう)へ
飛ぶようにします。しかしこれでは一番左側のページしかyahooへは
飛びません。そこで真ん中や右側も左側で設定したyahooへ飛ばすには
どうしたら良いですか?
ということなんですが理解していただけましたでしょうか?
個々に入れれば出来ますがyahooが三つも出てくれば少しウザすぎます。
>>455 まぁ、そう言わないで下さいよ〜。
>456 サーバー管理者に苦情を送って相手を追い出してもらう。 貴方個人で所有するデータを勝手に書き換えている以上、 苦情を送る権利はあると思います。
この際だから権限について勉強しなさい。 検索すればうんざりするほどヒットする もしかしたら機能に支障が出るかもしれないけど普通は大丈夫
>>460 nobodyだと無理じゃネーノ? (pu
463 :
460 :01/11/02 02:08 ID:???
だから支障出るかもっつってんじゃん アホだなー・・・
えらく人が多いと思ったら馬鹿ばっかりか。。。
>>465 あーごめん、怖がらせたみたいね。
じゃあ言ってごらん、何を教えて欲しかったのかナー?
>>467 Web製作板 ×
Web制作板 ○
このハナクソがっ!!
>>468 ゴメンよ。分かったからとっととWeb制作板に逝け
==2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数:73447人 発行日:2001/10/16 どもども、ひろゆきですー。 既にご承知でしょうが、ついにコピぺ荒らし対策をやりましたですですー。( ̄ー ̄)ニヤリ 最近おいらのメルマガをパロっておちょくる馬鹿が出てきたのでその対策なんですー。 コピぺ荒らしには規制を設けることにしましたが、差別発言や他の掲示板の荒らし依頼等は これまでどおりアクセス拒否はしませんのでこれからも何でも書いてちょ! 本当は悪質な書き込みもあぼーんしてる暇があったら、書き込み者のアクセスを拒否すればいい んですけど、そうするとつまらなくなってしまうのでしないのですー。 2chは過激な発言が売りで、おいらもそれで知名度アップでうれちいんでちゅー。( ̄ー ̄)ニヤリ だからみんな、これからも無茶な書き込み期待してるよ! おいらの悪口以外はなんでもありだからね! んじゃ!
471 :
名無しさん@お腹いっぱい。 :01/11/02 20:54 ID:yRWVIwAo
Locationじゃ無理 CGIでブラウザをエミュってPOSTする
473 :
471 :01/11/02 21:47 ID:yRWVIwAo
>>472 う〜む、やはりそうですか。
ということは行き先のCGIの表示を出すにはソケットハンドルからの
内容を受け取って自分自身で出力することになるんですよね。
そうすると最終的なURLは行き先のCGIではなく自分自身に
なってしまうのか…。う〜む。
ありがとうございました。
何でしようとしてるか解らんからね Cとかperlならforkして子プロでPOSTした後飛べば良いんじゃないの 悪用以外に思いつかないが(w
475 :
名無しさん@お腹いっぱい。 :01/11/03 15:07 ID:m0/GYqdz
がー(゜Д゜)ーん サブルーチンの引数にハッシュわたせられないんですね・・・ 今更気づきました
↑馬鹿
↑ &hoge($foo,%bar); という渡し方ならできる。 &hoge(%foo,$bar); はできない。 リファレンス渡しは$だからここでは考えない。
↑やっぱり馬鹿
480 :
名無しさん@お腹いっぱい。 :01/11/03 17:33 ID:vwyWsLPj
sub hoge { my $x = pop; my %h = @_; print "$x\n"; foreach my $k (keys %h) { print "$k => $h{$k}\n" } } %majokko = (creamy => "mami", magical => "emi", pastel => "yumi"); $hoe = "moe"; hoge(%majokko, $hoe); 2個以上の配列やハッシュを渡したい場合はリファレンスを使うしかないけどね。
ガ━━Σ(゚д゚lll)━━ン popがあった やっぱり馬鹿でした逝ってきます。
「↑」を使ってるヤツはタダの荒らしですので無視しませう
($mday,$mon,$year) = (localtime)[3..5]; の[3..5]の意味がよくわかりません。
484 :
◆GpD4VZDY :01/11/03 21:58 ID:LIOUDToo
配列の三番目と五番目。
>484 「三番目から五番目」では?
486 :
名無しさん@お腹いっぱい。 :01/11/03 22:04 ID:ALgC6AlS
perlでcgiスクリプト を書いています。 先日学校で、どんなプログラムでもいいから、 自分で書いたプログラムを分析して持って来い というレポートがでました。 そこで、perlで書いたcgiスクリプト(掲示板) を持って行こうと思うのですが、これって プログラムになるのでしょうか? つまり、perlで書いたcgiスクリプト はプログラムに入るのでしょうか? あまりにくだらない質問ですが、 もし先生にこれは、プログラムでない と 言われて、単位落したら欝なので、どうかレスをお願いします。
>486 判断基準は人によって様々だ。 その先生に直接聞くのが一番いいぞ。 ここでどんな返答をもらおうとそれのせいで単位を落としたら鬱だろうからな。
488 :
486 :01/11/03 22:10 ID:ALgC6AlS
486 です。 そんな嫌な先生では無いので、 一般的に見て、プログラム という事になっていましたならば、 大丈夫と思います。 僕はプログラム歴が短いので、 いいプログラムがいまのところ掲示板 しかないのです。
俺も487に同意。確認できるなら確認すべき。 個人的には、「どんなプログラムでもいいから」とか言っておいて もしPerlスクリプトをハジくようならその先生はアホもいいトコだと思うが、 そんなこと言ったってハジかれたら一巻の終わりだからなぁ・・・。
490 :
486 :01/11/03 22:21 ID:ALgC6AlS
>>489 有難う。そうします。
ところで、やっぱり、一般的には、
掲示板のperlスクリプトも
プログラムになりますよね?
普通のシェルスクリプトはプログラムにはなるのでしょうか?
(ちょっと疑問に思ったので)
>490 そう思うが,バイナリしか認めん人もいる。 いままでの授業からも考えてみ。
492 :
486 :01/11/03 22:40 ID:ALgC6AlS
今まではjavaを例にプログラムスタイル の話をしていました。 いかに見やすいプログラムを作るか、といった講義です。
なら java にしとけ。 >いかに見やすいプログラムを作るか、といった講義です。 Perl では難しいな(ワラ<見やすいプログラム
495 :
486 :01/11/03 23:29 ID:ALgC6AlS
分かりました。非常に参考になりました。 perlだと見やすくなりすぎるということですか? cにしときます。 javaはまったくやったことないのでパスします。
497 :
486 :01/11/03 23:53 ID:ALgC6AlS
>>496 あります。
ソースを以下に見やすく、かつ、後でいかに
変更できるのが簡単にするか?みたいな講義です。
498 :
名無しさん@お腹いっぱい。 :01/11/04 00:13 ID:7toSDaGV
環境変数HTTP_REFERERなんですけど、
これってURLに?が含まれてたら、それ以降の
文字列を取ることは出来ないんでしょうか?
例えばgoogleからの検索ページからのリファラーって
http://google.yahoo.co.jp/bin/query?p こんな感じになってて、
if(defined $referer && $referer ne '') {
$referer=~s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$referer=~s/[\n\r]/ /g;
}
こういうスクリプトじゃあ?以降のクエリを取れないんです。
教えていただけますか?
> それ以降の文字列を取る って 1. "?" 以降を削除するって意味? => $referer =~ s/\?.*//; 2. "?" 以降を取り出すって意味? => ($query) = ($referer =~ /\?(.*)/);
500 :
498 :01/11/04 00:58 ID:7toSDaGV
取り出すって言う意味でした。 そもそも$ENV{HTTP_REFERER}で値を表示させてみても、 やはりq以降のクエリが表示できません。こういう場合って どうしたらよいのでしょうか?
501 :
:01/11/04 16:38 ID:fpY/kDek
502 :
501 :01/11/04 16:40 ID:fpY/kDek
↑ は「protect.pl」の設置です。
どうしても出るなら無理だろ w
505 :
aaa :01/11/05 20:04 ID:???
test
環境変数を全部吐き出すってCだとどう書いたら良いですか? getenv(poyo); 何が入ってるか解らないのです。
507 :
名無しさん@お腹いっぱい。 :01/11/07 18:32 ID:tA9g4U3H
あわわ、ちゃんと読んでなくてゴメンナサイ&&ありがとです。 第三引き数が有ったのかぁ、 取り合えずFreebsdとlinuxではOKでした〜(^へ^* これでマヌケな分岐が減りますです。。
509 :
名無しさん@お腹いっぱい。 :01/11/07 19:45 ID:lsVE0brR
携帯に画像とかを送りたいんですけど フォームで取得したアドレスに送るためには どうしたらいいでしょうか。
>>509 それだけ書いても誰も答えられないぜ。
まずは具体的にどんな作業をしなければならないのかを書け。
511 :
509 :01/11/07 20:47 ID:???
>>510 CGIは全くの初心者なので具体的に、と言われると難しいのですが
509の繰り返しになりますが、携帯に画像を送りたいのです。
普通にブラウザで見ているウェブサイト上から。
フォームにアドレスを記入してもらい、
そのアドレスに自動的に画像を配信できるようにしたいのです。
いくつかそうした例を見てみたのですが
「CGIにいったんアドレスを送っている」というところまでしかわかりませんでした。
こういった自動配信をするようなCGIを探しているのです…
下手な説明でごめんなさい。
>>511 携帯はどういうふうに画像を受けとってんの?
メールに画像を添付して送ればいいのかね。
514 :
名無しさん@お腹いっぱい。 :01/11/08 01:40 ID:sGM4BgbG
よく「このCGIは負荷が高い」とか書かれてるのを見ますが、 負荷の高さを調べる方法とかあるんでしょうか?
>>調べる方法は〜〜〜 有る、以上。 てのも何だからちょっとマジレスすると、実はアクセスされる回数の方が ずっと問題、チャットやFFA、箱庭には共通する所が有るだろ?
516 :
名無しさん@お腹いっぱい。 :01/11/08 02:31 ID:ydCjfg0x
他のサーバにあるファイルを読み込むのはどうすれば良いのでしょうか?
LWP.pm
518 :
516 :01/11/08 02:45 ID:???
>>517 LWPで検索したら何とかなりそうです。
どもです。
519 :
509 :01/11/08 10:27 ID:???
>>513 そちらに行ってみます、ありがとうございました。
520 :
:01/11/08 22:46 ID:CUHvgEg0
質問です。 掲示板で、投稿欄に、 AAAAAAAAA・・・ など連続した長い英数字を入れられると、 ものすごい横長のページになってしまうんですけど、 改行さす方法とかありますか? よろしくお願いします。
522 :
名無しさん@お腹いっぱい。 :01/11/08 23:47 ID:MrY9Qatl
>>520 おれはIE専用のスタイルシート使ってる。
<body style="word-break:break-all">
523 :
名無しさん@お腹いっぱい。 :01/11/09 00:32 ID:yszEReHR
検索プログラムって普通はどうやって作るんですか? 単純に正規表現だけでやってたんですが、単語単位で区切ってくれるようなものにしたいんです。
>>523 単語単位とは?
複数の入力キーワードを入れてAND検索とかOR検索したいつーことか?
525 :
523 :01/11/09 01:41 ID:yszEReHR
>>524 例えば「2ちゃんねる」と入力したら、
「2ちゃんねる」 「2」 「ちゃんねる」 「チャンネル」 「2ch」
にヒットするみたいな感じです。
J-Sky用の私書箱みたいな物を作ることになったので、とりあえず テストでGET使って長文送ってみたら普通に送れちゃったんだけど なんで? GETのパラメータはエンコード済みの状態で256文字ぐらいまで っていう制限があったような・・・
527 :
名無しさん@お腹いっぱい。 :01/11/09 01:47 ID:Kc5UBw1D
523じゃないですが検索CGIで質問です。 data.txtに (ID,パスワード,ユーザー名,コメント) と大量のユーザーデータが並んでいるのを以下のようにして、 ($id,$pass,$user,$coment) = split(/\,/,$data); 検索フォームに入力されたキーワードを含むコメントと、そのユーザー を探すスクリプトが下のやつですが、 if ($FORM{'coment'} ne '') { if ($coment=~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$FORM{'coment'}/i) { ; } else { next; } } ↑これを$comentと同時に$userからも検索して、どちらかが一致した ユーザーを拾い出したいのですが、どう変えればいいのでしょうか?
>>523 ,525
セキュリティ甘いかもしれんが,こんな感じか。
検索のは作ったことないんで,はずしてるかも。
$text = '2ch';
$input = '2ちゃんねる';
$input =~ s/2/(?:2|2)/g;
$input =~ s/ちゃんねる/(?:ちゃんねる|チャンネル|ch)/g;
print $text if ($text =~ m/$input/);
シソーラスは難しい
>>527 if( (コメント検索) || (ユーザー検索) ) {;} else {next;}
でいけると思う。
検索は正規表現いらんならindexやeq使った方が速い。
531 :
520 :01/11/09 02:46 ID:BYWaspDC
532 :
名無しさん@お腹いっぱい。 :01/11/09 03:29 ID:4cZEuHdr
えっと 配列の内容をフォームのドロップダウンに反映させる方法は どうやったらいいですか? よろしくおねがいします!!
>>525 それでいちばん難しいのは、入力した「2ちゃんねる」て文字列から
検索キーワード「2ちゃんねる」 「2」 「ちゃんねる」 「チャンネル」 「2ch」
を得るとこだねえ。
「2ちゃんねる」、「2」、「ちゃんねる」は、英数字と漢字の境目で区切れば出てくるかな?
「チャンネル」は、入力文字列のひらがなをカタカナに変換すればいい?
「2ch」なんてのは、変換辞書データを持たせないと無理だな。
>532 Perlなら,foreachで回して<SELECT>をprintしていく。
535 :
名無しさん@お腹いっぱい。 :01/11/09 03:37 ID:4cZEuHdr
>>534 foreachをつかうんだろなーというところまではなんとなく分かってたんですが,,,,,,
本当に申し訳ないのですが!!!!
一行だけ書いてください。 おねがいします。
537 :
名無しさん@お腹いっぱい。 :01/11/09 03:54 ID:4cZEuHdr
>>536 ありがとうございました
その一行からしばらく考えてみます。
おせわになります!
538 :
527 :01/11/09 04:46 ID:Kc5UBw1D
539 :
名無しさん@お腹いっぱい。 :01/11/09 04:52 ID:4cZEuHdr
>>536 できました!
$n=0;
foreach (@color) { print qq|<OPTION VALUE=\"$_\">
@color[$n] </OPTION>\n|; $n++}
でできました。
540 :
名無しさん@お腹いっぱい。 :01/11/09 05:14 ID:nB0AXHIZ
qq//てのは, "" とほぼ同じ動作をする。 qqのあとのは囲み記号。qq()やqq||,qq##みたいに好きに設定できる。 qqで"以外を囲み記号にして使った時は,"をエスケープしなくてもかまわない。 あと,@color[$n] eq $_でないかい?
>>539 加えてツッコミ。
@color[$n] --> $color[$n]
スライスを理解するといいでしょう。
すみません、質問がありますです。 メールフォームから送られてきた人に自動的にメールを返信するのって 出来ますでしょうか? 返信する内容は統一されてます。
>542 メールフォームからメールを送信する際に、本来のメールと別に 返信用のメールを送信すればいいだけじゃないの? 要するにメールを2個送信するようにするだけでいいように聞こえるけど。
544 :
初心者 :01/11/09 13:11 ID:???
stlfbbsでリモートホストを取得して管理者用のページで表示する方法ってありませんか? stlfbbsはここにあります。 www.blk.mmtr.or.jp/~stlf/softwares/
546 :
544 :01/11/09 13:29 ID:???
>>545 専用のスレがあったなんて知りませんでした、スミマセンでした。
あと教えてくださってありがとうございます。
547 :
523 :01/11/09 13:53 ID:MARNF8Be
>>533 やっぱりどこの検索エンジンもそういう「辞書」みたいなものを使ってるんですか?
>>547 でしょうな。「2ちゃんねる」から「2ch」を導出するにはそれしかない。
辞書といっても、数十個程度のキーワードを変換できればいいってことなら
Perlのハッシュ使った簡単なやつでいいんだよ。
549 :
名無しさん@お腹いっぱい。 :01/11/09 16:02 ID:7OwplJOK
自動登録のリンク集にURLの重複チェックを付けましたがうまく いきません。 下のようにURLを記録してるのですが、記録の際にチルダ(~)が %7eとなってしまうのが原因のようです。チルダが入ってないURLな ら重複チェック出来ます。 open (IN, ">>../data.txt"); flock (IN, 2); print IN"${siteurl}\,"; flock (IN, 8); close (IN); ちなみに下がチェックの部分です。どう変えればいいのでしょう? open(IN,"../data.txt"); eval{flock(IN,1)}; @denyurl=split(/\,/,scalar(<IN>)); close(IN); foreach(@denyurl){ if ($siteurl =~ /\Q$_\E/i){ &fileunlock; &error("このサイトURLは既に登録されています。"); } }
>549 エンコードやデコードして,書式を合わせる。
551 :
JUN :01/11/10 14:03 ID:???
リンク元解析CGIで、SSIが不要でお勧めの物ってありますか? よろしくお願いします。
553 :
JUN :01/11/10 15:01 ID:???
>>552 どうもありがとうございます。
そっちで聞いてみますね。
554 :
名無しさん@お腹いっぱい。 :01/11/10 15:07 ID:TNMdUeUB
sysopen(WIP,$file,O_RDWR|O_CREAT); ↑みたいに読み書き可能でファイルを開けば、 ファイルを空にせず書き込みができflockなどで排他制御するのも不要と聞いたのですが、 本当でしょうか?
場合による、つーかopen関数で十分、排他の意味を考え直せ systemはデバイス叩く時に使え
場合によるどころかなんの解決にもなってないと思うが…。
sysopen(FH,$file,O_CREAT|O_EXCL)の排他性を使って ファイルロックするつー話と混同してるとか。
open関数プラス-eと比べてね、そう言う意味ではアトミック 何で排他不要なのかが謎だが
559 :
554 :01/11/10 20:16 ID:???
すいません、いいファイルロックの方法とか探してたんですが、 これがよさそうに思ったので openでflockで十分ですかね・・・
リンク元解析CGIで質問があります。
解析したいhtmlファイルに↓このようなものを貼りつけるのですが、
<SCRIPT LANGUAGE="JavaScript">
<!-- JavaScript start
document.write("<IMG SRC='
http://www.xxxxx.ne.jp/~xxx/logking/logking.cgi? "+document.referrer+"' width=1 height=1>");
// JavaScript end -->
</SCRIPT>
ウチのページはフレームを使っていてindex.html、left.html、right.htmlの内のleft.html(フレーム部分)に貼ると、リンク元がindex.htmlになってしまうのです。
かといってindex.htmlに貼ると今度は全くカウントされません。
何か良い方法は無いでしょうか?
よろしくお願いします。
ちなみにCGIは↓ここのLogKingです。
http://www2a.biglobe.ne.jp/~yama/cgi.html
BSD系のO_EXLOCKの事じゃないか? 確かに使えれば一発ロックだけど、やってる事は同じだぞ(flockシステムコール)
>560 (1)ノンフレームのトップページ作ってそこに張れ。 そっからフレームのmain.html(旧index.html)に飛ばせ。 (2)IMGじゃなくてFRAMEにしろ。
>>560 document.referrer → parent.document.referrer
ではどうか。
>>563 うまくいきました!
ありがとうございます!
565 :
名無しさん@お腹いっぱい。 :01/11/12 16:00 ID:04eCHJ4t
$query = new CGI; print $query->header("text/plain") とやるときに、日本語の文字コードを指定するにはどうするのでしょう?
素直に print "Content-Type: text/plain; charset=EUC-JP"; とでもやれば?
>>565 perldoc CGI 読んどきなさい。
header(-type=>"text/plain", -charset=>"EUC-JP")
568 :
:01/11/14 15:34 ID:???
test
569 :
名無しさん@お腹いっぱい。 :01/11/14 20:53 ID:atd2SUxk
yahoo: p google:q
572 :
名無しさん@お腹いっぱい。 :01/11/15 10:04 ID:p1hJVRjp
エンコードについての質問なんですが・・・ CGIでエンコード(%16進数)した文字(クッキー)を、 JavaScriptでデコードして読み込むと文字化けしてしまいます。 CGIでデコードした場合は問題ありません。 ちなみにCGIもHTMLもShift_jisで作っています。 よろしくお願いします。
それはMSの呪いです、あきらめましょう。 2chも馬鹿では無いのです
574 :
572 :01/11/15 11:36 ID:+pyXoXKZ
>>573 さん
2chってクッキーをエンコードしていないみたいなんですが、
問題ないんでしょうか?
postで送ったらエンコードされないみたいなんですが、
CGI側でエンコードする必要って無いんでしょうか?
問題がないのならそれでいいんですが。。。
よけいな処理にはパワー使いません。 クッキーごとき化けてもたいした問題はないです。
問題あるよ、でも仕方ないもん w 名前欄に ' って入れてみよう
>>574 IEのJScriptのCookieのエンコードと、ネスケJavaScriptの
Cookieのエンコードの形式が違う。
CGIでエンコードしたCookieはネスケと同じ形式なので、
IEではデコード出来ない。
エンコードしてないのをCookieに保存しておけば、とりあえず
誤魔化せるので(
>>576 さんの書いた通り問題があるが)
エンコードしていない。
2ちゃんの場合マシンのスペックより回線が問題と聞いたことが
あるような気がするので、
>>575 さんのような事は考えてないと
思う。
578 :
' :01/11/15 13:10 ID:AsoC02dq
f
579 :
574 :01/11/15 13:39 ID:/Cr0YXak
>>576 さん
'←これ名前欄に入れるとレイアウトえらいことになりますね。
クッキー食わす前に'を大文字の’に変えると回避できるみたいですが、、、
ほかにやばい文字ってありますか?
>>577 さん
MSのJScriptとCGIの互換性の問題ですか。
初期の頃のJavaScriptからずっとですよね。
MSが変な解釈で実装したからみたいですね。
作る側の人間はどうしようもないということでしょうか。
580 :
名無しさん@お腹いっぱい。 :01/11/15 17:56 ID:AyXGT3yl
ファイルに書込む時 open (ANSWER, ">>namae.txt"); print ANSWER "${name}\n"; close (ANSWER); だとnamae.txtには 1番目 2番目 3番目 ・ ・ という順序で書き込まれますよね。 これを逆に ・ ・ 3番目 2番目 1番目 と新しい書き込み順にするにはどうしたらいいのでしょうか?
>580 何度も出てきている質問なので過去ログを漁ってみましょう。 一般的には、追記モードでファイルの最後に書き足してから、 読み出す時にreverseをかける人が多いようです。
582 :
名無しさん@お腹いっぱい。 :01/11/15 23:20 ID:SZ/asDCL
ソースが公開されている掲示板で半角カタカナが正常に表示できるのは無いでしょうか?
2chのread.c
584 :
名無しさん@お腹いっぱい。 :01/11/15 23:37 ID:SZ/asDCL
read.cってのを見てみました これってperlじゃなくて実行形式にコンパイルして動かしてるんですよね? 私の環境ではWindowsでActivePerlを使って掲示板を動かしてるんですが perlじゃ半角カタカタは無理なんでしょうか?
Perlでいわゆる半角カナが化けないようにする方法はあるが, 掲示板探してるだけならスレ違い。
586 :
名無しさん@お腹いっぱい。 :01/11/16 00:21 ID:Br89H9t8
>>585 今掲示板を改造してて半角カタカナも通したいんです
どんな方法か教えてください
587 :
580 :01/11/16 00:22 ID:Y2uolE5H
>>581 reverseでうまくいきました。ありがとー。
588 :
名無しさん@お腹いっぱい。 :01/11/16 00:51 ID:LdLT89bd
>>586 入力も出力も内部も、ぜんぶ、shift-JIS にすれば解決するんだとおもった。
細かいことは、忘れたなぁ
590 :
名無しさん@お腹いっぱい。 :01/11/16 01:05 ID:Br89H9t8
>>589 ,
>>588 今ソースを見てみたらJISに変換しているようでした
コード変換の部分を変更していろいろ試してみます
JISはそもそも半角カナ自体が定義されてないのでは・・・
592 :
名無しさん@お腹いっぱい。 :01/11/16 01:15 ID:LdLT89bd
>>590 だから、変換するから、混乱するのよ。
まずは、変換なんか、ぜんぜんしないで、ぜーんぶ、Shift-JIS にしてみるのをオススメしたい。
593 :
名無しさん@お腹いっぱい。 :01/11/16 01:17 ID:LdLT89bd
594 :
569 :01/11/16 04:19 ID:3Uk2GDFR
595 :
名無しさん@お腹いっぱい。 :01/11/16 16:10 ID:pmjYcpZB
レンタルのWebサーバでデータベース系のCGIを作成したいのですが、 インストール作業が不要な(できればSQLが使える)DBモジュールというのはあるのでしょうか?
データベースってMySQLとか使うの?
597 :
595 :01/11/16 17:11 ID:pmjYcpZB
質問する側の立場でありながら、ちょっと説明不足だったようで・・・。
どうも申し訳ありません。
当方が利用しているのは所詮安いレンタルサーバスペースなので、
MySQLやらOracleやらのデータベースは導入されていません。
今のところは「CSVファイルを配列に格納してgrepやifで条件に合わせて抽出」
といった手法で運用しているんですが、
手順も多いですしあまりカッコよくない手法と思ったので、SQLで一発抽出を考えたわけです。
極端な話、格納データはCSVのままでも構いません。
とにかくSQLなどで一発抽出する方法を探しているところです。
で、色々と探していたところこんなページを見つけました。
http://member.nifty.ne.jp/hippo2000/perltips/DBD/csv.htm インストールが必要となっていますが、
これってやっぱりレンタルサーバには入れちゃマズいですよね・・・。
自分のホームディレクトリ以下なら問題ないと思うのだが。 jcode.plだってインストールしなきゃ使えないんだぞ?
599 :
596 :01/11/16 17:39 ID:???
600 :
名無しさん@お腹いっぱい。 :01/11/16 17:40 ID:67cmqQS3
なんだかありがちな質問で申しわけないのですが、 掲示板などで設定項目を増やすのってどうやればいいんでしょうか。 年齢とか、居住地をプルダウンで選ぶやつです・・・ 今はkent webのプチボードをちょこちょこ改造したのを使ってます。 とりあえず同じくkentwebのfantasy boardには居住地選択の 項目があったので、ダウンロードして見よう見まねで 関連部分をコピペしたり修正したりして なんとか500エラーにもならず、ログにも残るようには出来たんですが どうしても、記事表示部分で「北海道」とかではなく数字が出ます。 ログにも、地名ではなく数字が残ります。 2つのCGI見比べて、どこか見落としはないかとか調べてるんですが 分かりません・・・なぜ、数字になってしまうんでしょうか。 ちなみにちょっと改造が出来るくらいで、プログラムの知識はありません。
601 :
600 :01/11/16 17:41 ID:67cmqQS3
ちなみにどういう数字かと言うと、設定項目の順番です。 北海道なら0、青森が2、秋田が3とかそんな感じです。
# $place_dataに数字が入っていると仮定 @Place = ('北海道', '???', '青森', '秋田', ・・・・・); ・ ・ ・ print $Place[$place_data];
603 :
名無しさん@お腹いっぱい。 :01/11/16 18:35 ID:I2tSH3T6
すみません。初心者です。 Javascriptの質問スレにも書いたのですが、 もしわかる方がいましたら教えて下さい。 入力フォームから入力したテキストの値を、別ウインドウのテーブルに 出力する方法(コード)を教えて下さい。 別ウインドウをopenしたあと、openしたウインドウのテーブルのセルの指定の仕方が わからないんです。 よろしくお願いします 例をあげると @"入力"というウインドウに「住所」「氏名」「年齢」という入力フォームがある。 A登録ボタンを押す。 B"住所録"というウインドウのテーブルに出力される。 テーブルは下記のような感じで、 登録する度に1レコードずつ追加されるようにしたいのです。 住所|氏名|年齢| −−−−−−−−− | | | −−−−−−−−− | | | −−−−−−−−−
fantasy board? から機能削った方が良いんじゃ無いの? 付けるより取る方が簡単だと思うよ。 もし勉強してるならまともな本でも読むとか
>603 こういう場で機種依存文字を使う時点でダメ。
>>605 素人さんには難しいですね、話に入れなくてごめんなさいね。
>>606 物知りお猿さんですね (^_^;) いんたねっと上級者さんですか?
でも俺も教えない w
609 :
名無しさん@お腹いっぱい。 :01/11/16 20:09 ID:+qGZIDex
アクセス解析での質問をさせてください。 同一スカラーの個数のカウントはどうやるのでしょうか?
$count{$str}++;
>>612 上のスクリプトを設置しても白い画面しかでないのよ。。。。
どうすればいいんでしょ?
>>611 gzipのパスをハードコードしているあたり、厨臭いね。
615 :
名無しさん@お腹いっぱい。 :01/11/16 23:31 ID:Vio0g6gm
616 :
名無しさん@お腹いっぱい。 :01/11/17 01:19 ID:uArXD8kd
<font style="color: blue; text-decoration: underline; cursor: hand;" onmousemove="ブラクラのコード"> エロ画像 </font> とかってできちゃう掲示板多いよね。 IEとかNetscape6ならonmousemoveが動いちゃうみたい。NN4は大丈夫だった。 JavaScriptが書けるとなればね。文字列'\x3C'に対応してない掲示板も多いしさ。 ブラクラどころか脆弱な他の掲示板を自動で荒らしたりするのも簡単に出来そう。 別ウィンドウ開きまくって、そこにフォームとJavaScriptを出力してsubmitとかさ。 これはさすがに試してないから確証は持てないけど。 ま、もとの掲示板のサーバサイドのデータには影響はないだろうけど、周りに迷惑 かける。自分でタグ許可したCGI書いてる人はこれを気をつけるべきかも。 またfontタグ使える掲示板をレンタルしてる人は、掲示板を変えたほうがいいね。 Aタグもさ<a href="javascript: 〜">できちゃうところあるしね。 とりあえず、みんなJavaScriptをオフにしようぜ。
<font id="〜" とかやっても面白そう。
619 :
名無しさん@お腹いっぱい。 :01/11/20 12:41 ID:QRDBiFEv
PCとiモードの表示ページをCGI、SSIを使わずに振り分ける方法って ありますか?.htaccess、mod_rewrite 等を使って。お願いします。
620 :
名無しさん@お腹いっぱい。 :01/11/20 12:47 ID:P5HRzifJ
日替わりで/ランダムに、画像を表示するようなCGIってありますか?
622 :
620 :01/11/20 13:43 ID:P5HRzifJ
ありがとうございます。早速探してみました。 ランダム表示や、時間で切り替えするものはあったのですが、 日替わりでランダムに表示するというものは見つかりませんでした。 他のCGIを参考に作ってみます。
623 :
RA・イール :01/11/20 14:47 ID:iGD3kXDD
不等号の"<"をブラウザで表示させる為に"<"を"<"に変換させて表示しています。 しかし、"<"後ろに文字を入れた場合にIEではちゃんと表示されるのですが ネスケだと変換されずに"<"となってしまいます。 どうにかならないでしょうか?
624 :
RA・イール :01/11/20 14:49 ID:iGD3kXDD
623です。 すいません。間違えました。 不等号の"<"をブラウザで表示させる為に"<"を"&lt"に変換させて表示しています。 しかし、"<"後ろに文字を入れた場合にIEではちゃんと表示されるのですが ネスケだと変換されずに"&lt"となってしまいます。 どうにかならないでしょうか?
"<" は "<" に変換すべき (セミコロン)
626 :
625 :01/11/20 14:51 ID:???
失敗した。 "<" は "<" に変換すべき (セミコロン)
627 :
625 :01/11/20 14:51 ID:???
駄目だ。氏ぬわ。
629 :
RA・イール :01/11/20 15:42 ID:iGD3kXDD
>>625 さん
ありがとうございます。
どうやら解決したようです。
630 :
628 :01/11/20 15:47 ID:???
あ、ブラウザで見たらちゃんと出来てたよ。 かちゅだとダメだね。
631 :
名無しさん@お腹いっぱい。 :01/11/20 16:40 ID:9GBu+RPX
データを収集するCGIを作ってるんだけど、データファイルを外から読めないようにしたいんで、読み込み専用CGIを作って、 <a href="read.cgi?password=pw">DL</a> みたいなことをやると、「ファイルを保存」できるようにしたいんだけど、どうすればいいでしょうか。 データがCSV形式なんで、 open(FILE,'<datafile.cgi'); @file=<FILE>; close(FILE); print"Content-type: text/csv\n\n"; for($l1=0;$l1=$#file;$l1++) { print $file[$l1]; } なんてことやってみたけど、見事に失敗(ファイルにアクセスしています…から進展不能)。鬱だ…。
ぉぃぉぃ > for($l1=0;$l1=$#file;$l1++) まさか無限ループ?
633 :
名無しさん@お腹いっぱい。 :01/11/20 17:36 ID:VUf3ducM
URLの最後に?以下ではなくて/以下でパラメータを渡す場合って、 どのように解析するんですか?
634 :
631 :01/11/20 17:45 ID:???
635 :
初信者 :01/11/20 19:15 ID:vSnM22q1
こちらに誘導していただきました。早速ですが質問させて下さい。 現在、Perl言語によるCGIスクリプトを勉強しています。 既にその為の書籍3冊を買い、必要に応じて読みながらCGIを書いております。 他の既存スクリプトを見ながら目下理解に努めておりますが、本に書いていない 変数や命令が結構あり、行き詰まる事が多いです。 そこで本題なのですが、$ENV〜で綴られている環境変数全てを知りたいのです。 どちらかで見かけたよという情報や、この本に全て書いてあるという情報を 教えていただくか、誘導していただけると有り難く思います。 宜しくお願いします。
637 :
初信者 :01/11/20 19:31 ID:???
>636さん foreach(keys %ENV){print qq($_\t$ENV{"$_"}\n);} とかでは、例えば$ENV{"TZ"}等は宣言していないと出てこなかったり しませんか?それが疑問に思える部分でもあるのですが。 それで自分も検索したのですが、どうしても全ては一緒に出てきにくい です。一体$ENV〜の定義はどこで決められているのでしょう?
Web経由でTZなんかSetされてても意味無いじゃん コンソールで出ないなら設定ファイル書き変えれ
639 :
初信者 :01/11/20 21:41 ID:???
>638さん 貴重なご意見ありがとうございました。 その2行の中でさえ解らない言葉があるので、もっと勉強して精進します。 お手を煩わせてもうしわけありませんでした。
642 :
635 :01/11/21 00:51 ID:???
>640さん 確かにENVでした。
644 :
名無しさん@お腹いっぱい。 :01/11/21 01:38 ID:O3sag41p
たとえば$dateをまわすと12 12 12 13 13 15 15 15 15 とカウントログが出てくるものを 12日 3 13日 2 14日 4 と過去ログ日別集計の組み方はどういった考え方なのでしょうか?
こんな感じ? @date_ary = qw(1 1 1 4 4 2 1 1 2 4 4 3); $cnt{$_}++ for(@date_ary); print "$_ は $cnt{$_} 回です\n" for(keys %cnt);
646 :
名無しさん@お腹いっぱい。 :01/11/21 02:40 ID:O3sag41p
>>645 あ!できました。ありがとうございました。
647 :
名無しさん@お腹いっぱい。 :01/11/21 03:57 ID:b0qb5jcy
form.htmlから受け取ったデータをaa.cgiで処理し、同じデータを 次にbb.cgiに渡して処理させるにはどうすればいいのでしょうか? aa.cgiで処理が終わってからhtmlを出力してformから受け取った 値をhiddenにしてaction=bb.cgiというやり方ならわかるのですが、 それだともう一度submitを押さなければいけないですよね? スマートな方法はないでしょうか?
>647 aa.cgiから,locationでQUERY_STRINGつけて飛ばすとかかなぁ。 けど,スマートにやるならそもそもの設計を考え直したほうがいいと思われ。 Perlなら,aa.cgiからbb.cgiをrequireするとか,doするとか。
bb.cgiをaa.cgiにy&pする(ワラ つーかbb.cgiからreturnした時にどうしたいかによる system、exec辺りで無責任にキックしても良いのか?
650 :
:01/11/21 09:10 ID:???
>>649 y&p
ってなに? 。。。viのことか(鬱
>>650 そのベンチ取ってる奴はアホ。
転送が遅いってのがよく分からんけど、様は応答部分も自分で吐く必要が有るなら
それなりに意味が有る。 広告クッキー飛ばしたい時とか w
何かNPHって凄いらしい!!! とか思ってるならヤメトケ
君HTTPの応答コード全部知ってるの??
653 :
↑ :01/11/21 10:28 ID:???
レスポンスヘッダの事? 別にCGIで全ての通信をするわけじゃなし、いいんじゃないの?
全部は言い過ぎだろけど、逆にその辺知らなくてNPHで何するの? と言う気はするね
>654 俺はちょっとした細工の為に使ったりしてるね。 演出というか。 sleepと組み合わせて。 やっぱり鯖負荷大きいのかな?
656 :
647 :01/11/21 13:45 ID:???
657 :
名無しさん@お腹いっぱい。 :01/11/21 15:38 ID:8hrOmW/v
>>655 そういう演出って自己満足だったりするんだね。。。
>>653 全ての通信の意味がわかりませんが。
nphなCGIは「完全な」HTTPレスポンスヘッダを返す必要があります。
HTTPのバージョンとかにも対応してたらそれなりに面倒。
どうしてもヘッダを好き勝手に弄りたいなら別だけどそうじゃなかったら
NPH使う意味無いよ。Apacheに任せておいた方がラク。
>>655 それはもはやNPHとは関係ない・・・
659 :
_ :01/11/21 16:12 ID:rCaQvMxZ
jpsとサーブレットみたいに、雛型のHTMLに値を埋め込んで HTML出力って、CGIでできますか?教えてください。
661 :
_ :01/11/21 16:31 ID:rCaQvMxZ
>>660 ありがとうございます。
どこかのサイトにサンプルとかないでしょうか?
663 :
_ :01/11/21 16:54 ID:rCaQvMxZ
apacheって設定しないといけないモジュールってあるの?
apacheのモジュールについてなら板(or スレ)違い。 perlのモジュールについてなら無い。
665 :
_ :01/11/21 17:13 ID:rCaQvMxZ
>>664 apacheの標準でHTML::Templateが動くってこと?
666 :
:01/11/21 17:16 ID:???
>>665 ハァ?HTML::TemplateはApacheとは何ら関係ありません。
667 :
_ :01/11/21 17:22 ID:rCaQvMxZ
>>666 スマソ。説明不足。webサーバをApacheにして
cgiでHTML::Templateを動かす場合について、必要なものは?
>>667 HTML::Templateモジュール
670 :
_ :01/11/21 17:30 ID:rCaQvMxZ
スレ違いかもしれませんが、確認はhttpd -lでいいの? mod_perl.cは今、入ってませんが。
671 :
:01/11/21 17:34 ID:???
>>667 以下のPerl標準モジュール
integer
strict
Carp
File::Spec
vars
>>670 何の確認?
ApacheのモジュールじゃないんだからHTML::Templateの有無は
そんなのじゃ調べられんよ。
672 :
_ :01/11/21 17:39 ID:rCaQvMxZ
ちったぁ自分で検索とかして調べろや。 perl -M(モジュール) でエラーが出なけりゃ大丈夫。HTML::Templateの場合は perl -MHTML::Template つーかPerlのモジュールとApacheのモジュールの区別がつかないのは 致命的だから要らん事止めとけ。
674 :
_ :01/11/21 17:54 ID:rCaQvMxZ
>>673 ありがとうございます。よくわからないので、いまのところ
テンプレートを使わずに、変換で逝きます。
やさしくご指導していただいて、ありがとうございました。
675 :
655 :01/11/21 19:13 ID:???
>657 その機能を利用するかどうかは利用者に選ばせてる。 CGIゲームの結果を一気に表示するか少しずつ表示するかの違いでね。 1画面に入ってしまう程度の結果だから、少しずつ表記されるとドキドキして楽しいんだ。 >658 自分でも良くわかってないんですが、どう関係ないんでしょう? また、NPH以外でそれを表現できるとしたらその方法を教えてください。
何でsleepにNPH(w Modified絡みとかでサーバのヘッダ使えない時くらいしか 考えつかないな ヘッダなんて知ってるのだけで良いじゃん?超はやい〜 て言うのは、ちょっと酸っぱいと思う。 そゆ事はお家の中でしてて下さいですです
677 :
655 :01/11/21 19:32 ID:???
>676 画面の表示を遅らせたいからです。 一度に表示されないように。 >Modified絡みとかでサーバのヘッダ使えない時くらいしか ここ、少し説明していただけますか? もし別のやり方でできるならそっちも検討してみたいです。 よろしくおねがいします。
何か良くわからんけど頑張ってくれ、 昔のApacheって出力バッファしてたみたいだけど 俺はズイタミ位しかしらないなぁ それともconfにそんな設定が有るのか
とにかく(今の)Apacheはバッファリングしないんだから、
CGI側でバッファリングしなければお望みどおりだよ。
#
>>678 ズイタミ って何?
680 :
655 :01/11/21 20:30 ID:???
nphじゃないスクリプトにしてローカルで試してみましたが上手くいきませんでした。 一応もう一度説明をすると print qq(ヘッダとか); print qq(100m走スタート!<br>\n); sleep(1); print qq(10m突破!<br>\n); sleep(1); print qq(20m突破!<br>\n); sleep(1); ・ ・ ・ sleep(1); print qq(ゴール!<br>\n1位は○○さんでした!<br>\n); こんな感じで、1秒ごとに途中経過の出るスクリプトです。 (要点のみ抽出する為に途中の処理説明は省きました) 今まではnphを使ってそれを表現していました。 nphじゃないスクリプトにして$|=1;を入れて試した方では こちらの望む結果にはならず、10秒後に結果が一度に表示される ようになってしまいます。 nph以外のやり方があるのでしたら教えてください。 よろしくお願いします。
proxy通してる?・・・ローカルだし、そんなわけ無いか。 とりあえず、使ってるHTTPDのバージョンは? #!/usr/bin/perl $| = 1; print "Content-type: text/plain\n\n"; for (0..9){ print $_ . "\n"; sleep(2); } うちはこれでOKだったよ。Apache/1.3.20 on Linux
>>681 のスクリプトを動かしてみたら
規定時間後に一気に表示されたよ。
リロードしたらねらい通りに表示されるから
ブラウザの問題かも。
fub(IE6.0)
683 :
教えてください :01/11/22 08:20 ID:NGnYufgL
JavaScriptのJSファイルを
CGI(Perl)で書き換えようとしています。
ためしにHTMLで出力してみたら、
日本語が文字化けします
(こんな風に
http://www.ae.wakwak.com/~paryan/cgi-bin/manage.cgi )
ちなみにJSファイルはUnicodeで書いています。
Jcode.pmを入れ
Jcode::convert(\$_, 'euc', Jcode::getcode(\$_), "z");
とはやってみたのですが変わりません。
正しく変換するにはどうしたら良いのでしょうか?
> スレ立ったんじゃ〜!!コラー!(もっとー!!) > スレ立ったんじゃ〜!!コラー!(もっとー!!) > スレ立ったんじゃ〜!!コラー!(もっとー!!) > ビデオがスロー再生できなくなりました。(ペコ)
685 :
655 :01/11/22 08:47 ID:???
>681
プロクシ通してました・・・。
Proxomitronを使っていたもので。
でも、プロクシを外しても同じ結果になります。
ローカルのHTTPDは恥ずかしながら
http://www.st.rim.or.jp/~nakata/ こちらのAN HTTPDを使わせてもらっています。
OSはWin2kです。
>682
うちはIE5.5でリロードしても一気に表示されました。
ブラウザに依存しないと効果が得られないというのは避けたいので
ブラウザ限定だとするとやはり諦めないといけないですね。
・・・ブラウザ限定でいいならJavaScriptとかを使う手もあるので。(^^;
686 :
683 :01/11/22 08:52 ID:7hXo+AWR
$| = 1; $uniq = "((($$ 他と重複しない文字列 $^T)))"; print "Content-Type: multipart/mixed; boundary=$uniq\n\n"; foreach $time(10,20,30,40,50) { print "--$uniq\n"; print "Content-type: text/html\n\n"; print "<html><head><title>時間</title></head><body>\n"; print "$time秒たったよー\n"; print "</body></html>\n"; sleep(10); } print "--$uniq--\n";
あ、これは表示がどんどん切り替わっちゃうのか? 失礼。
同じ処理をするのにCGIとSSIでどちらが小さい負荷で済みますか?
>>689 SSIとは何か。調べなおしてみると
幸せになれそうな気がします。
>>685 ブラウザは拾ったパケットはどんどん表示するでしょ。
その為にインターレースが重宝されたりNCのTableが遅いとか言ってるんだから
今時IEにそんな事してなんの意味が有るのか・・・
受信量見てれば分かるだろ
それはHTTPDがキャッシュしてるから設定出来れば直せばいい
>>691 実際、受信はsleepの通りに数秒ごとにするよ。
その間ブラウザは何も表示しない。
一度試してみれ。
変だな。。ざっとIE5 5.1 5.5 6beta 辺りならOKだぞ(当たり前か) つーか、そのブラウザは長い(500KB)位のHTMLを見るとき 受信完了まで表示されないのか? 2chのログとか 何か根本的に間違えてない??
>685の文を見るとProxyは外したけど、Proxomitronは通してるって事? だとするとProxomitronが置き換え終わるまでブラウザには送られないはず
とにかく、最近のApacheではCGIからの出力をバッファリングしないので、 NPHだろうか無かろうが関係ない。他のHTTPDはしらない。 Proxyだとか、ブラウザの問題もNPHとは関係ないでしょ。
696 :
689 :01/11/22 17:46 ID:???
>>890 調べなおしてみましたが、幸せになれませんでした。
結局どっちなんでしょうか?
ちなみにアクセス解析する場合です。
>>696 幸せを願う気持ちが足りないのです。
もっと祈りましょう。
698 :
名無しさん@お腹いっぱい。 :01/11/22 18:39 ID:Lzgwr3Yn
sendmailなんですが、以下のままだとFromのNAMEの次に「@サーバ名」 が付いてしまいます。NAMEだけにしたいのですが出来るでしょうか? my $temp=$_[0]; my $mail; if ($m_sendtome){$temp.=" , $m_mailad";} $mail = "To: $temp\n"; $mail .="From: NAME\n"; $mail .="Subject: 登録完了\n"; $mail .="Errors-To: $m_mailad\n" if $m_sendtome; $mail .="Content-Transfer-Encoding: 7bit\n"; $mail .="Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n"; $mail .=$_[2]; &jcode::convert(\$mail,'jis'); open (OUT,"| $sendmailpath -t") || die &error("sendmailが使用できませんでした。"); print OUT $mail; close (OUT);
( ´,_ゝ`)
700 :
655 :01/11/22 19:04 ID:???
>693 いえ、2chとかは受け取った順に表示されます。 こちらの設定の問題でしょうか? >694 Proxomitronを「バイパス」にして試しました。 IEの設定で「プロクシサーバーを利用する」のチェックを外した方での チェックも行ないましたが、結果は変わりませんでした。 AnHttpdだとダメなだけでしょうか?
Apacheでやってみれば?1.3.* で。
>>700 こっちが聞きたいよ、上のやりとり見てわかんない?
まずサーバで詰まってるかクライアントが受け取ってからなのか確認しろよ
703 :
初心者です :01/11/23 00:06 ID:W/j9dBl/
設置した日記帳CGIがバージョンアップされたのですが、 ログをコンバートしないと過去ログ参照ができないとのこと。 そのコンバート用CGIをDLして実行したのですが、 どうしてのサーバエラー(500)が出ます。 そのCGIの制作者さんは「コンバートCGIについての質問禁止」と 書いてらっしゃるので、質問も出来ません。 こういうことはここで聞いてもよろしいのでしょうか……?
704 :
655 :01/11/23 00:13 ID:???
>701 DLしてみたのでこれから導入を試みようと思います。 英語が読めないと厳しい・・・。 >702 その確認はどうやって行なえばいいのでしょうか? NN4.7で試しても同じだったのでサーバーサイドの問題のように感じます。 Apache導入後に改善されればサーバーのせいという事ですよね? 何か根本的に間違ってるのかな? nphでは一度に表示されず、きちんと順番に表示されてくれます。
702は確認の仕方を言ってるんだよ パケットが届いてないならサーバ側のストリームかソケットでバッファリング されてる(サーバの問題)、逆に届いてるのに表示出来ないならクライアント側で 何らかのバッファリングがされてる**だろう**と その調子で全ての組み合わせを試してもいいけど・・・ >何か根本的に間違ってるのかな? はい Q「小錦を乗せたら車がパンクしました!小錦が悪いですよね」 A「釘踏んだんじゃないの?」
706 :
655 :01/11/23 00:37 ID:???
>705 その確認の方法がわからないのでできればご教授願えないでしょうか? パケットが届いているかどうかは「ページが表示されるか否か」以外に どのように確認すればよいのでしょう? 自分の知識ではバッファリングがどちらでされているか識別する 手段を知らないので・・・。 どうかよろしくお願いします。
他の計算機が相手ならコントロールパネルの接続の何たら とかを
ダブルカチカチしてそれを見る
ループバック(自分自身)ならTELNET 127.0.0.1 80
とかしてGET
http://127.0.0.1/test.cgi HTTP/1.0 とかすれば
708 :
名無しさん@お腹いっぱい。 :01/11/23 06:16 ID:MWG/gHEF
2chのトリップ生成アルゴリズムどうなってんの? cryptに渡すsaltの作り方。
>708 漏れが使おうとして諦めたやつ(w 一応出来る。 # トリップ________________________________________ { $FORM{'name'} =~s/◆/◇/g; $FORM{'name'} =~s/★/☆/g; $FORM{'name'} =~s/削除/"削除"/g; $FORM{'name'} =~s/sakujyo/"sakujyo"/g; $FORM{'name'} =~s/管理人/"管理人"/g; $FORM{'name'} =~s/管直人/"管直人"/g; $FORM{'name'} =~s/菅直人/"菅直人"/g; # トリップ my ($key,$salt); if($FORM{'name'}=~/#(.+)/){ $key = $1; $salt = substr($key."H.", 1, 2); $salt =~ s/[^\.-z]/\./go; $salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/; $FLAG{'trip'} = substr(crypt($key, $salt),-8); } $FORM{'name'} =~ s/#.*//g; $FORM{'mail'} =~ s/#.*//g; if($FLAG{'trip'}){ $FORM{'name'}.=" "if($FORM{'name'}); $FORM{'name'}.="<trip>"; } $FORM{'name'} =~ s/<trip>/◆<\/b>$FLAG{'trip'}<b>/g; }
710 :
708 :01/11/24 00:50 ID:???
これ以前やって見たけど、今使われてるルーチンと違うみたいで2chと同じにならないっす。 現役の知ってる人いないですか? こればっかりは考えてもどうしようもないからねぇ。
ラウンジのトリップスレで聞いてみたら?
713 :
708 :01/11/25 01:13 ID:???
みなさんありがとうございます。
>>721 さんのが現役でした。
感謝感謝です。
714 :
ごーりー :01/11/27 16:47 ID:fa0ZG/aY
みなさんこんにちは。 JPEG画像の元となるバイナリコードを読み込ませて 画像表示をしたいのですが、うまく動作せずに困っております。 HTMLにおいては <IMG SRC="test.cgi" BORDER="0" NAME="test" WIDTH="320" HEIGHT="240"> というように記載し、cgiファイルを呼び出すようにしております。 以下にcgiファイル内容を示します。 DOSウィンドウではバイナリデータは出力されている様子が 確認できるのですが、ブラウザページでは画像表示されません。 解決策をご検討頂けないでしょうか? よろしくお願い致します。 #include <stdio.h> #include <string.h> int main() { char buf[32]; static const unsigned char img_data[] = { 0xff, 0xd8, 0xff, 0xe1, 0x22, 0x48, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0b, ...(バイナリデータ省略) }; printf("HTTP/1.0 200 OK\015\012"); printf("Content-Type: image/jpeg\015\012"); sprintf( buf, "Content-Length: %d\015\012", sizeof(img_data) ); printf( buf ); printf("\015\012"); fwrite(img_data, sizeof(img_data), 1, stdout); return 0; }
>>714 freadってバイナリだよな、、Dosだとなんか切り替えないとダメなんじゃない?
取り合えずLinuxで同じ様にやったら全然OKだったから。
binmodeみたいなのってないのかな
716 :
名無しさん@お腹いっぱい。 :01/11/28 04:05 ID:gaWkjkd6
いろいろなサイトでよくNGUserIDというクッキーを食べさせられます。 session管理かなにかに使っているような感じなのですが、NGUserIDという名前のクッキーが色々なサイトで使われているということは、そういう製品があるんでしょうか? それともASPなどのようにデフォルトのセッションIDの名前がある言語で構築されているからなのでしょうか?
すみません、Perlのわかる人ってオープンソースのフリー掲示板(例えばKENTの YY-BORD)の管理人でもないのにログのファイル名や管理者用マスターパスワー ドを見れるのですか?
718 :
24 :01/11/28 04:27 ID:???
>>717 設定が良くないサーバなら、見れる**事もあります**
そう言うサーバで無くても、テキストファイルが配布のままの名前だったり
すると見れます(^^
後、力技を使える人になると更に覗かれる可能性は高くなります
暗号化したパスワードを保存するようなタイプに変えてみて下さい。
クッキーが、、、
721 :
717 :01/11/28 04:57 ID:???
>>718 速レスありがとうございます。ログのファイル名はさすがに変えてます。
ユーザ権限でCGIが動くサーバなら、cgiファイルのパーミッションを 700、 ログファイルを 600にしておけば、そのサーバの管理者以外には覗かれません。 (CGIにバグがある場合やクラックされたりした場合は除く) KENTとか大手のCGI配布サイトは面倒なのか知識が無いのか(後者だと思う)、 そういった説明をしてないところが多いですね。
723 :
ごーりー :01/11/28 10:04 ID:3qh7gXMt
>>715 切り替えってどういうことなんでしょうか?
確かにfwrite、freadはバイナリの読み書きを行いますが
どうしてここでfreadが出てくるのでしょうか?
当方、初心者で申し訳ありませんが、教えて頂けると幸いです。
>722 kentは説明あったような気がする ていうかそれ位知ってるだろ
726 :
名無しさん@お腹いっぱい。 :01/11/28 16:19 ID:expdhAC8
IISで、CGI(Perlスクリプト)を使ってローカルファイルを 書き換えようとしています。 ディレクトリのセキュリティで、誰に書き込み権限をあたえれば 良いのでしょうか? ひとまずEveryoneにしたのですが なんかちょっと気持ちが悪いなぁと。
すみません IISのエラーログってどこでしたっけ?
728 :
名無しさん@お腹いっぱい。 :01/11/29 10:43 ID:1v/ZIGN2
ApacheでもW2kサーバでも%ENVの中身って一緒ですか?
729 :
ごーりー :01/11/29 10:50 ID:W8pdf87M
>>714 setmode( fileno(stdout), O_BINARY );
をfwriteの前に挿入しましたところ、無事表示できました!
やはりバイナリ出力にする必要があったみたいです。
お騒がせしました m(._.)m
>>726 Win2KでApache使ってるけど、ローカルファイルを書き換えるのに
ディレクトリのセキュリティなんていじったことないよ?
ローカルファイルの書き換えって掲示板のログ書きだしとかだよね?
IISだと変更が必要なのん?
データのバックアップ等でサーバー内にファイルを残すのではなく クライアント側にファイルが残るのがありましたがあれってどうやって るんでしょう?
自作のチャット(PERL)を共用サーバで使ってるんですが 何とかして軽くする方法は無いでしょうか CGI自体の自由度はかなり高いのですが、mod_perlなどは 使えないのです。コードは削れる所は全て削ったと言う感じです
さげてしまった、上げさせてもらいます アドバイスお願いします m(_ _)m
Cで書き直す。
735 :
名無しさん@お腹いっぱい。 :01/11/29 21:54 ID:/CaefElc
画像UP機能付の掲示板をプロパのサーバに設置したんですが、テキストなどは 正常に書きこめるのですが画像データが正常に表示されません。 原因を調べてみたのですが、どうやらサーバにULした画像データのパーミッションが 600になっているのが原因みたいです。 画像データを入れるディレクトリは707になっているのですが、なぜかULした画像データは 600になってしまいます。 質問なのですがCGIが新規に作成するファイルのパーミッションは通常どのように 決定されるのでしょうか? 今のところCGIを修正してchmodでデータファイルのパーミッションを書きかえる ようにして動かしています。
736 :
名無しさん@お腹いっぱい。 :01/11/29 22:39 ID:/dTb+5XA
Win2K→WinXPにしたら、refererが渡らなくなってしまいました。 IIS5.0のPerlスクリプトで、CGIの呼び出し元のファイル名を 知りたいのです。refererしか方法ないですよね??? 誰か助けて下さい。号泣。
>735 umaskで検索しよう、ディレクトリなら777、ファイルなら666から 引き数の値を引いたのがデフォルトの属性になる。 ただし8進表記なので変数の値を使う時はhexとかで加工すること >736 送受信のどっちが出来ないの? どっちにしても本当だったら大変だけど・・・
octだった・・・
739 :
735 :01/11/29 23:40 ID:/CaefElc
>>737 回答ありがとうございます。
質問のしかたが悪かったです。
CGIで作成されるファイルのパーミッションのデフォルトはどこで設定されて
いるのかということが知りたいのです。
umaskは現在の設定確認と設定変更はできますけど。どこで設定されたのかはわから
ないですよね?
何ヶ所か違うサーバで確認したのですが大抵は644がデフォルトのようでした。
多分httpdの設定だと思うのですが、問題のプロバイダのhttpdはApacheのようです。
>>739 だからumaskで検索してみれば見つかると思うよ。
システムワイドでってことなら普通 /etc/profile とか。
レスポンスが重要であるチャットに圧縮の手間掛けてどうする。
>>735 デフォで600は変
そのままで動かんCGIが結構あるとおもう。
鯖缶に聞いてみたら?
>>739 >>741 ApacheならsuEXECで設定されてるんじゃない。
suEXECのconfigure時のオプションで設定できたと思うよ。
どうも、皆さん親切なレス感謝です。
>>734 Cで書いたのも有るんですが、何か機能を付ける時とかに一々面倒で・・・・
C -> 元々軽い上更に簡単なのしか書かないから軽い、perl -> 重い物に機能付加するからさらに重くなる
みたいな感じで、perlのテキスト処理は捨て難いです・・
>>740 JavaってCPU負荷軽いですか? 何かマイナスイメージが (^^;
>>742 今zlibなんで・・
結局バイトコード辺りが落し所かなと思って、B::のモジュール漁ってるんですが
今一つです・・ うーん
>>745 言い方が悪かった。サーバーサイドのJavaじゃないよ、、、
それなら、Cで作った方がいい。
Javaアプレットにして、処理をクライアント側に分担させれば、
鯖負担は少なくなるって事を言いたかったの。
Javaチャットってやったことない?
そこまで出来るならこんなのはどうだ、port1025〜は使えるか? エントリーフォームで実行ファイルをキックして指定portにbind 後はそのportでacceptしてhttpd+チャットの動作をする、 適当にタイムアウトを設定してね。 計算機の負荷は知らないが、最悪mod_perlレベルにはなるだろう 俺も昔遊びで書いたが、perlなら最大の癌で有るメモリ管理をサボれる のがミソ、共用サーバでCの実行ファイル常駐させるのはヘボな俺には怖かた(w 勿論プロセスの管理はちゃんとする事、お行儀良く例外を書いて 子プロセスはきっちり殺さないと、ROOTもその辺には敏感に違いないからね
追: バイトコードじゃ全然ダメだろ? あれはまだ遊びの域を出てないような(ccも含めて 5.7は試してみた?
749 :
名無しさん@お腹いっぱい。 :01/12/01 16:05 ID:ESFQEy4i
UAで Mozilla/3.01 (compatible;) て何のOS、ブラウザ?
750 :
名無しさん@お腹いっぱい。 :01/12/01 20:39 ID:wxYAHJpW
おいCGIよ、お前は何でHi-Hoじゃうまく動いてくれないんだ?
751 :
名無しさん@お腹いっぱい。 :01/12/02 21:19 ID:WIp9VDLZ
サーバー上に↓のようなプログラムを常駐させたいのですが 負荷とかどうなんでしょうか?いつか落ちてしまうんでしょうか? while(1){ 処理 sleep(1000); }
753 :
bashでCGI :01/12/02 21:39 ID:0i+uRySh
bashでCGIを作った場合で、formタグからの値を受け取るにはどうしたらいいのでしょうか?
webで調べてもなかなか無くて・・・。formの仕様は以下のような感じです。
<form method=post action=
http://xxx.xxx.xxx/cgi-bin/test.cgi?del >
pass:<input type=password name=pwd size=4 maxlength=8>
<input type=submit value="削除"></form>
こういう時は必ず cron というレスが付くものだよね。
755 :
754 :01/12/02 21:42 ID:???
>751のことね。
プロクシがMozillaのマネして吐くらしい
757 :
753 :01/12/02 22:03 ID:0i+uRySh
ちょっと説明不足だったかも・・・。 受け取りたいのは入力されたpwd。 $QUERY_STRINGとすると?の後ろに付いているdelという文字列しか見れないんです。
test.cgi?del ↓ test.cgi?del& にしてみそ つーかそん位ならtest.cgi?del+pwd+hoge とかすれば$@に入ったりして ^^
759 :
753 :01/12/02 22:20 ID:0i+uRySh
>758 それだと$2にpwdっていう文字列が入ってるだけになってしまうんですけど・・・。 なにかこちらの手違いなのでしょうか・・・?? test.cgi?del&とした場合にどの変数にはいるのか、 test.cgi?del+pwdとした場合にどの変数にはいるのかを詳しく教えていただけませんか?
760 :
753 :01/12/02 22:31 ID:0i+uRySh
もしかしてまだまだ説明不足だったかも!?!? 受け取りたいのはpwdと名付けられた、ユーザが入力した適当な文字列なんです。
ああ、パスワードだと./ が入れるだろから駄目か QUERYでやってみてくれ 分割は自分でね
763 :
753 :01/12/02 22:45 ID:0i+uRySh
test.cgi?del+pwdってやって$QUERY_STRINGだと「del+pwd」しか入ってませんよね?? pwdっていう文字列自体じゃなくてユーザの入力した文字列が欲しいんですけど・・・。
ああ、そりゃ無理だよ、フォームの値欲しいならQUERY使えって cgi?pwd=hogehoge&dum=del とでもしとけば? <input type=hidden name=dum value=del> を足す、?del&にフォーム使ってアクセスするとdelは上書きされちゃうんだねー (無責任
765 :
753 :01/12/02 23:09 ID:0i+uRySh
cgi?pwd=hogehoge&dum=del のhogehogeの部分はユーザの入力なのでformのactionには書きようがないですよね?? <form method=post action=./test.cgi> <input type=password name=pwd size=8 maxlength=8> <input type=hidden name=dum value=del> <input type=submit value="削除"></form> としてパスワードを入力して送ってもらっても、$QUERY_STRINGには何も入らないんですよ。 Perlだといけるんですけどbashだと受け取れない・・・何故でしょう??
766 :
753 :01/12/02 23:34 ID:0i+uRySh
methodをgetにしたら入っちゃいました。($QUERY_STRINGで見れた。) QUERY使うならget・・・基本でしたね・・・すいません(−−;
telnet使えないという事はcronも使えないということでしょうか?
同一IPをカウントしないカウンターのCGIくださいいい
perlのcgiで右クリック禁止はどうやるんですか?
773 :
名無しさん@お腹いっぱい。 :01/12/03 06:42 ID:SgyYaXWf
CGIカウンターなんですが、文字カウンターで昨日今日今までを表示して、 プロバイダがEXECコマンド非対応(SSIは対応)なので、 HTMLへの記述にEXEC以外のコマンドを記述したカウンターは無いでしょうか。。 改造するにしてもスキルが無いので。。初心者で申し訳ないです。。。。
775 :
名無しさん@お腹いっぱい。 :01/12/03 10:32 ID:a0+tpzzn
formからパスワードを送らせて認証させたくないんだけど、 サーバがhtaccessを許可してどうしようもない。 で、cgiでHTTPをはかせてhtaccessのベーシック認証みたいな ダイアログをブラウザ側に出させて、認証させたいんですが、 どうやったらいいのでしょうか?いろいろ探したのですが 見つかりません。 もしくはその他よい認証方法があったらよろしくお願いします。
776 :
名無しさん@お腹いっぱい。 :01/12/03 10:34 ID:qfFD5lqR
formからパスワードを送らせて認証させたくないんだけど、 サーバがhtaccessを許可してなくてどうしようもない。 で、cgiでHTTPをはかせてhtaccessのベーシック認証みたいな ダイアログをブラウザ側に出させて、認証させたいんですが、 どうやったらいいのでしょうか?いろいろ探したのですが 見つかりません。 もしくはその他よい認証方法があったらよろしくお願いします。
2重カキコすまソ
PHPが使えるなら可能。使えないなら不可能。
779 :
771 :01/12/03 15:07 ID:???
>>772 タイムスタンプ見れば海外Proxy経由でのアクセスだと判断できる
質問スレで騙り荒らしはヤメ〜レ
つう訳で
>>771 の質問は継続中・・・
781 :
名無しさん@お腹いっぱい。 :01/12/04 09:45 ID:Pr6K5CCE
むちゃくちゃ基本的な質問かもしれませんが、 一応自力で掲示板とか作成出来まして、次はメールフォームなど 置こうかと思うのですが、メールフォームのスクリプトのファイルは 掲示板のファイルと同じディレクトリに入っても大丈夫なんでしょうか? #!/usr/local/bin/perl ←こんな所とか‥。
>>781 >掲示板のファイルと同じディレクトリに入っても大丈夫なんでしょうか?
何処に置こうが勝手にしたまえ。
> #!/usr/local/bin/perl ←こんな所とか‥。
意味不明。
>>781 本当に掲示板を自作したのかと問(以下略)
784 :
名無しさん@お腹いっぱい。 :01/12/04 20:05 ID:7lgd/V/R
HTMLで <input type="submit" name="ayaya" value="送信1"> <input type="submit" name="hoyoyo" value="送信2"> とした場合 CGI側でどっちのボタンを押したかどうか 見分ける方法はありますか?
785 :
754 :01/12/04 20:39 ID:???
>784 $FORM{'ayaya'}と$FORM{'hoyoyo'}のどっちに変数が入ってるか調べればいいだけでは? perlなら if($FORM{'ayaya'}){処理A} elsif($FORM{'hoyoyo'}){処理B} else{print qq(送信ボタンを押してね);}
786 :
784 :01/12/04 20:52 ID:7lgd/V/R
require 'cgi-lib.pl'; &ReadParse(*answer); じゃ駄目ですよね?
>784-786 なにをしたいんだ? 質問内容が全然違うぞ。
788 :
784 :01/12/04 21:01 ID:7lgd/V/R
すいません、まだ昨日CGIはじめたばかり なんであまり理解してません。 $FORM{'ayaya'} ってそのまま書くだけで使えますか? 読み込む作業はいらないんですか?
そこまで強烈な厨房はサポート外です pu
790 :
784 :01/12/04 21:39 ID:7lgd/V/R
厨房って呼ばれたの初めてです。(^^; ありがとう。 sss
require 'cgi-lib.pl'; &ReadParse(*FORM); ってしてFORM{ayaya}の中見てみろ 後は本でも読んで勉強しろ
792 :
名無しさん@お腹いっぱい。 :01/12/05 07:12 ID:dp0KYIc9
能書きかっこいいね (クス
795 :
名無しさん :01/12/05 15:53 ID:dsMVAVhB
Kent-webのponnyチャットと自分のサーバで動かしてみたのですが 発言してもその発言が消えません。 発言自動消去にチェックボックスは付いています。 Apache 1.3.22 on FreeBSD 4.4です。 確認にたブラウザはMozilla 0.9.6とIE 5.01です。 何か分りませんか?
チャットと →チャットを 確認にた →確認した
じゃぶぁすくりぷとがonになってないとか・・・(ぼそっ)
>>797 > じゃぶぁすくりぷとがonになってないとか・・・(ぼそっ)
そうでした (くそ)
800 :
784 :01/12/05 19:22 ID:d03x1fGt
なんとかできました。 ありがとう。みんなありがとう。
801 :
名無しさん@お腹いっぱい。 :01/12/05 22:52 ID:jp5xE1JZ
環境変数REQUEST_METHODについての質問です。 REQUEST_METHODの値は必ず"大文字"の文字列ですか? つまり、postやGetとなることはないですか?ということです。
802 :
名無しさん@お腹いっぱい。 :01/12/06 16:30 ID:Ft/aETKB
CGI(perlスクリプト)でエラーになったとき、どんなエラーかを知るには どうしたらいいんでしょう? apacheのログとかに何か出たりします?
error.logと あとはKCatch.pm
あるボタンをクリックしたときにHTMLをダウンロードファイルを させたいのですが、htmlファイルだとブラウザに表示されてしまいます。 何か方法はあるのでしょうか?
805 :
名無しさん@お腹いっぱい。 :01/12/06 16:41 ID:mmYvK9tC
>>804 Content-Typeをダウンロードするものにしろ。
Content-type: text/html を Content-type: html/html にするってことですか?
そりゃいいや、最高
意地悪せずに教えてYO!
>>801 環境によりけりだけど、変なブラウザや telnet 直たたきで来た場合は小文字で
来ることもあるよ。っていうかだいぶ前に試したら小文字で来た。
小文字で来るのはヘナチョコ・スクリプトなので弾いても可。
小文字くらい CGI 内部で変換してやればいいじゃん。
813 :
801 :01/12/07 00:42 ID:???
>>810 そうなんですか。ありがとうございます。
ということはstrcmp()でやるのはまずいですね。
標準ライブラリに適当な関数がないから自作するか・・・
814 :
名無しさん@お腹いっぱい。 :01/12/07 01:07 ID:ChN9PGvZ
すいません。SSIでの質問なんですが <!--#exec cgi="bbs.cgi"-->として、htmlにcgiの結果を埋め込むのと <!--#include file="bbs.cgi"-->と言うように記述して埋め込むのとでは どのような違いがあるのでしょうか?
815 :
名無しさん@お腹いっぱい。 :01/12/07 10:36 ID:OFgxfavj
例えばテキストボックスにURLを入力すると、 そのサイトの英語を和訳して表示してくれるのがありますが、 あれはどういう仕組みで動いているのでしょうか?? またCGIでも実現可能でしょうか??
816 :
名無しさん@お腹いっぱい。 :01/12/07 13:38 ID:CAIbkJ9f
>>815 プロクシじゃない?
取得した情報をそのまま表示させるものもあるけど(いわゆるCGI串)
818 :
名無しさん@お腹いっぱい。 :01/12/07 16:11 ID:6kb+FUaw
ページのテンプレート(日本語有、対象ページ100以上)を外部管理する際、 皆さんはどうしてるでしょうか? 1.外部Javascript(手直し+CGI自動生成) 2.CGIで全てのHTMLに挿入 3.SSIで全てに挿入 現在1でしてきたのですがMAC IE4.5のUTF-8でスクリプトを二重管理 するのが嫌になったので他を検討したいと思っています。 上記以外にいろいろあると思いますが、ご意見お願いします。
>>818 よくわからんけど,フォーマットを設定して,一括して全ページに反映させたいの?
それならデータファイルを別に持って,プログラム使ってHTML書き出すとか。
ログの拡張子って.logか.datか.txtが多いと思うんですが、 拡張子無しのファイルにした時の問題点ってありますか?
>820 lsとかやったとき,ディレクトリとまぎらわしい。 拡張子によるファイルタイプ判別を行っている場合,それが無効になる。 くらいじゃないかな。
822 :
818 :01/12/07 23:16 ID:lLxzwH8e
>>819 >それならデータファイルを別に持って,プログラム使ってHTML書き出すとか。
その方法としてとりあえず3つあげました。
CGIで全てのページ(100ページ以上)に挿入するか、SSI+CGIで表示毎に挿入するかと
いったところかなと思っています。
どちらもサーバに負荷がかかりますが、前者の方が更新の場合のみの負荷というわけです。
負荷を考える際、外部Javascriptがいいのですが、MAC IE4.5対策が面倒なので^^;
どなたか大型サイトを作成されてる方、ご意見お願いします。
823 :
820 :01/12/07 23:21 ID:???
>>821 めちゃくちゃ早いレスありがとうございます。
なんかセキュリティ上問題があると思ったんですが、無さそうなので安心しました。
824 :
819 :01/12/07 23:28 ID:???
>818=822 それならCGIにしなくてもいいんじゃない? 書いたみたいに,フォーマット変える度ローカルでHTML書き出すとかで。
825 :
822 :01/12/07 23:47 ID:lLxzwH8e
>>824 = 819
レスありがとうございます。
実は、昔はローカルで出してました。
実はその外部ファイルの中にはランキングなど他のCGIから
自動生成されるものが含まれています。
日々更新され、また複数の方がアップ(作業)する内容でもありますので、
ローカルで生成するというのはちょっと難しいです。
何か良い案ないでしょうか?
826 :
名無しさん@お腹いっぱい。 :01/12/08 01:22 ID:27ReWWD6
日本語対応のフリーの掲示板を設置するさいに、英語サイトにしたいとき jcode.plを無視しとけばいいんですか? それともスクリプト中の日本語2バイト文字などを全部書き換える必要がありますか?
まず試しましたか? 何か変な症状が出ましたか? その症状を具体的に書けば、助言できる人がいるかもしれません。
>826 >jcode.plを無視しとけばいいんですか? はい、当然jcodeを呼んでる所も殺さないとね >それともスクリプト中の日本語2バイト文字などを全部書き換える必要がありますか? 英語のエディタで読みたいならそうすべきです。 と言うか普通日本語は英語を包括するはずだからHTMLだけ直せば良いのでは?
charsetも変えといたほうが
>>826 「英語サイトにしたい」の意味が分からん
831 :
名無しさん@お腹いっぱい。 :01/12/08 19:08 ID:RPPlgQlE
SuEXEC環境で,自分の公開ディレクトリ~/public_html の libディレクトリに perlモジュール入れました。 use lib するときに~を使って use lib '~/public_html/lib'; みたにやりたいのですが,うまくいきません。 どうやればできますか?
832 :
:01/12/08 19:45 ID:2DZc50PH
外部から悪意あるユーザにログを削除される スレッド式BBS作って下さい (^∀^)ハハハハ
834 :
名無しさん@お腹いっぱい。 :01/12/09 02:11 ID:RAeBwH3C
835 :
814 :01/12/09 02:16 ID:vjaov0dl
やはり、
>>814 の質問の明確な答えというのは無いのでしょうか・・・
誰に聞いてもごまかされてしまうのですが。
有識な方おられましたらご教授下さい。お願いします。
本にも、全く書いて無くて、webでも明確に何処が違うというのは
記述されているのを見たことがありません。
>>835 そもそも目的が違うじゃない。
exec cgiはCGIを実行する命令。
include fileはファイルの内容を埋め込む命令。たまたま対象のファイルがCGIプログラム(として登録されている拡張子を持つファイル)だったから実行して埋め込んだだけ。
838 :
JAPU ◆JAPUTeX. :01/12/09 03:56 ID:035DNhyZ
>>831 use lib は "~" を理解しないので絶対パスで指定するか、
use FindBin qw[$Bin];
use lib "$Bin/../lib";
ってな感じでするとか。
839 :
814 :01/12/09 15:44 ID:vjaov0dl
>>836 と言うことは、ブラウザに表示される結果には違いはないという事ですよね。
ありがとうございます。
840 :
名無しさん@お腹いっぱい。 :01/12/09 20:21 ID:I4lkZ9J8
842 :
な :01/12/09 22:44 ID:nrV/NhmA
perlで日本語フォントをgifかjpgで出力するスクリプト無い? flyをいじくりまわしたがよく判らん。助けれ。
GD使え。>842
844 :
おい!CGI猿ども :01/12/10 03:36 ID:6C2X4imP
SJISのCSVで <> をセパレータに使っても文字コードとカチ合わないでしょうか?
>>844 「<」はShift_JISの2byte目とかぶってないので平気。
846 :
な :01/12/10 07:28 ID:???
847 :
二三4 :01/12/10 11:33 ID:SosRE8yo
2バイト文字をチェックするには?
848 :
844 :01/12/10 12:56 ID:o7IarH1/
isascii+isprint
850 :
名無しさん@お腹いっぱい。 :01/12/11 01:11 ID:bblBmTRP
CGIでMP3のリストを出力しています。CGIモジュールで $query = new CGI; print $query->header("audio/x-mpegurl"); と指定しているのですが、IE6でMedia Playerが起動せず 再生できません。IE側で何か設定が必要なのでしょうか?
良く分からんけどリストって事はm3uだよね Content-Dispositionとapplication/octet-stream 吐いて選択ダイアログ出すのは駄目? と言うかいきなりPlayer開いたり出来るんだ(^-^; コワー
852 :
名無しさん@お腹いっぱい。 :01/12/11 08:04 ID:bblBmTRP
ありがとうございます
>>851 Content-Dispositionで選択ダイアログが出るんですね
やってみます!
IE5なら、m3uファイルをクリックしたときと同じように
media playerが起動するのです… うううむ
ある文字列に含まれる文字数を数えるのってどうすればいいの? 例えば、ahoにaは1個、ahoahoだったらaは2個とか。
$str = "ahoaho"; $count = ($str =~tr/a/a/);
>853 $word = "aho"; print $word =~ s/a/a/g; $word = "ahoaho"; print $word =~ s/a/a/g;
ごめんなさい。
いや、先に自分より簡単な方法を掲示されたから。
860 :
名無しさん@お腹いっぱい。 :01/12/11 13:19 ID:S9ZoAxdF
CGIとは?「プログラムの処理結果をクライアントに返す。」 みたいな説明が多いのですが、 コモン・ゲートウェイ・インターフェースとの関係がわかりません。 この3単語を使って説明するとどうなるのでしょうか? 「HTTPサービスが開いている共通の出入り口」と想像してますが それでも、「なにが共通なのか?」という疑問がのこります。
CGI = Common Gateway Interfaceの頭文字をとった物 なのに関係も糞もねぇだろ。
862 :
名無しさん@お腹いっぱい。 :01/12/11 16:53 ID:P2qcRNJ8
print <<"HTML"; <script language="javascript"> <!-- function javascript { 〜 } // --> </script> <form name="form1" onsubmit="return javascript()" action=""> <input type="text" name="abc"> <input type="submit" name="button1" value="CHECK!"> </form> <form name="form2" action="$scriptname"> <input type="submit" name="button2" value="XXXXX"> </form> HTML わけあってこうしなければならなくなった。 ようするに、form1で、入力された文字列を、javascriptで処理し、その処理結果を、perlで処理したい、という事。 心の広い方、教えてください。
863 :
:01/12/11 17:27 ID:RQyeWc5m
興味本位で掲示板をgzipに対応した。 しかし、htmlを吐くタイプだとあんまり意味無い気がするんですけど気のせい?
>form1で、入力された文字列を、javascriptで処理し、 すれば良いかと、フォームを二つ書いた意味は? 人に理解出来ない事を沢山書いても意味が無いよ
867 :
dase- :01/12/12 04:31 ID:NkTk+IA5
もしこのページが読めたのであれば、Apache ウェブサーバのインストールがこの計算機で無事に終了したことを意味します。あなたは、このディレクトリに文書を加えたり、このページを置きかえることができます。 h*tp://www.itudemo.co.jp/
868 :
名無しさん@お腹いっぱい。 :01/12/12 16:03 ID:NLvr4Wk8
CGIが自分でファイルを生成出来ないみたいなんですが これはどこがおかしいのでしょうか? 他の鯖だと正常に動くのでスクリプト自体には問題無いと 思うのですが・・・。
パーミッション or ディレクトリの設定 or サーバの設定
>>868 鯖がダメなら鮪で試しましょう。
MAG is not 鮪だ!
871 :
No Title :01/12/13 20:38 ID:iTdQse2k
ぐるぐるギーギをみんなで探そう。
872 :
名無しさん@お腹いっぱい。 :01/12/13 22:35 ID:wbk58NUD
Windows2000のIIS5.0配下のCGIから DLLを呼びたいのですが、言語はなにがいいでしょう? ASP・・・できない ISAPI・・・できる Perl・・・わからん C・・・できる VB・・・できる JSP・・・わからん J-Serv・・・わからん PHP・・・わからん
873 :
名無しさん@お腹いっぱい。 :01/12/14 01:07 ID:ZAhTw+fs
パーミッション755や705で実行出来るけど701だと実行できません。 これって701でも実行出来るように設定するには管理者権限無いと 無理ですか?
setuidすりゃいい、検索すれ
875 :
名無しさん@お腹いっぱい。 :01/12/17 00:10 ID:P4Cb9Kj6
unshift (@lines,"$no<>$num<>$res_num<>$date<>$res_name<><>$res_comment<><>$addr<>$host<>$agent\n"); foreach (0..@lines) { my($mno,$mnum,$mres_num,$mdate,$mname,$msubject,$mcomment,$murl,$maddr,$mhost,$magent) = split(/<>/, $lines[$_]); if ( ($res_num eq $mnum) and ($mres_num eq '') ) { splice(@lines, $_, 1); unshift (@lines,"$new_code<>$regist_num<>$oya_num<>$res_name<>\n$mno<>$mnum<>$mres_num<>$mdate<>$mname<>$msubject<>$mcomment<>$murl<>$maddr<>$mhost<>$magent") } } ↑この辺を変える。 つーか、改造スレッドってないのかな?
877 :
名無しさん@お腹いっぱい。 :01/12/17 00:47 ID:P4Cb9Kj6
>>876 すいません。改造スレありました。
どうもすみませんでした
878 :
広義のCDIっつー事で :01/12/17 06:36 ID:L0oYxvRI
Servletスレッドで質問したんだけど×だったのでここで。 Netscapeで、Content-Disposition: inline; filename=のファイル名に日本語ファイル名を記述して、 ダイヤログボックスのファイル名のところに反映させるには、どんなヘッダを送ればいいのでしょう?
ウマナミさんですか?(笑 ネスケって勝手にasciiにしちゃうんだっけ charset=hogehogeちゃんと吐いてる?
880 :
ウマナミです(笑) :01/12/17 06:58 ID:L0oYxvRI
Java Servletだから resp.setContentType("application/octet-stream; charset=Shift_JIS"); となるけど、これでいいんだよね? 少なくとも、ダイヤログにapplication/octet-streamまでは通知されてます。 ……トラフィック監視するしかないのかなぁ? とりあえずTelnetでリクエスト見ようとする試みは失敗した(^^; ちなみに、クライアントはWin2000+NN6.2で、サーバはRedhat 7.1+Apache+Tomcat3.2でございます。
882 :
ウマナミナノネー :01/12/17 08:45 ID:L0oYxvRI
……実はあのアニメはあまり好きではないのですが、エンディングテーマだけは大好きだったり(笑)
>>881 アドバイスありがとうございます。
うーん、困った……。この二日、これにはまりっぱなし。IEで×っつー話はよく聞いて、そのチェックはしたんだけど……
883 :
882 :01/12/17 12:33 ID:L0oYxvRI
その後、他のクライアントにあえてNN4.73を導入、テストを試みると……ちゃんと動いた(^^; ………NN6.2のバグかぁ?(^^;
「こんなCGI作ちゃいました」すれ立てようと思うのだが、 需要あるかな、、、
886 :
884 :01/12/17 15:01 ID:???
合同開発室は開発者向けと言う印象があるので、 もっと一般ユーザ向けの宣伝すれがあってもいいかなと思ったんだが、 やっぱり下る一方ですよね、、、 >そもそも何でこのスレでそんな話を? いや、なんとなく、、、
厨●が湧いてくるからライブラリにしとけ(w
888 :
607 :01/12/18 09:01 ID:???
IEからプログラムを起動することってできますか? たとえば、「ここをクリックすると、ワードパッドが起動します」 っての。教えて!
馬鹿?
890 :
名無しさん@お腹いっぱい。 :01/12/18 10:38 ID:jEzvkCvw
Aさん,100,あああ Bさん,150,いいい Cさん,120,ううう というテキストファイルがあって、それを Bさん,150,いいい Cさん,120,ううう Aさん,100,あああ というふうに真ん中の数値が大きい順に並べ替えたいのです。 ハッシュとかを感がえましたがうまくいきません。 どうか教えて下さい。
891 :
名無しさん@お腹いっぱい。 :01/12/18 10:50 ID:0067Pw+W
#japuたんの発言より抜粋 @ordered = map { $_->[0] } sort { $b->[1] cmp $a->[1] } map { [$_ => (split /<>/)[6]] } <>;
892 :
名無しさん@お腹いっぱい。 :01/12/18 13:27 ID:6sf+qjXn
CGIで掲示板組んでるんですが、 更新ボタンを押すと直前の書き込みが 再び書き込まれてしまいます^^; どのような原因が考えられますか? またその解決方法を教えてくれるとありがたいです。
893 :
名無しさん@お腹いっぱい。 :01/12/18 13:32 ID:Kyyu/mpv
>892 そんなPC初心者板で聞いても100人中150人位が知ってそうな 事を態々マルチポストするとは、相当人を馬鹿にしてるか 信じられない位アホなんですね (藁
>>894 違うヨ、誘導されてこっちに来たみたいだヨ
つーか俺もマルチと思ったw
>>892 あっちにMethodが〜〜と書いてるがPOSTでもGETでも投稿したセッションは
一回のセッションとしてブラウザにキャッシュされている(勿論投稿内容もね)
だから、書き込み後にクッション画面を作るとかHTMLのMETAタグなんかで
有難うページ→トップにバウンドって感じでセッションを分けてやればよい訳
ちょうど今の2chに書き込んだ後みたいにね。
えー、もしかして*ブラウザの*更新ボタンのことだったの? うわっ、恥ずかしいな、俺。 いくらなんでも、そんなことプログラムの板で聞いてくるとは思わなかったんで、 自分で作る更新ボタンのことかと思ったのよ。あーあ。
897 :
名無しさん@お腹いっぱい。 :01/12/18 17:55 ID:yRecfJkP
ブラウザの更新ボタンは再投稿と同じになるので 比較して前回の投稿と同じ文なら蹴れば?荒らし対策にもなるし。
898 :
名無しさん@お腹いっぱい。 :01/12/18 21:38 ID:/iqeHLWF
いちいち正規表現で全文比較しろってか。 マホ丸出し
>898 なんで正規表現で比較をするんだ? eqを使わないのか?
あのー、荒らし対策も考えるならeqで比較してもしょーがないと思うんですが。
>900 荒らし対策は「ついで」でしょ? >897は「全く同じ文を連続で投稿するような荒らしへの対策になる」って程度じゃないの? 更新ボタンによる連続投稿を防ぐ為ならeqでいいと思うけど。
はいはい分かったからどっか池よお前等 >900 いかにもBBS荒らされそうな頭と文体ですね、良い勉強になります。
正規表現なら何でも出来るんです!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>898 正規表現使う意味は?
905 :
名無しさん@お腹いっぱい。 :01/12/19 01:38 ID:CXBaLQQl
古い話で申し訳ないんですが、
>>211 の真ん中あたりにある、HTMLの差分DLって
やっぱり無理なんでしょうか?
ちょうど同じようなことをやっているもので・・・。
906 :
あ :01/12/19 13:20 ID:Pin70vo6
ro95zuUr1zXmY 問題です。↑はCRYPTです。当ててみてください。
907 :
名無しさん@お腹いっぱい。 :01/12/19 13:39 ID:m6kTuYTk
Pin70vo6 問題です。↑は度し難いアフォです。諭してやってください。
908 :
あ :01/12/19 14:33 ID:Pin70vo6
≫907 解けないくせに。ひがんじゃってもーいやん♪
910 :
:01/12/19 14:47 ID:Ay+y58z0
>>909 ありきたりな文字列なら解ける可能性はあるけど。
それより漏れも
>>898 に正規表現を使うわけを聞きたい。
ついでに、「マホ」ってのはどこかの板で流行っている書き方なのか、 それともタイプミスなのか、それも聞きたい。
912 :
名無しさん@お腹いっぱい。 :01/12/19 16:08 ID:ysls8V+7
913 :
名無しさん@お腹いっぱい。 :01/12/19 16:19 ID:yulg3qde
すいません、
>>905 を書いた者ですが、
掲示板システムを作ってまして、
一度読みにきたら、その後10秒間は
304 Not Modified
を返すようにしたのですが、
IEだと何の問題もないのですが、
ネスケ4.75だと、
「ドキュメントにデータが含まれていません」
とエラーが出るのですが、どうしたらいいのでしょうか?
914 :
◆JAPUTeX. :01/12/19 18:48 ID:wM5++m8M
If-Modified-Since が無い場合には 304 返したらマズいような。 # 嘘かも。 Not Modified 返したいなら、Last-Modidied: を吐き出せばよきに計らってく れますが、それではダメですか。少なくとも apache ならその情報を利用して 200 or 304 を決めてくれます。 #! /bin/sh echo "Content-Type: text/html" echo "Last-Modified: Wed, 19 Dec 2001 09:25:42 GMT" echo "" echo "moe" たとえば、こんなCGIプログラムだと、 最初のアクセスは 200 (OK) が返りますが、 18:27:26.437068 2001:2c8:35::2.80 > 2001:2c8:35::3.3044: P 1:243(242) ack 535 win 65535 [flowlabel 0x610cf] <snip> 0x0030 6ce5 d55d 5018 ffff 7dca 0000 4854 5450 l..]P...}...HTTP 0x0040 2f31 2e31 2032 3030 204f 4b0d 0a44 6174 /1.1.200.OK..Dat <snip> 次からは 304 (Not modified) が返ってきます。 18:27:28.719320 2001:2c8:35::2.80 > 2001:2c8:35::3.3044: P 259:411(152) ack 1069 win 65535 [flowlabel 0x610cf] <snip> 0x0030 6ce5 d773 5018 ffff 0498 0000 4854 5450 l..sP.......HTTP 0x0040 2f31 2e31 2033 3034 204e 6f74 204d 6f64 /1.1.304.Not.Mod 0x0050 6966 6965 640d 0a44 6174 653a 2057 6564 ified..Date:.Wed <snip> 負荷を下げるために頻繁に読み込んで欲しくないというのであれば、Expires: を使うと吉かも。
915 :
名無しさん@お腹いっぱい。 :01/12/19 22:12 ID:FzZSVld0
windows MEはユーザーエージェントでどういう風に表現されるのでせうか。 windows 98のヴァージョン違いは異常にたくさんあるのですが。 Windows 98; Win 9x 4.90 というのがやけに多いのだけれどこれでしょうか?
916 :
913 :01/12/20 01:55 ID:U8Brc/IO
>>914 ありがとうございます。Expires:ですか。
調べてみます。
それと、ふと思ったのですが、CGIで動的にWebページを生成する形態で
apacheはどうやって更新されたかどうかが分かるのでしょうか?
すいません、ひょっとしてモノ凄くドキュソなことを
聞いてるのかも知れませんね・・・
>>916 > それと、ふと思ったのですが、CGIで動的にWebページを生成する形態で
> apacheはどうやって更新されたかどうかが分かるのでしょうか?
普通のCGIではCGIスクリプト自体は常に呼び出される。
で、CGIスクリプトが"Last-Modified:"をつけて返事を返し、
クライアントからのリクエストに"If-Modified-Since:"があれば、
それらを比較してLast-Modifiedの方が古い場合はクライアントに
"304 Not Modified"を返してCGIスクリプトからの出力は転送しない。
nphスクリプトの場合は、ApacheはCGIスクリプトの出力をそのまま
クライアントに返すだけなので、CGIスクリプトが自前でHTTP_IF_MODIFIED_SINCE
を処理して"200 OK"か"304 Not Modified"を返す必要がある。
通常のCGIでもHTTP_IF_MODIFIED_SINCEで処理を変えた方が、転送量には
関係ないけどサーバの負荷軽減には効果があるよ。
918 :
913 :01/12/20 03:17 ID:iiNlv5yL
>>917 あ、いえ、それはわかるんです。
でも、
>>914 の方のを読むと、
CGIでもLast-Modified:をつけておけば
apacheが自動的にやってくれる、と言う感じに読めますので。
倉庫にも落ちてないスレを観覧できるCGIがおいてあるURL教えてくれませんか
( ´,_ゝ`)
921 :
917 :01/12/20 04:31 ID:???
>>918 > CGIでもLast-Modified:をつけておけば
> apacheが自動的にやってくれる、と言う感じに読めますので。
自動的って、まさかCGIを動かすかどうかを自動的に決定するってこと?
CGIは常に実行しないとLast-Modified:ヘッダが取れないじゃん。
自動的に行われるのは、
・HTTPステータスを200にするか304にするか
・304の場合にはCGIの出力したボディ部分を捨てる
という動作。914さんも同じこと言ってると思う。
922 :
913 :01/12/20 04:58 ID:iiNlv5yL
>>921 あぁ、なるほど、理解しました。
すいません。アフォでした。
あと、
>>913 に書いたネスケ4.75ですが
CGIで304を送ると、「ドキュメントにデータが含まれていません」なのに
そのCGIで出力したHTMLに埋め込んである画像には
apacheが304を送って何の問題もなく動作してるようなのですが、
これはどうなってるんでしょうか・・・・。
>>922 > CGIで304を送ると、「ドキュメントにデータが含まれていません」なのに
access.log を見て、apacheが本当に304で返してるかどうか確認してみれ。
HTTP/1.1 302 Found Date: Wed, 19 Dec 2001 20:52:42 GMT Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_gzip/1.3.19.1a mod_ssl/2.3.6 OpenSSL/0.9.3a Location:
http://www.he.net/cgi-bin/error404 Keep-Alive: timeout=10, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html d6
Found
The document has moved here.(
http://www.he.net/cgi-bin/error404 )
ダメだ。SJISで書けの後は、これかよ。いいじゃん。スクリプトで書いたってぇ。
それに、19日は水曜じゃないぞ。
19日は水曜だったぞ
おいっ!お前ら! 19日は水曜ですか?違いますか? ハッキリさせてくださいませ。
929 :
913 :01/12/20 15:12 ID:7Dj+HM68
>>923 Perlで
print "Content-type: text/html\n";
print "Status: 304 Not Modified\n\n";
を返しています。
access_log見ましたが、
CGIで304を送った時は送信バイト数が"0"ですが
画像の要求に対してapacheが直接304を送った時は"-"となっています。
どう違うのでしょうか・・・・・。
930 :
913 :01/12/20 16:28 ID:7Dj+HM68
すみません。原因がわかりました。 原因はCGI側からLast-Modified:を送っていなかったことです。 ネスケ4だけ 「If-Modified-Since:を送ってねえのに 304とはどういうことだ!!説明しる!!ゴルァ!!」 とゴネてたようです。 ご迷惑をおかけしました。
>>930 RFC2616には、304 Not Modifiedについて、If-Modified-Since:等が付いていない
GETの動作については書いてないので、どんな動作をするかは実装依存。
>>873 とは別人なんですが、nobody設定のサーバで自分でperlスクリプトを
suidしてみたんですが何故か動くスクリプトと駄目なのが有ります。
自分では何処で引っ掛かっているかが分からないんですが・・・
>>932 setuid/gid下ではtaintedなスクリプトは動かないです。
perldoc perlsec 参照のこと。
934 :
名無しさん@お腹いっぱい。 :01/12/21 15:30 ID:voEY9WIw
掲示板システムを作っているのですが POSTで書き込んだあとに、Location:で飛ばすと IEだとそのURLに対するIf-Modified-Since:を吐かずにリクエストを出し、 ネスケだと、そもそもリクエストすら出さずに勝手にキャッシュを使いやがります。 これ、どうしてでしょう。。。。? Locationで飛ばしても、ブラウザでURLを指定して飛んだのと 同じようにするにはどうしたらいいのでしょうか? 誰か助けて。。。
935 :
会社からです。 :01/12/21 18:56 ID:s31HoiR8
確認してないけど、ココと同じ様に、メタタグで飛ばしたらどうカニ?
936 :
934 :01/12/21 19:08 ID:voEY9WIw
>>935 ありがとうございます。
メタタグで飛ばすことによって、IEでは解決しました。
しかし、ネスケでは
明示的にリロードされるまでは、
キャッシュにあるものはキャッシュを使うようになっているみたいです。
思い切ってキャッシュ無効にしてみては?
938 :
名無しさん@お腹いっぱい。 :01/12/21 19:37 ID:voEY9WIw
>>937 今回作っている掲示板システムですが、
多少毛色の違うモノでして、
更新されたら更新された差分だけ転送し、
現在のものが最新であれば、304でキャッシュを表示する
というモノです。
なので、キャッシュ無効はできないんです。。。。
実はこういうシステム自体が無理なのかなぁ。。。。
>>938 飛ばした先のページにmetaタグ書けばキャッシュ読まないと思うけど。
こんな感じで。
<meta http-equiv="expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
とりあえず現時点でIEでキャッシュ読まない状態なら、ネスケの場合は
<meta http-equiv="Pragma" content="no-cache">
でキャッシュを無効化できると思う(確認はしてないが)。
HTTP/1.1ならサーバレスポンスヘッダを以下のように出力しても良い。
print "Content-Type: text/html\n";
print "Cache-Control: no-cache\n\n";
ただ、なんかIE4.5(Mac)だと駄目らしい。
941 :
934 :01/12/22 14:56 ID:Zp3FJg9R
942 :
名無しさん@お腹いっぱい。 :01/12/22 23:07 ID:jSeqz4dA
CGI書くのに最適言語って何でしょうか?
>>942 開発する内容・期間・使えるリソースによって異なる。
944 :
名無しさん@お腹いっぱい。 :01/12/23 09:14 ID:IT07ia6A
現在、内部処理(アクセス解析)をトップページに組み込むために、 パフォーマンスの良い実装方法を検討しています。 その一つとして、HTMLファイル内に<IMG src="〜.cgi">タグを 使用して(content-type=image/gif指定で、表面上は透過GIFを 表示させるようにして、内部でログを生成する)実装する方法も 検討項目の一つとしています。 この場合、アクセスログのリクエスト処理が終わってなくても、 コンテンツはブラウザ上に表示されるのでしょうか? もしそうなら、負荷のかかる処理を積極的にバックグランドで 処理し、ユーザはそれにストレスを感じずにページを閲覧でき、 効果的だと考えたのですが。 よろしくお願いします。
されます。 っていうか、全然普通にやられてる方法だし・・・ Referer取るのにめんどくさいので俺は嫌い。
アクセス ↓#凄い重い処理 カウンタ表示 って事かな?、でカウンタをストレスレス?に表示したいと。 1:単純にforkしてプロセスを分割する、ただ負荷自体は大きくなる。 2:カウンタを静的な画像にする、つまり100番目にアクセスした人は 100じゃ無くて099を見る訳、で、HTMLの下の方でCGIをキックして こっそり次の(100)画像を生成する。 つーかカウンタ程度なら現状で問題無いと思うけど、がんばってね。
947 :
944 :01/12/23 10:02 ID:SzYzoLzH
>>945 ,946
ありがとうございます。検討の材料として活用させていただきます。
948 :
名無しさん@お腹いっぱい。 :01/12/23 11:03 ID:DNt3H0Xe
>>943 Ruby、perl,PHPのいいところ悪いところ教えてください
PHP 何か年寄り臭い PERL 完璧に厨房臭い Ruby え?何それ
950 :
名無しさん@お腹いっぱい。 :01/12/23 11:49 ID:DNt3H0Xe
ObjectiveC つーか頭悪くならない言語全般 w
C
偏ってるなぁ・・・ヒテイハシナイケド(^^ Perlで良いんじゃない?>950
EVALと型無しは馬鹿の素、これ業界標準
955 :
名無しさん@お腹いっぱい。 :01/12/23 12:15 ID:DNt3H0Xe
>>953 perlだったらRubyの方がキレイに見えて覚えやすそう
だったんですが、何でperlがいいんでしょうか?
Rubyの悪いとこも教えてください。
それは腐ったPerlのコードしか見てないからだとおもうが・・・ キレイってのも良く分からんし
958 :
953 :01/12/23 12:34 ID:???
こう言うの荒れるんだよなー(w
>955 それぞれのページに誇張も含めて特徴が書かれてるよ。
基本的にRubyはPERLより難しいかわり柔軟
(後出しじゃんけんな上に、OOにしちゃったので)
んで、ドキュメントとかは多分少ないしょうね。
どっちにしても、何かポインタ示してもらわないと答えられない(多様性とか習得の難易度とか)
覚え易いのが良ければPythonとかお勧め
>>957 $多用すると汚いの?
最強厨房ってやつ?
use strictしておけば、my()は変数宣言と同じだとか言っている阿呆がいたのですが、どうしましょうか。
>>958 > $多用すると汚いの?
かなり見づらい。特にCをやっているとね。
結局こう? perlはCとか前科が無ければ習得が容易 RubyはCやってた人向きでC勉強できるぐらいの知能あるならRuby やれって事?そしてRubyの方が融通がきくんだね
>>962 Cって難しいか?
Perlよりも遙かに仕様が小さくて簡単だと思うけど。
文字列処理は面倒だけどね>C
964 :
963 :01/12/23 14:12 ID:???
あくまでもC++じゃなくてCね。
>963 プログラミングが初めてならPerlの方が楽だと思う。 Cだと初期化が面倒くさい。 Perlの$が汚いという人もいるけど、初心者には変数の目印として逆にわかりやすいと思うよ。
> 初心者には変数の目印として逆にわかりやすいと思うよ。 そうか・・・・ 漏れは時々書き忘れてエラーを起こす。更にVBではセミコロンをつけてしまってエラーを起こす w
967 :
名無しさん@お腹いっぱい。 :01/12/23 17:15 ID:yPva/HA4
今使っている掲示板はCGIで書き出すものなんですが HTMLで書き出すようにするのって、大変なんでしょうか? CGI超初心者ですが、できるようなら改造してみたいと思ってます。 ご意見お聞かせください
>>962 全然違う、Javascriptでもやっとけ w
970 :
967 :01/12/24 11:30 ID:nb0Ra4Jq
>>968 はっきり言って、ないようなものです>プログラミングの経験
改造するなら勉強したいと思っています。
ただ、今使っている掲示板のログをそのまま使いたいので、
できれば全部書き直すのではなく、
あくまで改造して、HTMLで書き出すようにしたいです。
ログを変換してHTMLで書き出す掲示板を使うのと
どっちができそうかなと思いまして・・・
はっきり言って義務教育受けた人ならどちらも鼻くそみたいに簡単です その辺のDQNweb解説サイツを適当に読むだけで十分でしょう。 ただそう言うことすると脳みそがスポンジ状になる可能性がとても高いので まともな本を買うかドキュメントを読む事をお勧めします
973 :
972 :01/12/24 14:40 ID:???
スレ違いでした
975 :
967 :01/12/25 09:04 ID:c3oW+NDS
そんなに簡単なんですか?! がんばってみます・・・
976 :
名無しさん@お腹いっぱい。 :01/12/25 21:28 ID:YEFyEeiB
>>976 圧縮されている変数?なんだそりゃ?
char cmd[200];
sprintf(cmd,"gunzip %s",filename);
system(filename);
>>976 perldoc Compress::Zlib
979 :
名無しさん :01/12/26 03:25 ID:BRFa7AfO
httpのエラーと箱庭のエラー出力の区別付かんヤツには無理だと 思われ
1000