1 :
nobodyさん :
02/03/03 12:49 ID:673UxTI5 print"くだらない質問はここにかけや!";
__END__
3 :
nobodyさん :02/03/03 12:51 ID:673UxTI5
__再開__
6 :
1 :02/03/03 12:52 ID:673UxTI5
質問する側は
>>4 がまとめてくれたのでよく読んでからするように。
7 :
1 :02/03/03 12:52 ID:673UxTI5
>>1 スレたてるならちゃんと過去スレへのリンクとかもいれろボケ
9 :
1 :02/03/03 12:54 ID:673UxTI5
SEX
10 :
nobodyさん :02/03/03 12:54 ID:q9dpZREZ
11 :
1 :02/03/03 12:54 ID:673UxTI5
おう!
13 :
1 :02/03/03 12:58 ID:673UxTI5
print"<font size=\"2\">気にするなや!良スレワショイ♪</font>"
15 :
1 :02/03/03 12:59 ID:673UxTI5
スマン <font size=\"7\"> ダタヨ。
16 :
1 :02/03/03 13:01 ID:673UxTI5
すみません先生。 print"<font size=\"7\">気にするなや!良スレワショイ♪</font>";
17 :
fight :02/03/03 13:09 ID:hJgT38sz
18 :
nobodyさん :02/03/03 13:09 ID:673UxTI5
さっきの質問の回答を私は待っています。 で、いかががなもんでしょ?
>>18 マルチを許可するから、今までの家庭と質問を簡潔にまとめて。
っていうか誰かわからん。\t。
21 :
nobodyさん :02/03/03 13:22 ID:673UxTI5
>>21 さっきから思っているのですがもう少しまじめにかけませんか?
非常に読みづらい。
23 :
$name=1; :02/03/03 13:27 ID:673UxTI5
24 :
nobodyさん :02/03/03 13:30 ID:ezJ1E2sl
#! /usr/local/bin/perl -wT my $file = "hogehoge.txt"; my %count; open (DAT, $file) or die $@; while (<DAT>) { my $name = (split /\t/)[3]; $count{$name}++; # $nameの発言数を+1 } close (<DAT>); print <<"_HTML_"; Content-Type: text/html <html> <body> _HTML_ # 回数が多い人から並び替えて出力 foreach (sort{$count{$b} <=> $count{$a}} keys %count) { print $_, ":", $count{$_}, "<br>\n"; } print <<"_HTML_"; </body> </html> _HTML_
25 :
24 :02/03/03 13:31 ID:???
また間違えた(鬱 close (<DAT>); ↓ close (DAT);
foreachが妙。無数にsortすることもあるまい。 whileの中でのmyもいただけない。 君の日本語と同じくらいコードも妙。
27 :
$name=1 :02/03/03 13:34 ID:673UxTI5
$thanks = 24; print ="$thanks<<ありがとうございます。"; もう一度チャレンジしてみます。
>>23 糞スレ(アパッチとアンパンチスレ)ageんなボケ。
以降673UxTI5は放置で。
よし、IDを隠そう。。。
できました。糞スレをあげてすみませんでした。
31 :
nobodyさん :02/03/03 23:38 ID:SnM6het0
>>26 >whileの中でのmyもいただけない。
26の人じゃなくても良いんだけど、
コレ、どうしていけないのか誰か教えてくれませんか。
32 :
nobodyさん :02/03/03 23:39 ID:SnM6het0
あ、コレってのは「whileの中でのmy」のことです。
> open (DAT, $file) or die $@; 基礎からやり直した方が良いよ
>>32 my()は微々たる物とはいえオーバーヘッドがあるから。
まぁ無いにこしたことはないと考える者もいるのだろう。
おれはCGIスクリプト以外では気にしない。
35 :
nobodyさん :02/03/03 23:58 ID:4iuYzTo3
IDテスト
>>34 ナルホド、どうもです。
自分も24の人みたいに小さいブロックでmyするもんで。
他の人はどうなんだろう。
>>36 俺もmy使う。
>my()は微々たる物とはいえオーバーヘッドがあるから。
を気にするくらいならそもそもPerlなんか使わない。
>>37 whileの中のmyは変だとほざいたものですけど、
C言語ユーザなのでローカル変数は関数の始めで宣言しないと気が済まないたちです。
C++でも
for(int i = 0;i < 5;i++)
{
string j = split();
}
のiは許しますがjはなんか違和感ありです。
39 :
nobodyさん :02/03/04 03:30 ID:rNzDwXQ3
____ Ю)__) |´ー`| (´∀`;)....ヤッターカミガアターヨ ~~~~~ ____ Ю)__) |終了| |´ー`| ....(;´Д`)イヤァァァァッ
40 :
nobodyさん :02/03/04 22:37 ID:Bo4DQAhi
Kent-web落ちてるんだけど。
>>40 あんたのホストからつながらないだけだろ。
42 :
ago :02/03/04 23:04 ID:vvtG7qnQ
HPにCGIを入れて、サーチエンジンで検索できるようにするのってどうするのか? どっかにフリーのCGI無い?
>>42 検索エンジンの呼び出しフォームだったらCGIじゃなくたってできる。
検索エンジンに登録するのは、代行ページがある。
いったいなにがしたいのだ?
44 :
sage :02/03/04 23:20 ID:vvtG7qnQ
sounanoka そうなのか REALY!
45 :
sage :02/03/04 23:40 ID:vvtG7qnQ
YAHOOのサーチエンジンつかいたいんだけど、どうすればいい? ぐーぐるはでけた
47 :
sage :02/03/04 23:54 ID:vvtG7qnQ
だからどこだよ? おまえ暇なんだからアドレスくらいかいとけよ、ヒッキー!
48 :
sage :02/03/05 00:08 ID:oXG1039l
もう一個。 更新履歴とかってどうすれば?
49 :
nobodyさん :02/03/05 00:24 ID:kLevaTw3
ぬおおおお。質問させてーー。 掲示板、携帯電話から書き込み可能にしたら、 半角カナが頻繁に文字化けするっす。jcode.plで全部EUCでやってるっすぅ。 どうしたらいいっすか。今のところ半角カナ一文字の後に改行があるときに 文字化け確実っぽいっすが、まだ調べ中っす。 なんかあったらたのむっす。
テスト書きこみ
53 :
nobodyさん :02/03/05 00:45 ID:kLevaTw3
>>52 そこは参考にさせてもらってるっすが、そのサイトのどこを見たらいいすか。
正しくパターンマッチさせるとか怪しいっすが、パターンマッチとか使ってないし。
>53 わざわざ何処を見るかまで教えてるじゃないか・・・。
> 49 その価値のないソースを見せてみRO!
57 :
nobodyさん :02/03/05 00:56 ID:kLevaTw3
おっと、失礼しました。半角を全角にっすか? それは、convertだかのオプションですでにやってだめで、 今、h2z_eucというのもためしてみたっすが、うまくいかんす..。 ていうか、WINやマックの半角はよくて携帯はだめってどういう仕組みっすか?
>57 送信の文字コードはなんなんだYO!
59 :
nobodyさん :02/03/05 01:01 ID:kLevaTw3
送信元はなんなんだかわからんっす!AUとドコモで試してるっす。 convertで第2引数は指定しなきゃいいかと思ってたっす。 頭悪くてすまんす。
おっと、すまんす。ちょっと試験の仕方を間違ったっす。 h2z_eucを再チェックしてみまっす。
>59 なに勘違いしてんだYO! サーバ側からの送信文字コードだYO! 携帯だからSJISしか使えないはずだから確認したかったんだYO!
すまんす。意味わからんかったっす。 携帯にはSJISで出力してるっす。表示部には問題ないと思うっす。 なんか携帯のフォームからデータ受け取った時点ですでにおかしいっぽい。
URLデコードの部分を見せてみRO!
URLデコードっていうのかわからんっすが..こんな感じっす。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); @a = split(/&/, $query_string); foreach $x (@a) { ($name, $value) = split(/=/, $x); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*value, "euc","","z"); $FORM{$name} = $value; } } .... print OUT "$FORM{'name'}\n";#ファイルに書き込みね☆
>63 >携帯にはSJISで出力してるっす。 ってことは、携帯以外には別のコードってことKA? そしたら改行コードの統一ってのが不可欠になってくるけどどんな感じDA?
ていうか、パターンマッチばりばりしてるっぺな..。 改行コードか..。そういえば、パールメモからコピペして使ってたなあ。 全然チェックしてなかったっす。ちょっとチェックしてみるっす。 いろいろ世話になるっす。ありがとう。
んー待てよー。 でも<input type="text">からのデータには改行は入ってないっぺ? これも化けるんだけど、改行コード関係あるっぺか?
ないネー。 半角以外の漢字コードは問題ないのKA?
<input type="text" ....... の場合、type="text"部分は省略できるZO! 携帯のようにバイト数に制限があるならより少なく書くのがよかろう!
んー今のところ、携帯で半角カナ意外では問題ないっす。 あ、ドコモのやたらと古い機種(関係あるのかわからんが)で、 (涙)みたいな意味の記号が化けたことがあったすけど、 原因がいっしょだか不明っす。 見切り公開してしまった掲示板す。どんどんバグがあらわに..。
>69 おお、それは知らなんだ!予期せぬ有用な情報をありがとう!!
最後にHTMLフォームをSJISで出力する際に、つぎをかませたらどうDA? s/\x5c/\\\x5c/g;
おお、なんじゃそりゃ。 ホント頭悪くてすまないんだけど、なんか、携帯で半角カナで書き込んだら データファイルの中も様子がおかしくて、携帯にsjisで表示しようが、 IEとかにEUCで出力しようが同様に化けるっす。 IEで半角カナ打った場合はIEでも携帯でも表示はノープロブレム。 これは携帯の電波に特殊な妨害電波が混じってるとしか思えん!そんな俺がデムパか。 てか、蓋を開けてみたら半数以上の訪問者が携帯から書き込みやがるし..。
s/\x5c/\\\x5c/; ってのは、あくまでもSJISのみに適用DA!
おお!なるほど!! って全然意味不明っすが、たしかに携帯でのみ化けなくなったっす。
76 :
75とか :02/03/05 02:21 ID:???
やっぱデータ受け取った直後のパターンマッチかな?
SJIS以外の送信フォームが文字化けなら元データが既に汚染されてはいないKA?
急きょ以下を作ってみたから s/\x5c/\\\x5c/g;のかわりに次を使ったほうが より化けないと思うZO! s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge; s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
79 :
75とか :02/03/05 02:30 ID:???
いや、SJIS以外のフォームは文字化けしないっす。 sjisフォームから来たデータだけ文字化けして書き込まれて、 さっき教わったやつでsjis出力時(つまり携帯に表示時)だけ元に戻ってるっぽい。 ああ、なんかだんだんわかってきたZO!そんな気がするだけか..。
>73 IEでの日本語EUCコードの文字化けはメタタグで回避済みKA?
>79 それだったらURLデコード直後に文字コードがSJISの場合のみ>78の処理を先に かましておくのはDOUDA!!
82 :
75とか :02/03/05 02:39 ID:???
メタタグとおまじないの文字(とほほさんのサイトでヤフーも使ってると紹介されてる方法) で回避を試みてるっすが、それでもたまに化けることがあるっぺYO!
そういう場合はメタの直後に<!--日本語化けるなゴルァ--> と書いておくと、化けない場合が多いZO!!
84 :
75とか :02/03/05 02:44 ID:???
>>81 なるほどー。それってのはつまり
先にjcode.plとかで判定してsjisなら78の処理、
その直後にEUCに変換してデータファイルに書き込みであってるのかYO!
いや、態度でかくてすみません。あってらっしゃいます?いやこれも違うな。
85 :
75とか :02/03/05 02:45 ID:???
おお!それは知らなんだ!予期せぬ有用な情報をありがとう!! ははは、言えてる。
そういうことDAな! チョット進化してきたNA!!
87 :
75とか :02/03/05 02:54 ID:???
ありがとーだYO!だんだん分かってきたYO。 今やってみてるっす。私的な解説サイト参照しながらだからはかどらんス。 ていうか、今思ったけど、携帯専用の書き込みCGI作ったほうが動作確実かな。 しかーし、それはあんまり美しくないのでやはりこのままの方針で..。
88 :
75とか :02/03/05 03:29 ID:???
まだいるかな? なんだか面倒なことになったYO! 今度はIEで携帯からの半角カナが表示できなくなったYO! IEからの半角も携帯からの半角もデータファイルを テキストエディタで見れば同様に見えるんだけど、 携帯からの半角だけIEで化けるっす。携帯では化けないっす。 さっき教わったsjis出力時の怪しい変換は削除したっす。 かわりに書き込み前に変換してるっす。
当然SJIS出力時の変換はチャラDA!! だいたい以下のようになったDAロ!! if ("\U$ENV{'REQUEST_METHOD'}" eq 'POST'){ read(STDIN, $_, $ENV{'CONTENT_LENGTH'}); $isSjis= &jcode::getcode(\$_) eq 'sjis' ? 1 : 0; for ( split('&') ){ ($name, $_)= split('='); tr/+/ /; s/%(..)/chr(hex($1))/eg; if ( $isSjis ){ s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge; s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge; &jcode::sjis2euc(\$_); } $FORM{$name}= $_; } }
90 :
75とか :02/03/05 03:38 ID:???
全くそのとおりっす!若干文法が違いますが意味は全く同じっす。 でIEでの表示がおかしい以外が一見正常に動いてるっぽく見えるっす。
91 :
75とか :02/03/05 03:40 ID:???
データファイル内は名前、メッセージ、日付などを改行を挟んで並べてるんですが、 化ける文字の直後の改行をエディタで入力しなおすだけでIEでも表示できるようになるっす。 これがなにを意味するのか、ちょっとわからんっす。
じゃーYO−! とっておきのスペシャル変換をIEにだけ特別にぶちかましてやんナ! if ( $ENV{HTTP_USER_AGENT}=~ /MSIE/i ){ s/\x5c/\\\x5c/g; }
>91 サーバOSはUNIX系だRO! EUCで処理するぐらいだから当然そうだRO-YO!
94 :
75とか :02/03/05 03:52 ID:???
おおおお!なんだそれーー。なんかわからんがすごそう。 で、今バイナリエディタなるものを落としてきて、データファイル見たんだけどYO! IEでの半角書き込みも携帯の半角書き込みも全く一緒に見えるZOYO?
できたってことKA!
96 :
75とか :02/03/05 03:56 ID:???
いや、できとらんのYO!
>>89 のままでバイナリデータ見てもなんら異常あるように見えナインだPPE!
それからIEでだめって言ってたけどYO!ネスケでもだめだっぺ!
>96 やはりそれも半角だけ化けるんだRO? つまり半角カタカナがいっぱい化けた感じだと思うGA, これはSJIS上でEUCコードを見たときに特有のものDA! でも半角以外の日本語は化けないというのはチョット疑問だZE! もしかして化けないのはボタン上の文字とかKA?
98 :
75とか :02/03/05 04:14 ID:???
いや違うんだZO!携帯からの半角文字、一文字なら一文字だけが、 EUC表示のときに化けるんだZO!
携帯からの入力データを一旦ファイルに書き込むようなことをコチトラこみみに挟んで るが、そこのコードを出しやがレ!!
化けるってのは、半角カナ一文字がただの・って感じに見えるだけで それ以外の書き込み文字(普通のテキスト)は全部正常なんだZE!
んーそれは何のことだべな? print OUT "$FORM{'name'}\n"; print OUT "$FORM{'message'}\n"; こういうところのことかYO?
チョット意味のない処理をしてしまっていたからYO!次の2行の置換は2行目をコメントにして おKE! s/([\201-\237\340-\374])([\100-\176\200-\374])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge; #s/([\241-\337])([\336\337])/$2eq"\x5c"?"$1\\\x5c":"$1$2"/ge;
わかったYO!消してみたぜYO
発言者名アってしたら岡だとYO!笑わせるゼ!
>101 そういうデータの書き方かYO! 直前にアクセスした一件分だけ保存してるということだNA!! この一旦保存したデータを読み込んで出力してるなら当然改行文字を切り落として いると思うがどうDA!! $FORM{'message'}っつーのはテキストエリアで複数行書けるんじゃないのKA?
改行切り落としてないYO!まずったKA? messageはテキストエリアだYO!これもまずったKAYO!
>106 とりあえずデータファイル読み込んだら改行を切り落とし過ぎるぐらいに切り落とせ! テキストエリアデータの改行処理はどう処理してるのKA? s/[\x0a\x0d]+/<BR>/g; ってな感じか?
切り落としたらなんかその後の文字とくっ付いたZO!いやー!! テキストエリアはYO!一行ずつ print "$_<br>\n"; ってやってるだけだYO!悪いかっ!
やっぱ改行コードがおかしいんKA!
>108 なんでくっつくんだ! 1行ずつ読み込んでるだRO! テキストエリアの出力にしても今一ついかしてネーゼ! ソースを公開できる環境があればアドレスを書け!!
ソースを公開できる環境がなければデータ書きこみから読み込み終了まで をみみを揃えてだしやがれ!!
普通にしゃべれねーのかお前らは(笑)
おろ?寝ちまったかYO!!
# Write current comment. # $FORM{'message'} =~ s/\x0D\x0A/\n/g; # 改行コードを統一?動作未確認 # $FORM{'message'} =~ tr/\x0D\x0A/\n\n/; # $FORM{'message'} =~ s/\r*$//g; # $FORM{'message'} =~ s/ +/ /g; やっとだいたいわかったZE!! まず、上の行まで行って待っていRO!
上の行まで行くってどういうことだYO!! 意味わかんねーYO!
直後に一時ファイルへの書きこみがあるからつぎのように書き換えちまえ!! $SEPA= '^K'; ## ADD NEW $FORM{'message'}=~ s/[\x0a\x0d]+/<BR>/g; ## ADD NEW open(OUT, "> wwwboard.tmp"); print OUT join($SEPA,"$yy年$mm月$dd日","$jj時$ff分$bb秒",$FORM{'from'},$FORM{'message'},"\n"); ### ADD NEW =comment1 print OUT "$yy年$mm月$dd日\n"; print OUT "$jj時$ff分$bb秒\n"; print OUT "$FORM{'from'}\n"; print OUT "$FORM{'message'}\n"; print OUT "<!-- end of comment -->\n"; =cut
>116 オマエのファイルに同じ部分があるだRO-!
いや間違ったZO!わかる!わかるぞ! ただ、うまくねーNA!
5行じゃネーゼ6行ダゼ! 以下の行を117と置き換えろ!! open(OUT, "> wwwboard.tmp"); print OUT "$yy年$mm月$dd日\n"; print OUT "$jj時$ff分$bb秒\n"; print OUT "$FORM{'from'}\n"; print OUT "$FORM{'message'}\n"; print OUT "<!-- end of comment -->\n";
=comment1 から =cut まではコメントだから消してもいいけどYO−! 念のために残しているこのおくゆかしさってなもんDA!!
書き終わったか? まだつづくからYO!! 油断すんな!!!
ちょっと待てYO!確認なんだがYO! こうなるとYO! データファイルの構造が変わるべNA!
次に以下の行まで移動してみRO!! open(IN, "wwwboard.dat"); while (<IN>){ print "<div align=\"left\" class=\"normal\">\n"; $date=$_; $time=<IN>; $from=<IN>; chomp($from);
>124 そうDA!! 1行に1データを書くからナ! よく気づいたナー!!
127まで移動したらヨー!ファイル開いた直後に以下を書き足してみろってんDA! これで最新データの取得ダゼ!!どうだいかしてるDARO? 一応、変数名は整合性がとれる ように合わしてやったからヨー chop($_=<IN>); ($date, $time, $from, $_)= split($SEPA, $_, 4);
まじでかー 実はYOー!この掲示板にはYO!もう一つ秘密のモードがあってYO! そっちでもっとめんどくさいことになってるんだっPE!! データ構造変えない方法はないかYO! またはよ、データ内にタグを書かない方法はないかYO! ないならしょうがないから秘密モードの仕様変更するからいいけどYO!!!
127じゃネーゼ! 125のまちがいサー!!
おっと、しかし、
>>127 はちょっとイカしてんナ!!
乗り気じゃネーのKA? もちろんまだつづくけどヨー! やめるんならいまのうちだZE! やるんなら読み書きぐちをチョット変更して同じ変数にぶち込んで出力も同じようにする だけだから難しくはないだローヨ! それとも大事なデータが既に大量に存在するとかKA?
$SEPAってなんだよ!!イカしてるゼ、まじ!
いや、つづけてクレ!!こっちのほうが楽そうだZO!!
127がおわったら、次も書いておく print qq(<div align="left" class="normal">\n); s/</</g; s/>/>/g; print "$_<br>\n"; print qq!<div align="right" class="small">$from $date($time)</div>\n!; print qq(<img src="graphics/dot.gif" height="30">\n); これが終わったら whileループの読み出し・出力が終わったことになるからヨー! またコメントししておけ!!
じゃあwhileループは全部イランということだナ?
そういうことDA−ZE!
なんかすげーナ!print qqってーのは"の前に\がイランのカ!
次も同じようにデータを読み込んでいる以下の部分があるからとっとと移動しておけ!! if ($QUERY{'page'}==0) { #ページ指定がなければ発言リストを出力 $title = "<div align=center>最新の15件</div><br>"; &jcode::convert(\$title, 'sjis','euc'); print "$title"; $end_count=0; while(<IN>){
移動してるっぺな!!
while ループ内は以下のようになるってなもんDA!! while(<IN>){ chop($_=<IN>); ### ADD NEW ($date, $time, $from, $_)= split($SEPA, $_, 4); ### ADD NEW # $date=$_; $date =~ s/(\d+)年(\d+)月(\d+)日/$2月$3日/g; # $time=<IN>; $time =~ s/(\d+)時(\d+)分(\d+)秒/$1時$2分/g; # $from=<IN>; # while (1) { # $_=<IN>; # if ($_ =~ /^<!-- end of comment -->/) {last;} # }
最初に一行入るだけかYO!
>140 チョット間違いDA!! chop($_=<IN>); ⇒ chop; たまにはわざと間違うからYO-!
おお、いっぱい削除しとるんかいっ!!!
わざとかい!だろーと思ったゼ!
次はナー! 以下の行へ飛んじまえ!! 面倒だから字下げは省略だ! } else { #ページ指定があれば指定ページまで飛ぶ if ($QUERY{'page'}>15) {$QUERY{'page'}=15}; $end_count=0; while(1){ if ($end_count>=($QUERY{'page'}-1)){ last; }
この無限ループ内は以下のように書きサラセ!! while(1){ if ($end_count>=($QUERY{'page'}-1)){ last; } $_= <IN>; $end_count++; ### ADD NEW # if (<IN> =~ /^<!-- end of comment -->/) { # コメントの終端を判定 # $end_count++; # } }
はっはっは!すげーすげーZO!!
146の直後はつぎのようになるからヨーク目をこらして見サラセ!! これで else ブロック内まで書き終わったことになるから覚悟しRO! chop; ### ADD NEW ($date, $time, $from, $_)= split($SEPA, $_, 4); ### ADD NEW s/</</g; s/>/>/g; ### ADD NEW =comment3 $date=<IN>; $time=<IN>; #時間(使わない) $from=<IN>; while (1) { $_=<IN>; if ($_ =~ /^<!-- end of comment -->/) {last;} =cut &jcode::convert(\$_, 'sjis','euc'); =comment4 $_ =~ s/<!--/<!--/g; $_ =~ s/-->/-->/g; $_ =~ s/&/&/g; $_ =~ s/"/"/g; $_ =~ s/</</g; $_ =~ s/>/>/g; print "$_<br>\n"; } =cut &jcode::convert(\$from, 'sjis','euc'); print "$_<br>\n"; ### ADD NEW print "<div align=\"right\">$from</div>\n";
っと、どうやら終わったようだナ! まあ、実際に動作させてないから間違ってるかもしれんがそこはご愛嬌!! こっちのサーバ立ち上げるのもめんどいし、そう間違ってもいないダロウ!! ポジィティブシンキングってやつだ!! だた、最後にこれだけは言わせてもらうからナ!! 言葉遣いが荒っぽくて御無礼お許しください。(ペコリッ
ありがとうございます!こちらこそご無礼をお許しください! 大変勉強になりました。訂正前に比べて、非常に美しい形になりました。 まだ、ちょっと意味不明なところもありますが、調べればすぐわかりそうな位 簡潔ですね!!
でもさあ、チョット とほほ っぽいコードだと思うけどあの人、意外と Perl苦手みたいネ!! かなり無駄な部分が見うけられるからもっとスッキリしたコードに なるはずです。
実はこの掲示板、秘密のモードが結構自信作なんです。 完成したら是非見に来て欲しいので、よろしければメールください。 さっきのソースの最後のメールアドレス、残ってるかな? まあいいや。気が向いたらよろしくお願いします。 本当にありがとうございました! これから仕事に出かけます..(鬱)。
そうなんですか。Perlってなんか文法いっぱいありすぎてややこしいですよね。 とほほさんのばっか参考にさせてもらってたので、他の人のソースはかえってムズカシイっす。 本一冊買おうかな。 では、お出かけします。あー眠い。
>>152 裏技を非常に凝ったためにメインがおざなりになる罠。
>>154 他人にみやすく、時間がたった後の自分にみやすく、メンテや機能追加のしやすいコーディングをするっていう方針は間違ってるかなあ?
以上、壮大な自作自演でした。
158 :
プリクラ :02/03/05 21:46 ID:zRZgn879
掲示板スクリプトのデコード過程のタグ処理部分で if ($tagkey) { $value =~ s/<>/<>/g; } else { $value =~ s/\&/&/g; $value =~ s/</</g; $value =~ s/>/>/g; } となってるんですけど、どうしてこれが機能するかわからんです。 正規表現の置換って s/★/☆/g で★が☆に変換されるってことじゃないのです? だとするとなんで$value =~ s/<>/<>/g;でタグが許可されるのか わかんないよ。
>158 else以下だとタグを全て&;lt;などに変換している。 $value =~ s/<>/&;lt;&;gt;/g;では<>がセットになっているときだけしか変換をしない。 つまり、<b>の場合、<>の間にbが入っているからマッチングしない。
>>158 下2行は無駄。あ、HTMLにしたから&ltが<に化けてるのか。
<を&ltに変えればそれはHTMLタグではなくなる。
<html>
<html&rt -ブラウザでは-> <html>と見える。
自作自演じゃないYAI!
>>151 さん今日は居ないのKA!
おかげさまでYO!ソースはかなり見栄えよくなって、秘密モードも対応できたんだけどYO!
肝心の文字化けは全く解決しなかったPPE!!!
でYO!携帯携帯とか言ってパケット料金無駄づかいしてテストしてたKEDO!
携帯ページにIEで行って(sjisフォームで)書き込んでも文字BAKEdaZEYO!
フリダシに戻ったっPE!!気づいたらレスくれYO!!!
163 :
nobodyさん :02/03/05 22:29 ID:uMIlDzWP
$encode_pass = crypt $pass_temp,ab; って何か間違ってる?
>>163 >ab;
これは何か詳しく聞かせてくれるか?
きっとこんなのがあとの方にあるに違いない sub ab { "ab" }
>>165 後にある場合はvarsかsub;で先行宣言しておかないと。
そっか宣言しないとエラー出るね。ありがと
>>166
>161 呼んだ?
おおお!昨日はどうもでした!
>>161 のとおりなんだけども!ウザいとか言われてへこむから、
なんか端的な解決策あったらお願いしますYO!!!!!!
>169 そうさネー。もっとスクリプトを整理することサネー。 チョット仕様がわかりかねる部分があるケド、MODEがcomment,light,cellular の 3つがあってcommentモードは print "Location: "; exit; で終わってるのはどう いう処理?
コメントモードは終わったら表示を更新するだけです。そうか言われてみれば もっと簡潔な処理できますね。 でも、どうやらもっと別の要因の気がします。 今、フォームデコードする直前あたりからEUCに変換するまでをバイナリで 丹念に調べてます。
>171 Location: でパラメータを渡さずにこのCGIを呼ぶならどれも実行されないような 気もするケド。。。最終的にLocation: http://xxxxxxx の指定を書くというこTO?
ああ、そうか。いや、実は秘密モードってのが実は通常モードで 引数なければそっちに行くんです。だから、Locationで飛ばさなくていいんですよね。 なんでそんなことしてたんだろう。
パラメータチェックおよびエラー画面表示等が1つもないケド、必要ないの?
パ、パラメータチェック..うーん、いまいちよくわからんす。 昨日教わったフォームデータを受けてるところ、調べてみたら 同じアという文字をEUCとsjisで送信すると EUCでは%8E%B1を受け取ってデコード直後から最後まで8Dになってます。 sjisでは%B1を受け取って最後までB1のまま。 &jcode'convert(*value, "euc",$form_code,"z"); とか &jcode'h2z_sjis(*value); って文法間違ってないですよね??
;# URLデコード処理実行 if ($in{'mode'} eq "comment" && $in{'message'} ){ commentモード処理; exit; } if ($in{'mode'} eq "light"){ ligntモード処理; exit; } if ($in{'mode'} eq "cellular"){ ligntモード処理; exit; } ※ 現在、大まかに上の処理の流れになっているのでif文がそれぞれ独立していて、 それぞれのブロックが終了したら exit; で処理が終了してしまう。つまり、 2つのifブロックを実行することはありえないし、パラメータによってはどの ifブロックも実行しないでなにも返さないCGIになってしまい、スクリプトエラー になると思う。したがって、大枠としては以下のように書き替えたほうがいいの では? ;# URLデコード処理実行 if ($in{'mode'} eq "comment" && $in{'message'} ){ commentモード処理; } elsif ($in{'mode'} eq "light"){ ligntモード処理; } elsif ($in{'mode'} eq "cellular"){ ligntモード処理; } else { デフォルト処理;}
なるほど。全く持ってそのとおりです。
とりあえず、半角の全角変換はいまの時点でこだわる必要はないと思うし、 別に半角のままでも化けないかもわからないので、まず処理構造をスッキリ スマートにさせたほうが分かり易くなると思う。 少し読み進めてみると、ファイルロックはしないようにしたみたいダケド、ロックファイル の後始末(アンロック)などが残っているのでこれは削除したラ?
あと、携帯には詳しくないが、たしかドコモあたりではヘッダに Content-length: を 付加しないと動かないとかとほほに書いてあったようなきがするケドドウ?
あ、ファイルロックしてます。昨日、ソースお見せするのに 関係なさそうだったのでカットしただけです。 デフォルト処理はif文無しなので、変なパラメータならデフォルトが実行されます。 これ、とほほさんのラウンジの構造そのものなんですが(笑)。 でも全部elsifで繋いだほうが後始末何度も書かなくて済むのでより簡潔ですね。 変更します。
>>179 おっとそれは未確認です。が、僕、学生でも家族でもないのにAUなんです。
追々ドコモでチェックしてみます。
最初の行あたりの以下の部分って使ってなさそうだケド、もしかしてそのファイルロック 部分かなんかで使ってる?使ってなければ削除したりーナ! $ENV{'TZ'} = "JST-9"; # Set timezone @wdays = ( "sun", "mon", "tue", "wed", "thu", "fri", "sat", "sun" ); # Constant variables
あーファイルロックで使ってます。 全部elsifで繋ごうと思ったんですが、commentモードは終了後に掲示板に 戻らないとならないので別個のif文にしてその中でモードを変更するか locationで飛ばさないとダメですよね??
commentモード後に必ずLocation: で飛ばす仕様なら「デフォルト処理」に書くほうが いいと思うケド、どのモードでもない場合(仕様がどうなのかわからないが)やcommonモード でメッセージが空の場合などの対処も同時に「デフォルト処理」部分でしておく必要はあるネー。 ;# URLデコード処理実行 ;# ファイルロック実行 if ($in{'mode'} eq "comment" && $in{'message'} ){ commentモード処理; } elsif ($in{'mode'} eq "light"){ ligntモード処理; } elsif ($in{'mode'} eq "cellular"){ ligntモード処理; } ;# デフォルト処理;
結局、
>>183 の前者の方に変更しました。
表示部は必ず実行する、コメントするならしてから表示部を実行する。という感じ。
だいたい ifブロック構造はまとまってきた?
はい。おかげさまで見やすくなりました。
次は、URLデコード部分でR! なぜか知らんがPOSTおよびGET送信を分けて書いてあるのでアル。
はい。だめですか
分けて書く特別な意味があるならそうすべきだし、特に意味がなければまとめて 書くほうがよりコンパクトで分かりやすいソースにあるってなもんだ!!
どうやったら一つにできるのか考え中です..
以下の1行でPOSTだろうがGETだろうが 変数 $_ にぶち込んだことになると思うが。 read(STDIN, $_, $ENV{'CONTENT_LENGTH'}) unless $_= $ENV{'QUERY_STRING'};
つまり、$QUERY{'〜'}と$FORM{'〜'}の二つに分けないで、 一つの配列に両方入れるということですか?
ああ、それってわけてたんだァ。わけないとまずいことでも?
いえ、配列の添え字も重複してないんで、分けなくていいっちゃーいいかも、です。 ところで、192は意味がわかりません。unless、それ以外は..。
POST送信の場合、$ENV{'QUERY_STRING'} に値がセットされることは ないと思うが、これって思い違いカナ?
192 で変数 $_ に「aaa=%a0%2e&bbb=esc」みたいなのが取得できたからつぎは& で分割したそれぞれを更に=で分割してデコードをぶちかますから大枠は以下の ようになるハズでアール。(チョット文字コード変換は置いといて) for ( split('&') ){ nbsp; nbsp;($name, $_)= split('='); nbsp; nbsp;tr/+/ /; s/%(..)/chr(hex($1))/eg; # URLデコード nbsp; nbsp;$in{$name}= $_; # 値のセット }
別ページからのリンクや、BBS内での過去レスへのリンクのURLに?mode=light&page=3 とかって入るんです。
197はチョットインデントミス for ( split('&') ){ ($name, $_)= split('='); tr/+/ /; s/%(..)/chr(hex($1))/eg; # URLデコード $in{$name}= $_; # 値のセット }
>196 <form action="hoge.cgi?foo" method="POST"> とかすると同時に送れたと思う。
>200 なるホードネー! それじゃー新たな必殺技を考えるからしばしお待ちを...
これでPOSTおよびGETの値を取得できるかナ! read(STDIN, $_, $ENV{'CONTENT_LENGTH'}); $_.= "&$ENV{'QUERY_STRING'}";
おお、なるほど!それなら意味がわかりました!
どうYO!これで1つのハッシュにまとめられそうな予感?
んー今のところうまく行ってないっす..
わたしは日本語EUC文字コードでしかHTMLフォーム送信をしたことがないから わからんケド、経験上EUCで送信したHTMLフォームから入力された値はEUCの URLエンコードで返ってくるのでSJIS送信の場合は必ずSJISのURLエンコード で返ってくるのかチョットまだ試したことがないから取得パラメータの文字コードの解析 は必要なのかどうか迷うところネー。
んーその前にEUC送信でつまづいてマス..
URLデコードはできた? この際、内部処理はすべてEUCで、HTML出力はすべてSJISにしては? なにかできない理由あったッケ?
できました!!とりあえず、URLデコードとやらを簡潔にすることはできました。 全部SJISですか..。それが一番いいんですかね??文字化けしにくいですよね。 どっかの解説で、日本語使うならEUCだ!という知識を身に付けたので出力までEUCにしてただけです。
確かにEUCを愛用しているわたしとしてはEUCがいちばん使いやすいし、 経験上文字化けしたことがないし、文字コード変換のプロセスも必要なくなるし、 いいことづくめだとは思っています。
そうですかー。僕の掲示板やたらと重いんで、sjis変換するの躊躇するんですが、 文字化けよりはいいかな。 ていうかEUCって文字化けしないんですか?
EUC送信部分ってlightモードDA・YO・NE?
おっと、また問題発生! さっきモードうんぬんを変更したせいで、 書き込み後のURLが?mode=commentのままになっている.. やっぱりLocationで飛ばしたほうがいいのかなあ。
lightモードとHeavyモードです(笑)
すみません。 foreach $line(@hoge_lines){ @超hoge=split(/<>/,$line); &普通にhoge; } こういうのがありまして、 &普通にhogeというサブルーチンは sub 普通にhoge{ 名前:超hoge[0] 題名:超hoge[1] } となっているとします。 このルーチン内に別のログファイルの内容を読み込んでうまく組み込むにはどうすればよいのでしょうか?
>213 GET送信ならURLに?name=value&.... がくっつく(Location: 等で飛ばさない限り) >214 Heavyモードってファイルには無いネー。これが隠し?
>213はちょっと検討中です。 heavyが隠し(笑)。こっちは重いだけでいまのところ問題なしです。
>215 @hoge_linesとログファイルの書式, 読み込んで組み込む時の上手い下手の定義とかを書いて。
>215 ネタかと思ったが...
この板,最近煽りが多いからたまにはマジレスもしとかんと(w
>220 そうダネ。この板、最近ムネオが多いネ!
結局、Locationで飛ばしました。 なんか、mode=commentとか全部postで送ったら、URLは簡潔だけど挙動がおかしいんです。 書き込み後、更新ボタンを押すと、重複して書き込まれてしまいます。
223 :
215 :02/03/06 04:45 ID:???
>>218 @hoge_linesは
$name,$title
で
ログファイルの書式は
名前<>題名<>
こんな風です。
上手いはとにかくできでどんな形でも組み込めればおいしい。
下手は組み込みを失敗している状態のことでSU!
いい忘れてたケド、昨日のjoin関数で繋げる部分は以下のように変えテーナ! print OUT join($SEPA,"$yy年$mm月$dd日","$jj時$ff分$bb秒",$in{'from'}, &nbps; $in{'message'}),"\n";
また、インデントしくじったーゼ! 224の &nbps; 部分はインデントミスさー
あーはいはい。すでにそのような感じに変えてありまっす。 あと、splitのほう、^Kは\^Kと書かないとだめでした。 ちなみに、なぜ^Kなんでしょう?? takakura^kenさんからの書き込みあったらマズイ!
これもまた説明不足だったーネ。 これはコントロール文字のつもりだったので以下のように書き換えてみて、 $SEPA= "\x0b"; # セパレート文字(コントロール文字^K)
>>223 sub 普通にhoge{
名前:超hoge[0]
題名:超hoge[1]
特別なhuga;
}
sub 特別なhuga{
open LOGFILE, "logfile.dat";
while (<LOGFILE>) {
push @LOG, sub { {name=>$_[0],title=>$_[1]} }->(split /<>/);
}
close LOGFILE;
}
#$LOG[0]->{name}
なるほど、そうでしたか。なんか特殊なものなんだろうなあと思って調べたんですが、 ^Kという文字列は僕のしょぼい検索に引っかかりませんでした..。 無知でお恥ずかしいです..
まあ、フリーのCGIなどではセパレート文字に <> などというものを使って る人がおおいけど、これだと2バイトになってしまうから、敢えて1バイトの コントロール文字を使うという心意気みたいなもので、テキストデータを処理 する際の手筋ダーネ!
なるほどです。 ところで、昨日教わったやり方だとデータファイルに<br>が入ってましたが、 これを例にならって^Rという勝手な区切り文字に変えてしまったんですが、 \x0bと同時に使って区別できる区切り文字ってありますか?
そうネー。\x1b なんかはお手ごろかと。 \x1b ESC文字(コントロール文字^[)
あ、それは\eのことですよね!僕のしょぼい検索にもひっかかりました。 ありがとうございます。 さて、そろそろ寝ます..最近、仕事中にしか寝てないんです(!) 2夜に渡って大変お世話になりました。どうもありがとうございました。 とりあえず明日全部sjis変換を試してみます..。
234 :
223 :02/03/06 05:48 ID:???
ちょっと形を変えて組み込めたんですが、 logfile.datの方から読み込んだ名前の数をカウントして もう一つの方から読み込んだ名前の横に表示しようとすると、 1に対する文句の数 2 2に対する文句の数 3 3に対する文句の数 5 と1に対する文句の数にそのまま+されていってしまいます。 これはどうやれば解決できるのでしょうか?
235 :
223 :02/03/06 05:50 ID:???
と1に対する文句の数にそのまま+されていってしまいます。× と1に対する文句の数にそのまま+されていってしまいます。文句の数がね○
>234 sub 特別なhuga{ @LOG = (); 〜以下略〜
237 :
nobodyさん :02/03/06 07:01 ID:CkyOD57T
238 :
nobodyさん :02/03/06 10:32 ID:CkyOD57T
早くしろよ。
239 :
ぷうすけ :02/03/06 11:05 ID:qVBo2uea
mkdirに関する質問です。よろしくお願いします。 $ret=mkdir($fname,0777); perlのcgiプログラム内にて、ディレクトリを上記の方法で作成して、その 中にデータファイルを作成する、というようなことをやろうとしています。 Webブラウザからのアクセスにより、上記の文は実行され、ディレクトリは作 成されます。$retには成功の1が返っていますが、実際のパーミッションは 755となっています。これは、サーバの設定のせいなのでしょうか?または、 なにかプログラム的に対策が取れますか?なお、cgiの置いてあるディレクト リのパーミッションは777になっています。
>>239 多分サーバーの設定だろう。
詳しくは俺もよく知らんが、perldoc -f umask が参考になるかもしれない。
等と適当な事を逝ってみる。
タブ区切りテキストの read.txt を読み、 ユーザーの入力を格納した %hoge と %foo で5,6列目を上書きし、 write.txtに保存したいです。 以下のように配列 @temp を一時利用したコードを書いたところ、 \tでjoinしたにも関わらず、タブ文字でなく「\t」を区切り文字に連結されました。 つまり、 print "@temp[0]\\t@temp[1]\\t@temp[2]\\t 〜 @temp[8]\\t\\n"; を実行した時と同じ結果になりました。 望む結果を得るにはどうしたらいいのでしょうか? $counter=0; open READ, "read.txt"; open WRITE, "+>write.txt"; while ($input = <READ>){ $counter++; @temp = split (/\t/,$input); @temp[5] = $hoge{$counter}; @temp[6] = $foo{$counter}; print WRITE join('\t',@temp) ; } close READ; close WRITE;
>241 '\t' "\t" この二つの違いはわかるかい?
243 :
242 :02/03/06 14:50 ID:???
いや、わかんないです。 てかそれだけヒントをもらえれば自分で調べます。
245 :
243 :02/03/06 18:46 ID:???
はぅん。こりゃ失敬。&さんくす。
YO-YOのお方、今日もいるかな?文字化けの件、解決しました!! &jcode::convert(\$value,"euc","","z"); これが動作してませんでした。第3引数がダメなようですが、何故でしょう?? それから、sjis用対策をいろいろ教わりましたが、例えば、発言者名が全部半角カナだと getcodeの返り値がundefなので文字化け対策の部分は全部素通りしてたのでした。 実際携帯から書き込む人は何故か名前を全部半角カナで書く人が多いし、 本文も全部半角カナで書かれても困るので、フォームから漢字一文字をこっそり送って その漢字コードに全部合わせることにしました。 若干不明な点を残しつつも文字化けにおびえる日々からは開放されました..。
247 :
nobodyさん :02/03/07 06:17 ID:WTUe3Qf1
age
248 :
ぷうすけ :02/03/07 17:26 ID:+Mtxnc4D
<form action='./hoge.cgi' method='GET'> <input type=password name='pass' size=8 maxlength=8> <input type=submit name='button' value='認証'> <input type=hidden name='data' value='hoge'> </form> perlのCGIにて、このようなHTMLを出力して、パスワードを 入力させようとしています。テストはWin2000 + IE5.5です。 パスワード用のテキストボックスにパスワードを入力して、 「認証」ボタンをマウスでクリックすると、正しく3つの要素が QUERYとして送信されます。しかし、キーボードでEnterを押したり、 スペースバーでボタンを押したような場合、 name='button' value='認証' の情報が、まったく送信されません。どうしてこのようなことに なるのでしょうか? 最後に、ありがとうございました。>240さん 助かりました。
>248 認証を押してないから。
250 :
ぷうすけ :02/03/07 18:08 ID:+Mtxnc4D
>249 押したYO!!
マウスボタンから指紋を検出してます。
>248 submitタイプにname属性はありません。 つーか、パスワードをGETで送るな。
>>252 >submitタイプにname属性はありません。
付けちゃいかんって事は無かったと思うが。
>248 俺はWin2k+IE5.5SP2でちゃんと送れる。 マウスクリック、スペースキー、エンターキー全て正常に送れた。
なんかこの板、おそろしく人いないんですけど。
んな、いまさら・・・・
>>248 やってみたらテキストフィールドでのEnterだけ入らなかった。
スペースでもEnterでも、ボタンを押せば送られる、という事かな。
ついでに、<input type="button" name="button" value="認証"> だと何やっても送られなかった。
仕様なのかな。
259 :
258 :02/03/07 23:53 ID:???
<input type="button" name="button" value="認証" onClick="forms[0].submit()"> でした。
普通に鯖においてあるcgiの中身は何とかして見れないもんですかね?
>260 板違い
フォームから読み込んだ"文字列"を”%95%B6%8E%9A%97%F1”のように変換するにはどうすればいいのでしょうか?
>>262 受け取った時点で既にそうなってないか???
264 :
相撲車 :02/03/08 09:39 ID:ol/NmE/5
telnetで自分のプロバの自分のいつも使ってるメール鯖にアクセスしてメール送る CGIをperlで書いて、実験には成功したけど、これ設置したら不正アクセス禁止法に 触れますか? 取り合えず、プロバの契約内容には言及してなかったんだけど。
>>264 法律勉強しな。
一応それはsendmailで第三者中継させるのと大して変わらないね。
後、一般に自分のSMTPのアカウント晒して大丈夫なのか?と。
266 :
相撲車 :02/03/08 09:44 ID:ol/NmE/5
↑のような方法をとったのは、自宅鯖だけどDNSがMXレコード登録できないやつ だったため。大目に見て欲しいのですが、どうなんでしょうか…。
268 :
262 :02/03/08 09:47 ID:???
なんかよくわからんが ~ s/(\W)/'%' . unpack('H2', $1)/eg; ってやったらうまくいきました
269 :
相撲車 :02/03/08 09:53 ID:???
>>265 さん
即レスありがとうございます。
法律の概要には目を通してみましたが、サービスの範囲内の利用と思えた
ので使用してみました。法律本文を見ないとダメなんですかね?
mail from:プロバの自分のメアド
と書いておけばいいんでしょうか?
ちなみに、smtpサーバはなぜか認証要りませんでした。そして、メールは
自鯖へアクセスしてきた人がメンバー登録したときのパスワード送信用と
いう利用目的なので、設置したとしても利用者は内容を編集できないです。
そんなのでも危ないでしょうか?
270 :
相撲車 :02/03/08 10:01 ID:???
>>267 BINDっていうものの存在を知らなかったので、調べてみます!
やっぱり相談してみるもんですね〜。ありがとうございます。(T_T)
271 :
nobodyさん :02/03/08 10:56 ID:inegq+pM
ファイル全体を@LINESに格納したて、こねくり回した場合、 現在の@LINESに格納されている文字列全体が何バイトなのかを 知る方法ってないものでしょうか?
>271 好きな方法を使えや。 1. $size = length join "", @LINE; 2. $size = 0; $size += length for @LINE;
273 :
相撲車 :02/03/08 19:39 ID:ol/NmE/5
BINDの設定のし方がよくわからんです…。一応webmin使ってるんですが、言葉の 意味がわからず、ネット中を転々…。 どこか有効な解説サイトご存知の方、教えてはくださらぬか? DNSの役割はわかるけど、細かい用語が意味不明という程度の知識です。無いに 等しいです。
274 :
nobodyさん :02/03/08 20:50 ID:JBnFAxe6
Basic認証を1000人単位で行いたいので、一件ずつ登録するわけには いかないのですが、UserIDとPassをcsv or tabで管理するので、 それを一括で登録するだけのcgiってありますか?
>>273 はぁ、吉外に葉物だな。
そういうことはインターネットの仕組みを仕組みを理解してからやれ。
276 :
相撲車 :02/03/08 23:39 ID:XJfzC2SF
>>275 忠告どうもです。
でも、仕組み理解っていってもキリが無いと思うのですが、どの程度把握しておけ
ばいいのですか?普段全く使っていない頭をどうにか使いたいのですが。
昨晩から、ずっと悩んでいた問題は結局MXレコード記録してくれないDNSに登録して
いてもAレコード参照してくれるということで解決したっぽいです。そして現在Postfis
が動かないという問題に直面。
まぁ、オレみたいな厨は家庭内LANで実験でもしてからWANに繋げろ、ということで。
277 :
相撲車 :02/03/08 23:42 ID:???
sageるべきでした。sorr...
278 :
nobodyさん :02/03/09 14:09 ID:qqwIDSpw
perlパスのはじめの「#!」は消していいんですか?
>>278 何を根拠に?
WindowsNTとか#!を解釈しないサーバならいいけどさ。
これからPerlを勉強したいと思うのですが初心者にお勧めの書籍を教えて下さい。 配布しているCGIのデザインを変えたり、とかはあるんですが最初から作ったことが無いのです。 とりあえず掲示板やアクセスカウンタなどを作りたいのですが・・ KENTと作ろうPerlでCGI はどうでしょうか?
>>280 アンチKENTなので不許可。
すぐわかるPerl
282 :
:02/03/09 19:02 ID:???
>>280 本なんか買わないで、ここで学びなはれ。
284 :
初心者 :02/03/09 19:43 ID:q9DQVSy0
Perlの質問です。 HTMLのinput type="text" name="data0","data1","data2",..."dataX"までの入力データを ループで処理したいのですが $iがループするとして $ran = "data$i"; $length = (length($in{"$ran"})); $lengthが文字数をとってくれないのですが、おかしいところありますか。
>>284 $length = length($in{"$ran"});
ところで、$ranの内容は?
当然それくらいデバッグしてんだろ?
HTML から CGI を呼び出す際に <a href="./cgi-bin/bbs.cgi">BBS</a> とかファイル名に ./ を付けた形で呼び出しますよね?これは必須ですか? あと、その呼ばれた CGI が内部で呼び出すデータファイル等にも時々 ./ が ついてたりしますが、環境 (httpd 等) によっては無いと不味いんでしょうか? いや、unix 系で安全の為にカレントは PATH に含めて居ないのは知っていますし その場合の実行方法が PATH を含めなきゃいけないのも知っています。 もしかして RFC の規定とかでしょうか?
>>286 カレントを示すだけだから無くても動くね。
>>287 CGIはURLと言う文字列によって場所が一意に決まる。
httpdはURLとファイルシステムをマッピングし、実行する。
URLにはPATHと言う概念がないため、誤実行の恐れはない。
289 :
286 :02/03/10 00:05 ID:???
>>287-288 やっぱそうですよねぇ。
web 上のサイトで (本は持ってないので) よく見かけるんですが、
あれは一体どういう理由で付けてるんでしょうねぇ。
まぁ本人に聞かないとわからないのかもしれませんが、みんな一様に
あの記述方でしたのでずっと気になっていますた。
結論: ./ は要らない。
291 :
289 :02/03/10 00:09 ID:???
>>290 「あっても動く」ではなくて?
ということは本来 (の企画?) は要るって事でしょうか?
あっても間違いでは無いじゃん。 呼び出し元のファイルの場所がカレントになるんだから./は冗長ではあるが間違いではない。 使える以上否定するのは得策ではない。
俺も「無くても動く」が正解だと思う。
294 :
291 :02/03/10 00:19 ID:???
ああ、そういう事ですか、わかりました。ありがとうございます。 私の頭が少し unix shell 寄りだったという事ですね (苦笑
295 :
初心者 :02/03/10 00:50 ID:nlk31vWZ
>>285 レスありがとうございます。
追加して状態の説明です。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ループ内に
$ran = "data$i";
print "RAN2:$in{$ran}<br>";
↑を組み込むと、ちゃんと$in{$ran}を出してくれます。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$i=1のとき
$in{"data1"}の内容は日本語文字であったり英語半角であったあり色々ですが、
$length = (length($in{'data1'}));
print "$length";
print "$in{data1}";
では両方とも正常に値を出すのですが、
{}内に変数を入れるとうまく動きません。
$length = (length($in{$ran})); →何の数字も出しません。
$length = (length($in{"$ran"})); →何の数字も出しません。
$length = (length($in{'$ran'})); →$ranを変数として認識しません。
だからさっさとその気持ち悪いかっこをはずせ。 リストと勘違いされても文句は言えん。
>>294 話終わったみたいだけれど ./が無いと動かないshellあるべさ?
./にPATH通ってないの。
unixよりとか云々じゃなくPATHを理解してないんじゃ?
>>297 >>286 >unix 系で安全の為にカレントは PATH に含めて居ないのは知っています
の事でわ???
299 :
nobodyさん :02/03/10 04:03 ID:OHdoISBH
CGIの改造を依頼したいんだけど、 一昼夜くらいで早く作ってくれる所あるでしょうか。 難しい改造ではないので、わかる人にはちょちょいだと 思うのですが。
301 :
nobodyさん :02/03/10 05:33 ID:8R88bCKC
日記CGI探してるんだけど、条件としては シンプル。観覧者による一行レス可能。 画像UPロード(これはタグで回避できるからいいとして) みたいなのないですかね? 探してみたものの、一応あったんだけど、レス生成欄がでかすぎたりとか…。 ゴミゴミしてるとか。カレンダー形式とか。 要望に会わないのばかりで困ってます;-; とにかくシンプルでタグ可能観覧者による一行レス可能。 な日記CGIないでしょうか? 知ってる方いましたら教えてくれると嬉しいです。
ちょっと勉強して改良しちゃうってのはどう。
>301 スレ違い。
まあ、そうだけど
>>301 >レス生成欄がでかすぎたりとか…。
見た目なんてHTMLなんだから適当にいじっちゃえ
あぁ>< 探してますスレッドありました>< すいませんでしたー。 向こうで聞いてミマス!
306 :
◆a/globe2 :02/03/11 03:22 ID:WZhG/BNp
うpろだを作ったんですが Macからだと拡張子を取れないようです どうすればいいんでしょうか
>306 環境変数にコンテントタイプが出てるかもしれない。 投稿者にファイルの種類も投稿してもらえば手間がないけど,信頼度は低い。 ファイルのヘッダ調べるのが確実だけど,手間がかかるためほとんど使われない。
308 :
◆a/globe2 :02/03/11 03:44 ID:WZhG/BNp
>>307 コンテントタイプの振り分けを細かくすればいいんですかね、、、。
一応拡張子を入力してもらう欄を設置するとか(Macの場合のみ表示で)
310 :
A Patch :02/03/11 06:35 ID:7j09hA/V
Apache を使ってローカルで CGI のテストをしたいのですが AnHttpd のように Perl.exe のパスを決め打ちできないでしょうか? プロバイダにアップする CGI で #!local/usr/bin などと書いておきたいので #!C:/Perl だと困るんです。アップするたびに書き換えるのも面倒だし それがために Perl を C:\local\bin にインストールなんて馬鹿げたことも したくないです(複数のサーバを持っていてそれぞれ Perl のパスが 違ったら終わりじゃない?)。 出来ないのであれば素直にあきらめますが何か設定があれば あるいは何らかの方法があれば教えていただきたいです。
>>310 バッチファイルを作る。
@echo off
perl a.pl
で、それを実行。
kentと作ろうperlでCGIのことなんですけど うちの近所の本屋はCGI関連の本が少ないんですよ。 だからkentと作ろう〜の内容もよく知らないんです。 そこで聞きたいのですが、kentと作ろうperlでCGIには Windows98にperl本体をインストールするところや if文などの関数についても解説してるでしょうか?
314 :
◆a/globe2 :02/03/11 21:00 ID:1vbRZmtL
うpろだでもう1つ質問があるのですが 指定した投稿できるファイルの最大容量 よりファイルサイズがちっさいのにエラーになります インターナルサーバーエラなのでCGIだしてるエラーではないようです cgi-lib.plのReadナントカっていうサブルーチンを取り込んでるんですが それが問題かなともいます imgboradなどではそのようなエラーは出ないようなので どういうことなのかなと思っております わかる人がいらっしゃれば教えてください
>>314 ローカルでコマンドラインで試せ。いきなりWeb鯖で動かすなボケ。
>>314 >インターナルサーバーエラなのでCGIだしてるエラーではないようです
99.9%以上CGIが出しています。
318 :
310 :02/03/12 00:40 ID:???
>311 すみません、意味がわかりませんでした。
広告をWEBに掲載してるんですが、クリック数を調べて欲しいと言われました。 SSIで一括表示してるんですが、リンク先のURLを変えずクリック数をカウントするにはどうしたらいいでしょうか
>319 リンク先にアクセス解析を入れてもらう。
>>319 CGIを経由して、クリックをカウントした後、Locationで飛ばす。
322 :
sage :02/03/12 03:08 ID:XpAJ+W0c
>319
>リンク先のURLを変えず
って部分が引っかかるのだけど・・・
結果的に表示されるページが変わらなかったらいいって事?
それとも<a href="
http://www.hoge.com ">という
タグ自体が変わったらまずいって事?
通常は321さんの方法を使うけど、これだとタグ自体が変わるしね。
323 :
ぷうすけ :02/03/12 07:00 ID:al7KKwB3
あるURIのhtmlを、CGIから取得することは、可能でしょうか? 言語はperlです。
325 :
ぷうすけ :02/03/12 10:10 ID:NiSfFmxx
>324さん すんません、書き方悪かったです。 わかる方、方法を教えてください。私は何処へいくべきでしょうか?
>325 googleに行って「LWP」や「socket」を「perl」と組み合わせて検索。
文字コードを UTF-8 にした CGI を作成しようとして躓いてます。 CGIを UTF-8 で保存して実行してみたら、一行目でエラーが出ました。 > perl -v This is perl, version 5.005_03 built for i386-freebsd >perl utf8.cgi Unrecognized character \357 at utf8.cgi line 1. テキストエディタで見るとちゃんと先頭は #!/usr/bin/perl で始まっていて、 改行も LF になってるのですが、バイナリエディタで見ると、 # の前に EF BB BF というなぞのコードがくっついており、 これのせいでエラーが出ているようです。 これを動くようにするにはどうしたらいいんでしょう。 作成に使ったのは Windows 用の Dana というテキストエディタなのですが、 バイナリエディタで先頭3文字削除しても、 また Dana で編集するとその3文字がくっつくし…。 つか、CGI を UTF-8 に改造するってページ検索したけど、 こんな問題どこにもなかったし。秀丸とかだといいのかなあ。 …長文スマソ。入り口以前のところでつっかかってて泣きそうです。
>>327 utf8に対応しているのはperl5.6以降です。新しいperlを入れましょう。
それとutf8プラグマ使った方が良いでしょう。use utf8;
Perlのユニコードの対応は万全とはいえないので、・・・(以下略)
>>328 アドバイスありがとうございます。
たしかにWin用のActive Perl(5.6.1)では動きました。
そこで、perl5.6 が入っている biglobe にアップして
実験してみたのですが、500エラーになります。
さっきとは違うエラー内容なのですが、やはり
#!/usr/bin/perlの行でひっかかってます。
エラーログには utf8.cgi: Exec format error としかないのですが、
まったく同じ内容のスクリプトを SJIS で保存してうpすると
こっちは問題なくうごきます。
ちなみに、テストスクリプトは
#!/usr/local/bin/perl
print <<__EOD__
Content-type: text/html;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;">
<title>UTF-8 で出力するCGI のテスト</title>
</head><body>
<h1>UTF-8 マンセー( ´∀`)</h1>
</body></html>
__EOD__
こんな感じです。
>>329 print <<__EOD__;
;は付いてるか?
それとuse utf8;を使ったほうがええやろ。
>>330 げ!
まあ、2行目のprint 以下になんもないので、見逃してください。
>>331 telnet でシェルに入って実行した時のエラー
>./utf8.cgi
./utf8.cgi: 鏤殖!/usr/local/bin/perl: not found
use: not found
: not found
print: not found
>
( ゚д゚)…ミンナハドウヤッテクリアシテルノカワカラナイヨ
あきらめて SJIS で HTML4.01 Strict な CGI にします・゚・(つД`)・゚・。
最後の文、意味不明だ。無視してください。
>>332 #!/usr/local/bin/perl
↑これはあっているの?
#!/usr/local/bin/perl5 とかだったりしない?
335 :
332 :02/03/12 17:14 ID:???
>>334 同じソースをSJISでうpすると動くんですぅ。
SJIS で動作している CGI をそっくりそのまま UTF-8 に変換して
エラーが出てるんです。
UTF-8 に変換したのがローカルで perl utf8.cgi で動いてるのも確認してるし、
use utf8; もいれたし、
FFFTP でアスキー送信のボタンがへっこんでるの確認して送信してるし、
うpされたファイルのバイト数が減ってる(CRの分)確認してるし。
他にどこを確認したらいいでしょうか。
うpと書くのを止める
>>335 >作成に使ったのは Windows 用の Dana というテキストエディタなのですが、
>バイナリエディタで先頭3文字削除しても、
>また Dana で編集するとその3文字がくっつくし…。
これが原因でperlのパスがおかしくなってると思う。
>>332 のエラーは実行するプログラムが見つからないってことでしょ。
普通のテキストエディタ使おうよ。
338 :
332 :02/03/12 17:53 ID:???
自己レス utf8.cgi を #!/usr/local/bin/perl use utf8; require "utf8.pl"; にして、ascii で保存。 utf8.pl を print <<__EOD__; Content-type: text/html; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;"> <title>UTF-8 で出力するCGI のテスト</title> </head><body> <h1>UTF-8 マンセー( ´∀`)</h1> </body> </html> __EOD__ 1; にして、UTF-8 で保存。サーバーにうpして動きました。 よその人がどうやってるのかわからんけど、 今後はこの方法で作成します。みなさんありがとう。
339 :
332 :02/03/12 17:55 ID:???
>>337 普通のテキストエディタってどんなのかわからないんですが、
xyzzy も terapad も同じように先頭3文字くっつきやがりました。
疲れました。
>>339 秀丸はEF,BB,BF=BOM(Byte Order Mark)付いてないみたい。
ほとんど秀丸しか使ってないからそういうものだと思いこんでしまった。ゴメン。
EmEditorは付けるか付けないか選べた。notepadは付いてた。
とにかく#!をシェルに読ませないことには動かないでしょう。BOMは邪魔だね。
>>339 xyzzyだとM-x change-fileio-encodingでutf8nするとはじめの3バイトつかないよ。
utf8だと付く。
ってことでがんばれー。
342 :
nobodyさん :02/03/12 18:36 ID:ip/rxryK
perl 5.6.1使用。 use File::Basename; で宣言してbasenameを使いたいんだけどうまくいかないです。 $filename = 'C:\tmp\mona.jpg'; $basename = basename($filename,""); だけど$basenameには全く処理のされないまま$filenameと同じモノが… 何が悪いのかな?
343 :
339 :02/03/12 18:36 ID:???
>>340-341 なるほど。先頭につけないエディタもあるんですね。
xyzzy に utf8 と utf8n と2つあるのはそういう意味だったんですか。
とりあえず、メインエディタを Dana から xyzzy に移行することにします。
ありがとう。
>>342 こんなんでどう?
use File::Basename;
fileparse_set_fstype(MSDOS);
$filename = 'C:\tmp\mona.jpg';
$basename = basename($filename,"");
print $basename;
345 :
342 :02/03/12 18:55 ID:???
>>344 うわっ、うまく行きましたがな!ありがとうです。
fileparse_set_fstype(MSDOS); ってのが多分ミソなんでしょーけど
これを自動判定させる方法って無いもんでしょうか?
敵はUNIXもMacも想定せなアカンので…
fileparse_set_fstype(MSDOS) if $^O eq 'MSWin32'
347 :
nobodyさん :02/03/12 19:15 ID:YNqS+HR0
LWP::Simple; って、タイムアウトを設定できますか?
>>347 がたがた言うならsocket bind acceptでも使えば?
349 :
nobodyさん :02/03/12 19:26 ID:YNqS+HR0
わかった、素直にLWP::UserAgent使うよ。。
350 :
ぼくフェロー :02/03/12 19:54 ID:/5Jn0bAA
質問します. ある変数 $a に入っている文字列が数値を表すか否か 判断するにはいかなる手段がありますでしょうか? たとえば,次のように判別したいのですが. $a = 100 ==> 数値 $a = -1.0 ==> 数値 $a = 1e-100 ==> 数値 $a = 'abc' ==> 数値ではない.
351 :
342 :02/03/12 19:58 ID:???
>>346 おにーたん、$^O をどこで使ったらいいのかわからないよ(´Д`;
$FORM = new CGI;
$filename = $FORM->param('img');
fileparse_set_fstype(MSDOS) if $^O eq 'MSWin32';
if ($filename) {
だらだら処理
}
反応してくれないよ…
352 :
346 :02/03/12 20:38 ID:???
ちょっとまった。 「敵はUNIXもMacも〜」って、CGIを動かすブラウザがUNIXかMacかわからんってこと? UNIXかMacかわからないサーバで動かせるスクリプトを組もうとしているのかと。 $basename =~ ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0]; でいい? \とか:とか/が入ってるファイル名は上手く取れないが、一応Win/unix/Mac対応。
353 :
346 :02/03/12 20:39 ID:???
× $basename =~ ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0]; ○ $basename = ($filename =~ /[\/\\:]([^\/\\:]+)$/)[0]; スマソ。
素直にFile::Spec使えや
パッケージ厨 VS システムコール厨 とかってスレッド立ててください!
356 :
nobodyさん :02/03/12 23:52 ID:OrWEi2X1
357 :
識者 :02/03/12 23:55 ID:???
教えません。
>356 新着スレ表示するところで<BR>を書かない。 ページにフォームを書き出す。
HNS使いたいんだけど、設定がイマイチ(というかサパーリ)わからん。 ・・・というのはここで相談してOK?
説明書を読んだ証拠と自分で頑張った形跡を見せればややOK
362 :
nobodyさん :02/03/13 06:41 ID:P3iVCwDD
yy2chですが、<BR>ではなく<OL>と<LI>削除でいけました。
>362 よくやった!
364 :
nobodyさん :02/03/13 22:30 ID:0MaZQ+xJ
ASPを勉強したいのですが、いい参考書ないですか?
365 :
nobodyさん :02/03/13 22:35 ID:12II/YOS
Cで作る、CGIの本でなんかイイ参考書あったら教えてください、おねがいしマッスル
368 :
nobodyさん :02/03/13 22:53 ID:12II/YOS
369 :
nobodyさん :02/03/14 11:58 ID:zKtt7BTb
CGIの中からWinSockって使えるの? たとえばVC++でCGI作って、特定のIPとデータ交換するとか。 ボケボケの質問でスマソ。
>369 なんでVC++? 普通にperlで組んでクライアント側にHTTP処理するコード書けば良いだけでは?
371 :
369 :02/03/14 13:24 ID:jSrpksxZ
>>370 ユーザの要求なもんでどうにも・・・。
あと、サーバーごと納めるんで、コードとか見せられないんですよ。
>>369 さん
もちろん出来ますが、CGIでやる意味が分かりません。
クライアントの要求が来てから、データ交換にいそしんで、
長い間応答しないのは問題があると思います。
なぜデータ交換をCGIでやらないといけないの?
373 :
369 :02/03/14 15:07 ID:OQoEp2Bk
>>372 さん。どもです。
データ量そのものはたいしたものではないのですが、
とある機器(WEBサーバーLAN内にある)を、インターネット経由で
ブラウサから制御しようとしているんです。
その辺の知識がまだ乏しいので、今のところCGIでできるかな?
と思っているのです。もっといい方法があるのでしょうが
今の私には思いつきません(あせ
>>373 それ、トロイの木馬という気がしてきた・・・。
セキュリティホールになる可能性大ですぞ。
外部の馬の骨−CGI(80番はファイアウォールで許可)−内部からしかアクセス出来ない機器
375 :
perlでgzipされたhtmlファイルの作成 :02/03/14 20:06 ID:gUGqkp2C
perlでhtmlページを作成したいですが、 gzipで圧縮した、htmlファイルを作成する方法を教えてください。
377 :
nobodyさん :02/03/14 23:41 ID:yfgde3s4
>>374 ドキッ!!
ちょっとまだ良く理解できてないですが、なんかまずそう?!
そういう構成のシステムそのものに問題があると言うことですか?
実質ファイアウォールが無効化。 例を挙げると、ブラウザから打ち込んだコマンドを実行し、結果を返すだけのCGIがある。 CGIはサーバサイドで動くので、CGIの実行権限の範囲でCGIの使用者は何でも出来ることになる。 (CGI設置者であったりnobodyであったり。) そのCGIに認証が必要ないとすれば、誰でも使えるシェルが公開されているに等しい。 ファイアウォールでいくら外部からのアクセスを拒否したとしても、そんなCGIがあれば 簡単に外部からの侵入を許すことになる。 いくら対外的なセキュリティを強化しても、外部の人間の言いなりになる産業スパイが自社にいてはまったく意味がない。 みたいな。
379 :
nobodyさん :02/03/15 00:28 ID:jooXMX1O
>>378 わかるようなわからないような。うう・・・。
認証と言うことは、たとえばパスワードのようなもので
ログインみたいなことをさせるとか、同時にそのCGIを使えるのは
一人のみに制限するとか(できるのかしら?(あせ))
CGIの持っている機能そのものは、当然コードに埋め込まれているものだけですが、
その存在だけで、第3者がサーバーに侵入できてしまうと理解して良いんですよね。
インターネット経由での遠隔操作でそういう制御をやってる人って
どうやって実現しているんだろう。
インターネットは使わないほうが良いって事なのかしら?
ふ〜、この世界って奥が深いのですね。どーしよ。
380 :
名無し ◆Rr5/ytdE :02/03/15 00:36 ID:YznOuxlh
age
>>380 =381
ミミ彡ミミミ彡彡ミミミミ
,,彡彡彡ミミミ彡彡彡彡彡彡
ミミ彡彡゙゙゙゙゙""""""""ヾ彡彡彡
ミミ彡゙ ミミ彡彡
ミミ彡゙ _ _ ミミミ彡
ミミ彡 '´ ̄ヽ '´ ̄` ,|ミミ彡
ミミ彡  ゚̄ ̄' 〈 ゚̄ ̄ .|ミミ彡
彡| | |ミ彡
彡| ´-し`) /|ミ|ミ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ゞ| 、,! |ソ < そんなに急ぐなよ道は長い
ヽ '´ ̄ ̄ ̄`ノ / \________
,.|\、 ' /|、
 ̄ ̄| `\.`──'´/ | ̄ ̄`
\ ~\,,/~ /
\/▽\/
383 :
perlでgzipされたhtmlファイルの作成 :02/03/15 11:26 ID:2gjP1S/1
>>375-376 gzipが/bin/gzipにあります。
CGIでページをgzip化して表示できるので、このデータをそのままHTMLに書き出せたらと思ったのですが。
>>380 cgi-binに画像が置けないのなら別のディレクトリに置けばいいだけの話。
初期設定で画像のおき場所をフルパスで指定すれば良し。
ex:$datafileurl = 'http;//www.2ch.net/imgdir/';
リンク先を見てないのでうまくいかないかも。
KENT-WEBさんの掲示板に、
トリップ機能を搭載したいと思っています。
過去ログを見たけどわかりませんでした。
>>4-5 にある「スクリプト改造工房」はdat逝きでした…
できれば、2ちゃんと同じトリップが使えたらいいなと思っています。
当方スキルは、一応Perlを初心者向けリファレンス本を読んでいる程度です。
トリップを搭載したいのは、プチ★ボード(petit.cgi)です。
どなたか、コレを実現された方、もしくは実現方法をご存じの方、
教えて下さい。よろしくお願いします。
KENT-WEBさんのサイト
ttp://www.kent-web.com/ プチ★ボード配布コーナー
ttp://www.kent-web.com/bbs/petit.html
>>386 スレ違い申し訳ありませんでした。
ありがとうございました。
こんな感じに実装させて頂きました。
#トリップ機能
if ($in{'name'} =~/◆/){
$in{'name'} =~ s/◆/◇/g;
}
if ($in{'name'} =~/#/){
$in{'name'}=~ s/\x23(.+)$/ "◆".substr(crypt($1, substr($1, 1)), -8)/e;
}
>>387 騙されてるって・・・
↓こうしなさい。
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x20\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
ローカルでCGIをブラウザで見れないんですけど何か方法ないですか?
>>368 何故わざわざ"\x23"?"#"じゃダメな理由でもあるの?
>389
HTTPD入れれ
>>389 Apacheインストールしなきゃ動かんバカ
>>388 エ━━(゚Д゚lll;)━━ッ!?
騙されてたんですか?
>>390 >何故わざわざ"\x23"?"#"じゃダメな理由でもあるの?
そのほうがかっこいいから。
それと
>>387 みたくtr演算子を使う時に#じゃ困る。
>>394 俺はエディタの表示が#以降がコメントの色になるから\x23使ってる。変かな?
◆AnfivKvE です。
>>388 ので設置してみました。m(_ _)m
#aa~=aa
見たいなトリップはやっぱり認識されないですね…
試しに、「#aa~=aa」でここに書き込んでみます。
むこうでは、◆4tC6xcI.になってしまいました。
それ以外のトリップは全て大丈夫でした!(´-`♪
ありゃ・・・同じですね・・・ #c+~=y:Arは、◆SLjREV3gになってしまいました
>>397 「#aa~=aa」でも問題なく◆4tC6xcI.になったが・・・
基本的にどんな文字でもOKなはず。日本語でも、制御文字でも。
#$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
コメントアウトして、入力がおかしくないか確認したら?
400 :
399 :02/03/15 16:00 ID:???
ごめん間違ってた。
>>399 レスありがとうございます。◆AnfivKvE です。
試してみましたので報告致します。 m(_ _)m
コメントアウトしてテスト#c+~=y:Arという名前で入ってみました。
結果→テスト#c+~=y:Ar
元に戻してテスト#c+~=y:Arで入室
結果→テスト◆SLjREV3g
2ちゃんねるで、テスト#c+~=y:Arで発言
結果↑
トリップと名前は全てコピペしました。
402 :
388 :02/03/15 16:50 ID:???
>>401 これでどうかな。
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
>>402 トライしました!完璧でした!
テスト#c+~=y:Ar → テスト◆NAOKmK0E
ありがとうございます! ヽ(`Д´)ノ ウワァァン
コレから先に見る方が居るかもしれないので、
成功したヤツを書いておきます!
本当にありがとうございました!
ここからソース
書き込み処理直前、cookie発行後。
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
ここから、トリップ作成サブルーチン
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x21\x23-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
404 :
388 :02/03/15 18:29 ID:???
>>403 全然完璧じゃなかった・・・
また出直してきます。
>>404 =383
いやいやいやいや
お陰様で設置できました
本当にありがとうございました
m(_ _)m
406 :
388 :02/03/15 18:42 ID:???
>>405 そうじゃなくて、まだ間違っているので注意。
「#"」ってダメじゃない?
>>406 マジですか・・・?ちょっと試してみます。
408 :
388 :02/03/15 18:45 ID:???
&quot;になってるだけだった・・・ 本格的に鬱だ・・・
2ちゃんねる #"aaaa→◆TVWmrXp6 Perlスクリプト #"aaaa→◆RlscB8VU 確かにダメでした…
411 :
388 :02/03/15 18:46 ID:???
HTMLエスケープを先に処理しないとダメみたいね。思わぬ落とし穴。
412 :
388 :02/03/15 19:00 ID:???
たぶんこれで大丈夫だと思う・・・ sub trip { my $key = shift; $key =~ s/"/"/g; $key =~ s/</</g; $key =~ s/>/>/g; my $salt = substr("${key}H.", 1, 2); $salt =~ tr/\x00-\x2d\x7b-\xff/./; $salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/; return substr(crypt($key, $salt), -8); }
414 :
386 :02/03/15 19:12 ID:???
お、いつのまにかすごい数のレスが。
>>388 ごめん、騙したつもりはなかったんだけど。
確かにsubstrの使い方とかよく覚えてなかったし、テストもしてないけどさ。
ところで、s/&/&/g; もしたほうがいいんでは?
結果報告です!
#"aaaa
2ちゃんねる→◆TVWmrXp6
Perlスクリプト→◆TVWmrXp6
#<aaaa
2ちゃんねる→◆DdwRIQ4Q
Perlスクリプト→◆DdwRIQ4Q
#>aaaa
2ちゃんねる→◆nxB5V1NE
Perlスクリプト→◆nxB5V1NE
今度こそ完璧です!できました!
他の普通のトリップも全部変換できました!
ありがとうございました!
他に見る方が居るかもしれないので、
>>413 に
ソースを書いておきます!
お世話になりました。m(_ _)m
416 :
388 :02/03/15 19:16 ID:???
>>414 2ちゃんの名前欄は&はエスケープしないかな?よくわからんけど。
>>414 さんのもふまえまして…
書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
</ここまで>
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
$key =~ s/&/&/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
418 :
388 :02/03/15 19:18 ID:???
>>417 ふっふっふ、&quot;とかをそのまま入力してはダメなのだ。
&についてはそのままで大丈夫そうな気がする。
&は変換しない方がいいみたいでした
#&aaaa
$key =~ s/&/&/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆JwJPq806
#$key =~ s/&/&/g;
2ちゃんねる → ◆QQXkbDVs
Perlスクリプト → ◆QQXkbDVs
>>417 つーかここにちゃんと表示されてないですねw
>>418 いやぁ… (´ー`ゞ
というわけで書き直します。
トリップ生成ルーチン
書き込み処理直前、クッキー発行後
<ここから>
#トリップ機能
$in{'name'} =~ s/◆/◇/g;
$in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e;
</ここまで>
#----------------#
# トリップ生成 #
#----------------#
sub trip {
my $key = shift;
$key =~ s/"/"/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
my $salt = substr("${key}H.", 1, 2);
$salt =~ tr/\x00-\x2d\x7b-\xff/./;
$salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/;
return substr(crypt($key, $salt), -8);
}
ありがとうございました お世話になりましたm(_ _)m
すいません。便乗質問になっちゃうんですけど、 YY-BBSにこのトリップ機能をつけるにはどこにこのコードを 付け足せばいいんでしょうか? ### --- ログ書き込み処理 --- ### sub regist { | 略 | #トリップ機能 $in{'name'} =~ s/◆/◇/g; $in{'name'} =~ s/\x23(.+)$/ "◆".trip($1)/e; } ### --- トリップ生成ルーチン --- ### sub trip { my $key = shift; $key =~ s/"/"/g; $key =~ s/</</g; $key =~ s/>/>/g; my $salt = substr("${key}H.", 1, 2); $salt =~ tr/\x00-\x2d\x7b-\xff/./; $salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/; return substr(crypt($key, $salt), -8); } こんな感じにしてみたんですが書き込みのときに名前を「名無しさん#aaaa」 でやったんですがそのまま「名無しさん#aaaa」と表示されてしまいます・・ どこを直せばいいんでしょうか?
426 :
nobodyさん :02/03/16 19:29 ID:SKQhp2KR
プロの方に質問です、 CGIのスクリプトを書くにあたって、 処理ごとにファイルを分けるのと、ひとつのファイルにすべての 処理をさせてしまうのとどちらがどう違うのでしょうか。 それぞれ利点欠点などはあるのですか?
perlCGIにアクセスがあったときに、該当HTMLファイルに飛ばしたいのですが、 このHTMLファイルはログの増加にあたり移動したりするので、 ブラウザのアドレスバーにこのURLを表示したくありません。 かといって全行perlに読まして書くのは処理が重くていやなのです。 location: を使ってみましたがURLがかわってしまいました。 どうかご教授ください。
>>428 いまいち意味不明だが、シンボリックリンクじゃだめなのか。
>>428 ブラウザのアドレスバーに表示させない。だけならば、フレームに隠すのがお手軽。
>>428 もしかしてこれで処理が重くなるほどすごいhtmlなの?
open F, "go_this_page.html";
while (<F>){ print; }
close F;
なぜか書き込み失敗してるみたいのような??
>>430 シンボリックリンクはHTMLファイルにするのでしょうか。理解できませんでした?
>>431 フレームは確かにできそうですね。ありがとうございます。でもフレーム未使用の方法はないのかに。
>>432 別に1件1件はたいして重くないですが、それでもHTMLに飛ばすよりはだいぶ重いように思います。
434 :
nobodyさん :02/03/17 01:31 ID:4IUULEh/
RedHat7.2JでCGIサーバとして動作させようと思っています。 ルート直下の/cgi-binでCGIを動かそうと思っているんですが、 その際CGI動作確認とかFTP転送とかするためにCGIのアカ ウントを作成するのがいいかなあと思うんですが、みなさんは どうしていますか?
サンクス 向こういってみます
sendmail 使って大量のメールを送信するときのことなんだけど。 1.サーバの負荷をおさえつつ送信するなんかイイアイデア。 2.途中で逝っちゃった場合の状況の知り方と対処。 なんつーのが知りたいっす。Webで検索かけまくったけどコレって いうのがナイと思う。
まずなんで大量のメールを送りたいのかを小一時間(略
>>439 ああ、メールマガジンのCGI作ってるんですわ。
>>440 物は言いよう。
通常、それはCGIの範疇ではないぞ。
>>441 物は言いようって何かひかかるが、ようはスパムかなんかのCGI作ろう
とかしてんだろって言いたいのかな? そんな事はしてないが・・・。
ま、それはそれとして、例えば 5 件 send したらちょっと休むとか、キュー
を介すのとそうじゃないのでどうなのかとか、そういう事が聞きたいんだけ
ど、CGIの範疇じゃない? 今のところ、ループでぐるぐる回して送信してい
るだけなんでサーバの負荷の大きいのかなあと思った次第。
板違いならスマソ。。。
上のキャップなんだけど my $salt = substr("${key}H.", 1, 2); ってどういう意味(ここ ${key}H.) あと $salt =~ tr/\x00-\x2d\x7b-\xff/./; $salt =~ tr/\x3a-\x40\x5b-\x60/A-Ga-f/; って何を何に?
8桁作るのに、cryptとmd5、どっちがどの程度重いの?
>443 perldoc -f tr perldoc perlop >444 perldoc Benchmark
446 :
nobodyさん :02/03/18 02:50 ID:e/HSAhdE
perlでアクセスカウンタを作ってうまく動いたんですが、フレームを使ったページに 組み込むとエラーが出ます。SSIのincludeでアクセスカウンタcgiを呼び出して使って たんですが。通常のページとフレームを使ったページ内に入れるのとでは何が違うの でしょうか?
>446 答え飽きました≒過去ログ読めやがれ
>>443 キーが短い時も種を生成できるようにしてあるんでないのかな。
449 :
446 :02/03/18 03:23 ID:e/HSAhdE
>>447 フレーム アクセスカウンタで2ch発言検索はしたけどHITしなかったんだよ〜
>>446 ____ l
\ ―┼―ヽ \
| ――――― / | ゝ
_/ / |
/ _」
l / || ヽ ―┼― l
ヽ ┌―┐ ―┼― ┌―――┐ / ̄ ̄ ̄7| | ―― ―┴― _|__/
_ .| ┌┤ ――┼―― | | | ― 「 ̄ ̄ ̄ ̄| / | / ̄\
| | ̄ ̄ ̄| / | | / ― | | / |/ |
人| □ 」 / \ | | / ┌‐┐ | | | /| /
ノ ヽ―――  ̄ ̄ ̄ ̄ヽ ├―――┤ / ├‐┤ ノ |_」 ヽ/ ヽ _/
_____ ────
| __ ┌───┐
| ┌┐ ─┼ ├───┘
./ └┘ | / ─┼─
/ l / ヽ | ノ /─┐
/ ── 」 / 」
| || /
| ̄ ̄ ̄ ̄ ̄| ||____|_ /
| | /| / ̄ ̄ ̄ ̄| ̄ ̄
| / | |
/ / .| |
/ _| /
 ̄ ̄ ̄ ___/
ヴォケってなんですか?
夢の中へ行ってみたいと思いませんか?
いやーん 男とデュエットしたことなかったのに。
php と同じようなコマンドセットを perlで使用できるモジュールとかありませんか?
うっさい ぼけーーー もともとperlとPHPが似ているので、 使用状況に応じて簡単に変換できたらよさそうじゃんか。
>>457 で?言いたいことはそれだけかい?知ったかくん。
459 :
nobodyさん :02/03/19 03:54 ID:rsFIfwz6
既存のデータファイルのデータからHTMLファイルを作り出すスクリプトを作ったのですが、 ローカルでは動作するのにサーバーに転送すると必ずInternal Server Errorになります。 エラーログを見てみるとPremature end of script headers:だけ書かれていました。 またエラー箇所を探したのですが、起動のたびにエラーになるlineが移動して1箇所には定まりません。 これはメモリ不足によるプロセスの強制終了の可能性と考えたほうがいいのでしょうか? よろしくお願いしたします。
@
>>459 headerが出力されてません。ってエラーなわけで、
ローカルでは動いてるということは…
スクリプトで使ってるモジュールがサーバには無い、とか予想してみる。
>>458 あなたの言いたいことはそれだけ?無駄にレスをする方。
言いたいことは「礼儀を知らんガキがでかい口を聞くな」
知らない人のことをわかっているかのようにそれも「ガキ言葉」で代弁しているあなたこそガキじゃん。 でも正直なところはいいね。 ガキ流れは、 「php使えばいいだろ」のあたりからなってしまいました。オレもガキじゃん。
465 :
459 :02/03/19 12:54 ID:mcTfQ2cd
>>461 ありがとうございます。
特にモジュールは使用していません。ごく基本的な関数のみで作ってあります。
何より不可思議なのは、どこの時点でエラーになるのかがCGIを動かす度に
変わるということです。例えば...
ループA{
ループB{
サブルーチン
}
}
となっていて、
1回目はループAの47回目、ループBの71回目ではエラーがすでに発生
2回目はループAの47回目、ループBの70回目ではエラーがすでに発生
3回目はループAを37回目、ループBを69回目ではエラーはなし
4回目はループAを37回目、ループBを70回目ではエラーはなし
5回目はループAを37回目、ループBを71回目ではエラーはなし
という具合に、いつまで経ってもエラー箇所が一箇所に定まらないのです。
ただループAが37回目のどこかで発生するのは確かなんですけど。
>465 ソース見せれ。
467 :
:02/03/19 14:31 ID:ZgA62M2H
2ちゃんねるのクッキーをまねしようとしてるんですが クッキー読むスクリプトはみつかるのですが 保存するところがみつかりません、もしかしてCGIのほうでやってるんでしょうか?
なにいってるのかわかりません
470 :
459 :02/03/19 19:30 ID:LM+0/bSK
>>461 >>466 サーバー会社へ出していた同様の質問の回答がやっと帰ってきました。
------------------------------------------------------------
確認いたしましたところ、お客様がご利用のCGIは XXX共有サーバーの
CPU Time の制限にかかり、サーバーエラーとなっていました。
XXX共有サーバー は、共用のサーバーですので、高負荷状態に
陥ることを防ぐためにこちらの制限を行っております。
-------------------------------------------------------
ということでした。すみません、解決しました。
またよろしくお願いします!
471 :
123 :02/03/19 21:45 ID:???
cgiとかでよく使われている、Locationってどんな働きをするんですか?
>>471 俺は「使っているのを見て知った」んで、どうやってLocationを知ったのか謎だ。
後学のために教えてくれ。
ところでGoogleって知ってるか?
474 :
nobodyさん :02/03/20 23:54 ID:Hs1uL44x
CGIを使用してフレーム全解除属性(target="_top")を 付けた時のようにページを転送することは可能ですか?
475 :
nobodyさん :02/03/20 23:56 ID:Hs1uL44x
>474-475 CGIは基本的にブラウザの挙動をいじれないので,不可能と思われ。 フォームでターゲット指定したり,JavaScript系を使ったりすれば可能。
>>474-475 普通は
<form action="hoge.cgi "target="_top">
のようにCGIを呼び出してLocationで飛ばすけど、
それじゃ不満かい?
Locationが使えないサーバって存在するん?
うちのサーバlocation使えへん…
481 :
nobodyさん :02/03/21 15:27 ID:SSRvR1vK
KENTの掲示板でも半角を使用したいのですが、 &jcode'convert(*value,'sjis'); ↑部分を取り除くと使用できるようになるのはわかるんですが、 EUCなどの対策になにかいい方法はないでしょうか?
482 :
nobodyさん :02/03/21 15:27 ID:SSRvR1vK
すみません。 KENT× KENT氏○
(( ) )) (( ( ) ) ) ( ( ( ) ) ) ’ (( ) ) ) ( (( | | ) ) ‘ (( | | ) ) ‘ ’ | | 春ですね。 ○イザベラ! | | ’ ξ○ξ スミス・・・ −+− | | V , | | | | /\ / \ /\
484 :
hanamogera :02/03/21 15:37 ID:c8Atj9bt
下のソースでフォームデコードすると、$commentの中身だけなんだか数字になっちゃうんです。 何ででしょうか? sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value, "sjis", "", "z"); $value =~ s/&/&\;/g; $value =~ s/</\<\;/g; $value =~ s/>/\>\;/g; $value =~ s/\"/\"\;/g; $value =~ s/<>/\<\;\>\;/g; $value =~ s/<!--(.|\n)*-->//g; $FORM{$name} = $value; } $name = $FORM{'name'}; $title = $FORM{'title'}; $comment = $FORM{'comment'}; $comment = ~ s/\r\n|\r|\n/$br/g; $mode = $FORM{'mode'}; }
487 :
nobodyさん :02/03/21 21:53 ID:zzUVZQ93
一定時間ごとにCGIを自動起動させたいんですがどのような方法あるでしょう? アクセスカウンタが20いくごとに起動、とかの方法はわかるんですが、 一定の時間ごとに起動させるというのは何を使えば良いでしょうか?
>>487 cron。
定期的に出てくる質問だなぁ・・・。
クーロンタブをつかうか、 あなたが一定時間ごとにアクセスしてこのときに実行させるか あなたならどっち?
cronって権限無いとほいほい使えないよね。
491 :
nobodyさん :02/03/21 23:01 ID:rmv2GYdP
>>487 ある一定の時間を指定して、CGIの呼び出しがあったときにチェックして、
その時間が過ぎていたら処理を行い、次に処理する時間もそのときに指定する
チェックルーチンを入れれば、cron使えなくても擬似的に出来るよ。
492 :
487です :02/03/21 23:39 ID:zzUVZQ93
>>488-491 ありがとうございます。cronですね、使えるかなぁ・・・
491さんの方法もよさげだけどやり方わかんないす。
参考にならんと思うが、漏れは昔こんなプログラムを動かしていてプロバイダから警告がきた。 これは止めておいた方がいいぞ。 while(1){ # ここにコード sleep(60*60); }
494 :
nobodyさん :02/03/22 00:14 ID:p0uEX1fS
使う必要がないもんだから俺は知らないけど、確か、 年月日時分秒をシリアルな数値で獲得できるだろ? 処理後にあれを一日だったら1日分足して置けばいいんだよ。 いろいろやり方ありそうだよな。ほかにも。 どっちにしてもそんなに難しい処理じゃないと思うよ。 一日単位だったら、単純に日にちがカワったら処理をして、新しい日にちに 書き換えたらいいんだし。
495 :
487です :02/03/22 01:24 ID:esA90bh2
cronを使わない(使えない)場合に定期的にcgiを自動実行させるためには アクセスカウントUP時に何回かに1度の割合で実行させる、という方法以外に 実行させる方法あるのですかね? >493の方法は常にpgを動かしておきsleepが切れたときに本実行させる ものだと思いますが止めたほうが良いとのこと。 >494のようにどっかに日時を持っておくとして、それを起動させる方法はどんなのですか?
正直、487がこれほど馬鹿だとは思わなかった。
>>495 要するに、ヒントじゃなくてソースそのものが欲しいって事?
いくら出すの?
499 :
厨房 :02/03/22 15:53 ID:3P7KS9SJ
500 :
500 :02/03/22 16:06 ID:???
ヒントも作るのも無理。 CGIが初めての奴に対しての"ヒント"ってなんになると思う? 数行のスクリプトならまだしらまだしも アップローダーを作れか?あほ。
まだしらまだしも× まだしも○ スマソ
502 :
499 :02/03/22 16:20 ID:3P7KS9SJ
御免なさい
#!/usr/bin/perl print <<"__FORM__"; Content-type: text/html <FORM ACTION="$ENV{SCRIPT_NAME}" ENCTYPE="multipart/form-data" METHOD=POST> <INPUT TYPE="FILE" NAME="file"> </FORM> __FORM__ print <STDIN>; ブラウザが送るデータを観察してデコードする方法でも考えればぁ?(゚Д゚)
504 :
nobodyさん :02/03/22 17:01 ID:KCkKfXvI
質問です。 メールフォームでメールを送ろうとしたのですが送信ボタンを押して待てど暮らせど 出るはずの確認画面が出ません。 これは送信されてないものと考えていいのでしょうか。 重複送信になるのが怖くて再送信することができずにいます。
505 :
nobodyさん :02/03/22 17:02 ID:qjFFNAMI
おまえの回線状況なんぞ知るか!
506 :
504 :02/03/22 17:50 ID:???
回線状況は正常だと思うんですけどね。 っていうか再送信して大丈夫か否かってのが訊きたいんですけどダメですか? 直接相手に問い合わせしようにも他の連絡手段が無いんですよね (イベントの特設ページみたいなサイトだし)
507 :
nobodyさん :02/03/22 18:53 ID:fazmqrAM
508 :
nobodyさん :02/03/22 21:43 ID:tj2D5lJW
Computer Graphic Interface?
>>508 Common Gateway Interface
マジレスした方が
>>508 は恥ずかしい。
春だね♪
512 :
nobodyさん :02/03/24 02:20 ID:Gb9vu2Wc
掲示板などで認証つきの管理者モードを作る場合で、 かつ管理者モードが複数ページに渡る場合、 最初のページで一度認証済ませれば次のページへは認証なしで入れる、 というようにするにはどうすればいいですか? 最初の認証でパスワードをpost送信させると2ページ目では取得できないし、 どこかにフラグを立てて置くと、ログアウトさせないとフラグが残ってしまうし、 HTTP_REFEREを調べるとしても、どうしても不正にアクセスできてしまいます。 やり方が悪いのでしょうが、うまい方法が思いつきません。 普通はどういう方法で認証しますか?
>>512 <input type="hidden" name="pwd" value="$FORM{pwd}">
514 :
512 :02/03/24 02:29 ID:Gb9vu2Wc
え?え? なんだか、見慣れない手法で、ちょっと混乱。考え中。 とりあえず、ありがとうございます。
>>512 Basic認証使えとか言っちゃうのは反則ですか?
516 :
512 :02/03/24 02:49 ID:Gb9vu2Wc
>>513 すみません。もうちょこっとヒントいただけませんか?
>>515 反則です(笑)。今のところ動作環境がBASIC認証とやらを使えるかどうか
わからないのです。ちなみにBasic認証を使うとどの時点まで
アクセスの権限が持続するんでしょう?後学のために..。
>>516 確か一度IDとパス入れれば、
ブラウザ閉じるまでブラウザがIDとパスを保持して
自動的に認証してくれるはず。
518 :
512 :02/03/24 03:15 ID:Gb9vu2Wc
>>517 なるほど!そいつは便利ですね。いづれ使うことになると思います。
ありがとうございます。
>>513 これ、いくら考えても意味がわからないんですが、
誰か解説してもらえませんか?
hiddenでパスワードを持ち歩くちゅう意味でしょ
520 :
nobodyさん :02/03/24 03:21 ID:KxmQdHuE
起きてるか?
・Basic認証のREMOTE_USERを利用 ・CookieにセッションIDでセッション利用 ・Cookieのみ ・HIDDENで持ち歩く 一応安全だと思う順 他にも方法ある?
522 :
512 :02/03/24 03:29 ID:Gb9vu2Wc
ああ、なーんだ。
>>513 をCGIで書き出すということですか。
てっきりフォームから変数名を送って巧妙に2ページ目にパスワードを
引き継ぐ方法があるのかと思ってました。
ソース見たらパスワードばれちゃいますけど、普通そんなもんですかね。
basic認証とやらが使えなければ、この方法でやります。
ありがとうございました。
523 :
512 :02/03/24 03:31 ID:???
あ、遅レスでした。
>>521 さんありがとう!
参考にさせていただきます。
ソース見たらパスワードがバレるって、 入力した本人しか見れないんだからいいんじゃないの?
>>524 あ、、
俺も
>>512 と同じように
passwdばれるよなぁ
って思ってた。。。w
納得。
526 :
512 :02/03/24 20:32 ID:Gb9vu2Wc
>>524 そうなんですけど、じゃあ、
>>521 でクッキーのみより安全性下になってるのは
どういう訳なんでしょう。ピュアな質問です。
串のキャッシュに残る事があるとか?
528 :
512 :02/03/24 20:47 ID:???
プロキシとか関係あるのかな。全然わかんないや。 セキュリティスレ発見したので、そっち読んでます。
529 :
512 :02/03/24 20:48 ID:???
おお!また遅レスでした。やっぱそんな感じでしたか。ありがとうございます
530 :
521 :02/03/24 21:03 ID:???
hiddenは偽装が容易だからcookieのが安全かなと 使わないとは思うけどGETしたら見えちゃうし、 万が一その状態でリンクで飛んだ先にアクセス解析ついていたら パスワードがログに取られてしまう。
>531 偽装について説明きぼん。
532 :
512 :02/03/24 21:11 ID:???
ほほう。なるほど。ところで、質問ばかりで恐縮ですが、 GETしたら〜というのはどういう状況ですか? こちとらPOSTのフォーム書き出してるのにGETしてしまう状況とは?
533 :
512 :02/03/24 21:13 ID:???
>>531 なんらかの手段で不正にパスを知った人が自分でフォーム書いて
ログインできるってことじゃないですかね。それがクッキーより容易ということ?
>533 >なんらかの手段で不正にパスを知った人が その時点でセキュリティ終わってる。
535 :
512 :02/03/24 21:19 ID:???
>>532 自己レス、
>>530 で使わないとは思うけど〜ってありましたね。失礼。
>>534 セキュリティは終わってるけど、521が言ってるのはそういう意味じゃないですかね。
まあ、終わってることは終わってる。
>535 パスワードがわかった時点で改造フォームを作る必要がないと気付いてくれよ。 堂々と正門からパスワード入力して入っていけばいいんだから。
537 :
512 :02/03/24 21:27 ID:???
あはは。そりゃそうだ。 失礼!頭悪くてすみません!
今使ってる掲示板がF5押すと再試行して2重投稿しちゃうんですけど、 防ぐ方法ありますよね。たぶん初歩的なことですけど、書いてあるページ教えてちょ。
539 :
nobodyさん :02/03/24 22:46 ID:Gb9vu2Wc
>>539 ようは書き込み後に違うページにジャンプさせるんでしょ。
そのやり方が分からんのですが・・・・
>>541 Locationって書いてるじゃん。何が分からんのよ。
Location+二重投稿で調べれば直ぐ出るだろ?
>>542 print '
http:// '.$ENV{'HTTP_HOST'}.$ENV{'SCRIPT_NAME'}."\n\n";
これですか?
# [ログ書きこみ処理] # sub wri_ { if ($FORM{'name'} eq "") { &er_("名前が未入力!"); } if ($FORM{'comment'} eq "") { &er_("コメントが未入力!"); } if (length($delkey) > 8) { &er_("削除キー は8文字以内!"); } if ($locks == 1) { &lock_; } open(LOG,"$log") || &er_("Can't open $log"); @lines = <LOG>; close(LOG); if($bup){&backup_;} ($knum,$kd,$kname,$kem,$ksub,$kcom) = split(/<>/,$lines[0]); if ($name eq $kname && $comment eq $kcom) { &er_("二重投稿は禁止です!"); } この { &er_("二重投稿は禁止です!"); }ってとこにlocationとやらを入れるんですか?
>545 違う。 1回目の書き込みが終わった時点で飛ばすの。
>>545 ネタか?ネタじゃないのならWebProg板に来るレベルじゃないな。
<td colspan=2><input type=submit value="送信する"$fm>
<input type=reset value="リセット"$fm></td></tr></table></form><hr>
_KEY_
}
$total=@NEW;
$page_=int(($total-1)/$a_max);
if ($FORM{'page'} eq '') { $page = 0; }
else { $page = $FORM{'page'}; }
$end_data = @NEW - 1;
$page_end = $page + ($a_max - 1);
if ($page_end >= $end_data) { $page_end = $end_data; }
foreach ($page .. $page_end) {
($namber,$date,$name,$email,$d_may,$comment,$url,$font,$ico,$type) = split(/<>/,$NEW[$_]);
if($email ne ""){ $name="<a href=\"mailto:$email\">$name</a>"; }
if($d_may eq ""){ $d_may="No Title"; }
if($link_i == 1){
if ($url ne "") {
$url="<a href=\"
http://$url\ " target=\"_top\"><img src=\"$i_dir/$l_img\" border=0 width=\"$h_wid\" height=\"$h_hei\"></a>";
}
} elsif ($link_i == 0){
if($url ne ""){$url="<a href=\"
http://$url\ " target=\"_top\">
http://$url</a >"; }
}
print <<"_HTML_";
この辺ですかね?
>>548 あのさー、中学生?
言葉使いとかなんかおかしくない?
なんでそんなスキルで
この辺ですかね?
とかなの?
あっ気が付いた!だから馬鹿なんだ!
550 :
nobodyさん :02/03/25 00:13 ID:oozWjwB1
発言直後は、通常HTML書き出ししている部分には行かずに いったん処理を終了させ、自動的にそのcgiを再実行。 そのためにlocationで自分自身に飛ばす。使い方は検索すれば出てくる。
__,,..、、- - - .、、...,,___ ,,、‐''"~ ̄  ̄``''‐、、 / \ / ヽ / ヽ / / ~~` '' ‐- 、、 ,,__ __ ,,..、、 -‐ '' "~~\ ヽ | / __  ̄ __ ヽ | .| { ´ ‐- ....__ __... -‐ ` } .| .| 〉,,・^'' - .,, ~ i ~ __,,.- ^`・、.〈 | ./ ̄| /,/~ヽ、 `'' ‐--‐ ,.| 、‐-‐'' "~ _ノ~\,ヽ | ̄ヽ | (` | / ヽ,,_____`‐-、_、..,,___ノ八ヽ___,,.._-‐_'"´___,, ノ ヽ .|'´) | | }.| ./' \二二・二../ ヽ / ヽ、二・二二/ 'ヽ | { | .| //| .| / | |. \ | |ヽヽ| .| .| | .| / | |. \ | | | .| |ヽ.| | / .| |. ヽ .| .|./ .| | .| | / | | ヽ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ .| | / .| | ヽ | | / | >ここでしょうか? .ヽ.| | / '二〈___〉二` ヽ | |./ < 馬鹿な548がいるのは。 | | `-;-′ | | | iヽ|. ,,... -‐"`‐"`'‐- 、、 |/i \_________ | ヽ /...---‐‐‐‐‐----.ヽ / .| | ヽ. ,, -‐ ''"~ ~"'' ‐- 、 / | .| ヽ ! ./ .| ,,| ヽ. | ./ |、 |\. ヽ / /.| .|. \. ヽ、____ ___/ / .| ' `  ̄ ̄ ´ '
それにしても548はスキルも無い癖に 口の利き方が悪いな。
>551 利口になる気のない馬鹿は一生馬鹿だよ。 馬鹿が利口になるためには利口になろうと努力しないといけない。
557 :
nobodyさん :02/03/25 00:42 ID:oozWjwB1
クッキーに初挑戦してまして、先ほどCGIでクッキー書き込み成功したんですが、 そのクッキーファイルを削除してもう一度実行したら書き込めなくなってしまいました。 その間、ちょこっとCGI自体書き換えたんですが、 print "Set-Cookie: ore_site_id=ore; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n"; print "Content-type: text/html\n\n"; こんな感じで書き出してます。perlです。 何が原因だかさっぱりわからないので、ひょっとしたらスレ違い、 板違いになるかも知れないんですが、 何か原因思い当たる方いらっしゃいませんでしょうか。 宜しくお願いします。
558 :
557 :02/03/25 01:12 ID:???
自己レスです。なんだか激しく板違いだったようですが、ブラウザ再起動したら書き込めました。
559 :
hanamogera :02/03/25 16:29 ID:WG0pi2qc
http://www.sgmt.local/cgi-bin/develop/develop2.cgi ↑携帯用の掲示板スクリプト作ったんですが、
ログがある程度たまるとWAP2.0端末からアクセスできなくなるんです・・・
『接続できません。しばらくたってからリトライしてください。』って出るんです。
でも、Apacheのログにはエラーはありません。
WAP2.0端末はXHTMLを読むということだったので、XHTMLで記述してます。
Another HTML-link gatewayでチェックしてみたら、95点でした。
いったい何がおかしいんでしょうか?C5001Tで動作確認してます。
Perlで作るCGIを解説してるページで人気のページを教えてください。
561 :
nobodyさん :02/03/25 16:49 ID:PUm89G3u
Linux、Redhatでcrontabを使ってcgiを起動させたいんですが質問です。 cgi-binの中にproc.cgiというファイルを置いて、それをcrontabで動かしたいんですが ファイル書き込みだけが出来ないみたいです。cgiの中身は open(SDATA, "<sdata.dat")|| die "File 'sdata' Open Error."; @a_sdata = <SDATA>; close(SDATA); この間で@a_sdataの中身を編集してます。 open(WDATA, ">kdata.dat")|| die "File 'kdata' Open Error."; print WDATA @a_sdata; close(WDATA); print "@a_sdata\n"; こんな感じでファイルを読み込んで、編集して、別ファイルに書き込むというcgiなのですが、 ブラウザにアドレスを打って直接アクセスで起動するとファイルの書き込みは正常に終わり、 編集したデータが表示されます。 ですがcrontabから起動すると、編集したデータはメールになって送られてくるんですが、 ファイルへの書き込みがなされません。データファイルのパーミションは600でしたが 666に変更しても試してみました。cgiのパーミションは700と755で試してみました。 いずれもcrontabからではメールは届くので動いてはいるらしいんですがデータファイルが 更新されないんです。更新日時も変わってないです。 crontabからの起動では何か対策が必要なんでしょうかね? ちなみにcrontabの記述は*/30 * * * * perl /cgi-bin/proc.cgiです
ちょっと質問なのですが、ある企業のサイトのホームページの制作等をうけている のですが、フォームCGIに不適切な動きが起きていて、大元のプロバイというか サーバー屋に問い合わせてもちょっとわからないっていう返事なのですが……。 CMでもやっている有名なところです。 その部分が <input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス"> <input type="hidden name="Subject" value="Subject(タイトル)"> <input type="hidden name="ML_FROM" value="送り元メールアドレス"> ていうことなのですが、そのサーバー屋さんに問い合わせたところ、 ML_FROMの行のvalueを送り先メールアドレスと同じにしてください。といわれたらしい んですが(私は間接的に聞いただけ。) あと、その仕事をうけている企業はそのフォームが自分とこにメールがきたら それを返信しようとすると、送り先が自分とこになるっていっているのですが もちろん送り先と送り元のメールアドレスを同じにしたらそういうことが 起きると思うのです。ML_FROMは不特定多数であって ここは変数か何かになって、CGI側で送り元をGetか何かで取得するもんだと 思っているのですがいかがですか?そのCGIは基本的にさわらせてもらえません。というか そのサーバー独自のCGIです。よろしくお願いします。
>560
ttp://tohoho.wakusei.ne.jp/ とりあえずここかな?
>561
メール送信処理の前に書き込み処理を入れて試してみたら?
書き込みの時点で失敗しているならそこでdieされるよな。
そこでメールを送るなら、メールの中にエラーメッセージを入れて確認するとか。
>562
もう少しわかりやすく。
すいません。書き直します。
ある企業からホームページの制作をうけているものです。
その中にフォームメールを使うページがあってメール自体は
動くのですが、メールをうけている企業さんの話によると
その受けたメールを返信しようとすると宛先には
自分のメールアドレスになるんです。
Aさんが
[email protected] ていうアドレスでフォームCGIを介して
その企業さんの
[email protected] に送ったら
その企業さんはAさんに返信するときに
宛先が
[email protected] になるところが、
[email protected] になる
ていうことなのです。
この企業がアップしているサーバーの担当者に問い合わせてもわからないとのことです。
(このCGIはサーバーで提供されているCGIです。)
フォームメールCGIのCGIに変数を渡しているかと思われる部分は
渡されたマニュアルとサーバーの担当者の説明によると
<input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス">
<input type="hidden name="Subject" value="Subject(タイトル)">
<input type="hidden name="ML_FROM" value="送り元メールアドレス"> で
ML_ADDRESSの行のvalueとML_FROMの行のvalueを同じにしてください。と
言われているのですが、それでいくと宛先がその企業さんとこになると思います。
ML_ADDRESSの行の送信先メールアドレスはこれでいくとその企業さんのメールアドレスで
検証してもあってるんですが、ML_FROMのvalueの部分はたぶん変数か何かになると思われるのですがいかがでしょう?
とこのような説明でよろしいでしょうか?
間接的に聞いてるというか間にひとつ会社がはさまってて直接ん、その企業さんの話を聞いている
わけでもなくサーバーにアクセスしてもそのCGIは当然見えないわけですが……。
もしかしたらこの説明でもやはりおわかりにならないかもしれません。
よろしくお願いします。
>>565 それSo-Netじゃないの?
書き方間違ってない?
そんだけ。
自作させたら?
567 :
562-565です。 :02/03/25 18:11 ID:fNWLtbGz
So-Netじゃないです。 たぶんML-FROMの部分の行はエラーが起こった時に使うのかなぁ?と思われるのですが… 書き方はあってます。
568 :
561 :02/03/25 18:23 ID:PUm89G3u
>>564 どうも。メールの送信はcronがcgiで出力されたものを送ってくるだけ
なので最後の行のprint "@a_sdata\n";の内容がそのまま送信されます。
とくにsendmailとかはcgiの中には記述してないんです。
その@a_sdataの内容はちゃんとしてるにもかかわらずファイルの書き込みが
全然されないのはcrontabからの実行の場合だけなんです。
ファイル書き込みじにdieされてるとしたらprintされないと思うんですが
出力結果のメールは届くんです。
CGI直接起動ではうまくいくのにcrontabからだとうまくいかない、というのが
理解できないんです。何か対策方法ないでしょうかね?
569 :
560 :02/03/25 18:51 ID:???
>>564 ありがとうございます。
作ってる人は、とほほさんですね。
行ってきます。ありがとう。
>568 頭を柔らかくしろ。 俺は問題の修正方法を教えてるんじゃなくて、その原因究明の方法をいってるの。 ファイルのオープンが失敗したって、@a_sdataの内容が消えるわけじゃないでしょ? だったらそれがそのままメールで送られてくる事に不思議はない。 そんな事よりも、メールの内容に$!を入れて何が起こってるかをまず把握しろ、と。 対策方法を考えるにはまず原因究明。 デバッグの基本。 対策方法の結果聞きたいだけなら、ソース公開しな。
CGIさん、最近モテなくなった? PHPとかいうやつに、彼女取られてたね。 Cくんは、相変わらずさわやかで、もててるけどね。
572 :
561 :02/03/25 19:36 ID:PUm89G3u
>>570 どうも。
なるほど原因がわからないのに対策とってもその場しのぎでしかないすものね。
いろいろと試してみます。
>>571 でもCくん、臨機応変とか変幻自在とか、そういうわけにいかない魯鈍君だよね。
皆さん会社の上司に怒ったりしたことあります?
>571 CGIとPerlの違いわかってる?
>575 彼にとってPHPはCGIじゃないんだよきっと・・・
>>577 多分コマンドライン版のPHPで作ったCGIなんだよ。
ApacheモジュールのPHPはCGIとは言わんもんな。
nph な仕事を貰いました。 200 OK とか,403 Forbidden とかまでも自前で出力するですな。 そこで問題なんスけど,お客様曰く「403 を出力するなら apache のアクセスログに残るようにして欲しい」とのこと。 ンな事は可能なんでしょうか?
>>580 apachのerrordocumentは?
584 :
nobodyさん :02/03/26 05:29 ID:7ingtp1l
検索CGI作ってまして、質問なんですが、urlに検索文字列を 〜.cgi?value=アクション と日本語を含めると挙動がおかしくなってしまいます。 ブラウザに直接入力すると上記の例の場合ちゃんと「アクション」と認識してくれるんですが、 CGIで書き出したhtml中のアンカータグからCGIを実行すると、上記の例だと 「ン」が化けてしまいます。 cgi内部もブラウザ表示もすべてEUCでやってるんですが、 何故このようなことが起こるのでしょうか? それから、一般的な検索エンジンだと検索結果のurlには エンコードした文字列がくっ付いてますが、このエンコードっていったいいつやってるのでしょう?? いったん検索文字列をCGIで受け取ってエンコードして、locationで飛ばしてるんでしょうか。 わざわざそんなことするのは上記の文字化けと関係あるんでしょうか。 宜しくお願いします。
585 :
584 :02/03/26 05:50 ID:7ingtp1l
一般的な検索エンジンうんぬんというのは勘違いでした。 あれはフォームだから僕の状況とは関係ありませんでした。 宜しくお願いします。
586 :
584 :02/03/26 06:01 ID:???
解決しました。urlに引数持たせる場合には自分でエンコードしないとならないんですね。 普通に解説サイトに書いてました。どうもすみません。てか、誰も見てないか..
sub text_read; open(LOG,"<$logfile"); @log=<LOG>; close(LOG); foreach $line (@lines) { の、 foreach $line (@lines) {はどういう意味なんですか? 配列として読み取った奴を$lineに何をしようとしてるのでしょうか?
588 :
nobodyさん :02/03/26 07:28 ID:7ingtp1l
@lineのすべての要素に対して処理をする>foreach その後には$lineに対する処理が続くはずだけど、 それはつまり@lineの各要素に対して処理をしてることになる。
589 :
580 :02/03/26 07:58 ID:???
>>581 あっ (´ー`) どうもです
ErrorDocument は HTML や CGI が本当に 403 や 404 な場合に
自前の HTML が出力できて便利っすね。
ただ今回は NPH でいわば「嘘の」403 ステータスを出力して
且つ apache のログにも書き出したいということで・・・
むむ,一筋縄ではいかなさそうです・・・
Apache::Logは?
>>580 アクセスログじゃないけど、STDERR はエラーログ
に向かってない?
592 :
nobodyさん :02/03/26 09:46 ID:z9GSG5oT
log書き込みときに\nつけてるんだけど そのlogをOPENしたときに\nもついてきてる。 OPENのときに\nを抹殺するにはどーすればいい?
chomp or tr/\015\012//d
594 :
580 :02/03/26 10:27 ID:???
595 :
nobodyさん :02/03/26 10:33 ID:F9zkDX+C
LocationがなぜかUPするとPrintになっちゃってます。。どうしたらいい?
>595 Content-typeを書いて、その後に空行を入れてからLocation書いてたりしない?
597 :
592 :02/03/26 11:25 ID:???
>>593 できました。 THX
これで吐き出すソースが少し綺麗になった〜
598 :
580 :02/03/26 12:52 ID:???
わかっちゃった!! print "Status: 403\r\n"; print "Content-type: text/html\r\n"; (以下略) これだけでちゃんと httpd.log にステータスが記載されるですな。 それに STDERR 出力を組み合わせれば error.log にも書き出されるんで最強。 NPH としてステータス吐かなくても良かったんですね。 考えてみれば無茶苦茶基本的なことでした。失礼しましたー。。。
CGIでsendmailを使用しauの@Mailで受け取ると9時間遅れてるのですが、これどうしたら回避できるのでしょうか。 ご存知の方些細な点でもよろしいので教えてください。 よろしくお願いします。 因みにサーバー側の時間は確認済みです。 また、複数のsendmail使用のスクリプトで同じように遅れます。 さらに、PC上で受信した場合、Outlook Expressでは「受信時刻」はちゃんと正確な時間を表しています。
auに文句をいうのが一番いい案か? まー、普通にDateヘッダの部分を書き換えるんだろうが。
Date: Tue, 26 Mar 2002 13:17:38 +0900
__END__ ←これって別に書かなくてもいいんだよね?
ある階層にあるディレクトリの名前を全部表示させたいんですけど、 どうしたらいいの?オシエテ。
$d = '.'; opendir(DIR, $d); @dir = readdir(DIR); close(DIR); foreach (@dir) { print "$_\n" if -d "$d/$_"; }
>604 opendirしてreaddirしてその中身からディレクトリだけ表示してclosedir。
>>605 >>606 ありがとうございます。
-dオプションがまだうまくいきません。
if -d "$d/$_";の部分です。
Jぽん位置情報扱えるcgiないですか?
うまくいきました。さすがです。 あとひとつおしえてください。 シンボリックリンクかどうかアレですが、「.」と「..」が入ってしまいます。 これを取り除きたいのですが、どうすればいいの?
>609 if
if?
パターンマッチで解決しました。どうもでした。
613 :
587 :02/03/26 20:43 ID:???
perlで掲示板スクリプトを作っています。 HTMLヘッダはsub headというルーチンをつくり print "Content-type: text/html\n\n"; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS"> <title>$main_title</title> </head> EOM という中身です。 メイン画面、書き込み画面、エラー画面などHTML出力をするたびにこのヘッダを呼び出しています。 IEでは問題なく閲覧できるのですが、NN4.73がプレーンテキストとして出力を解釈しやがるのです。 すべてプレーンで解釈しやがるならContent-typeの指定ミスなのですが、メイン画面はHTMLとして、エラー画面はテキストとして読みやがります。 兄貴。NNの野郎にHTMLを叩きつけるにはどのような点を修正してスクリプティングすればいいのでしょうか。
>614 オマエのその価値のないソースを見ないとなんともいえないダロ!! さっさとソースを見せろこのボケ!!
617 :
614 :02/03/27 00:54 ID:???
>>615 兄貴! さすがっす!
おとこ惚れっす! 穴貸すから思う存分使って欲しいっす!
>616 いつもその口調だねー
619 :
名無しさん :02/03/27 05:40 ID:J486qV1r
スレ違いならスマソ
現在、レンタルサーバーにhns-liteを入れようと格闘中。
/root
|
+--/htdocs <--- URI :
http://www.****/ |
+--/cgi-bin <--- URI :
http://www.****/cgi-bin/ |
+--/diary
|
+--/hns-lite
|
+--/lib
|
hns-lite/index.cgi
を実行するとエラーが出る
Can't locate CGI/QueryString.pm in @INC
(@INC contains: lib /usr/local/lib/perl5/i386-bsdos/5.00403
/usr/local/lib/perl5 /usr/local/lib/perl5/site_perl/i386-bsdos
/usr/local/lib/perl5/site_perl .)
at /usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/index.cgi line 31.
つづく・・・
620 :
619 :02/03/27 05:40 ID:J486qV1r
続き で、index.cgiのline31付近はこんな感じ #!/usr/bin/perl (中略) use strict; use lib qw(lib); use CGI::QueryString; <-- line 31 use DateTime::Format; use SimpleDB::Scalar; .... で、肝腎のモジュールは全て hns-lite/lib 以下に存在しているので、@INCにそれが入っていないと考えられたのだが・・・・ use lib qw(./lib) use lib qw(./lib ./lib/CGI) use lib qw(/usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/lib/) と色々変えてみたが変化無く、 push(@INC, ) unshift(@INC, ) もダメだった。 結局 require "./lib/CGI/QueryString.pm"; とするしかなかった。 でもこれだとHNS全体をこうする必要があり不可能。 いったいなにがわるいのでせうか?
621 :
619 :02/03/27 05:44 ID:J486qV1r
あんぎゃあ、ゾヌで書き込んだせいか、ツリー構造が崩れている(ToT えっと、書きたかったのは、/cgi-bin 以下に diary と hns-lite があって、 hns-lite の中に lib があるということです。
622 :
736 :02/03/27 10:17 ID:???
qmailでDateの設定しない場合の仕様でした。 CGIスクリプトレベルでのよくわからないのであきらめます。 すいませんでした。
623 :
nobodyさん :02/03/27 11:24 ID:vf3Wej2o
なる。
624 :
nobodyさん :02/03/27 12:24 ID:W6jS6K5R
悩んでおります。 英語版のサイトを作ろうと思い、もともと日本語版サイトで使っていたプロバイダ さん提供のアンケートフォーム用CGIをサーバーからもってきて、日本語で 表示が出る部分だけ英語に書き換えました。 (書き換えの時はDreamweaverで。シンプルテキストだと文字化けしたので) それをftpでアップして、アンケートフォームとリンクさせたところ、正常に 可動しません。 そもそも、もとのCGIをそのまま別名保存してもういちどアップしてもうまくいきません。 CGIは何か特別なソフトで開いたほうがいいのでしょうか・・・。 それともMACの環境だからでしょうか...。
文字コード
626 :
nobodyさん :02/03/27 12:33 ID:W6jS6K5R
文字コードは、アンケートそのものはISOの英語コードにしています。 CGIのほうはもとがJcodeだったのでそのままです。 その不一致? でも、英語アンケートフォームと今までの日本語版CGIを両方 使った場合、送信メールを受け取ることはできたんです。 (ただし送信確認画面で、日本語表記がでちゃう。送信ボタンなども 「送信」とでてしまうので、海外からだと正常に読めない)
627 :
nobodyさん :02/03/27 12:35 ID:GD/Jk18+
にょろ。
628 :
nobodyさん :02/03/27 12:37 ID:W6jS6K5R
そもそも、CGIってみなさん何で書いてるのでしょうか?
CGIを書く?コモンゲートウェイインターフェイスの仕様書? そりゃテキストエディタじゃねーの?知らんけど。
Perlで。 という返答で正しいのか?
そもそもJcodeって何?
632 :
nobodyさん :02/03/27 15:56 ID:DnWVHvAA
数百件の検索にindexで検索するとスピードが遅くなるんでしょうか? パターンマッチ使ったほうが良い?
633 :
nobodyさん :02/03/27 16:00 ID:Uk2UqleO
すみません。質問です。参考書に載っていたサンプルです。 年齢別リストを作るコードです。 @list = ( 20,25,24,32,28,20,28,24,20 ); foreach $fld ( @list ) { $syukei{$fld}++; #年齢をキーとして集計していく } print "<table border=1>\n"; print "<tr><th>年齢</th><th>人数</th></tr>\n"; foreach $key (reverse( sort( keys(%syukei) ) ) ) { $cnt = $syukei{$key}; print "<tr><th>${key}才</th><th>${cnt}人</th></tr>\n"; } 上の3行目、$syukei{$fld}++; は、 $syukei{$fld} = $syukei{$fld} + 1 ですよね。この場合、 右辺の$syukei{$fld}には何が入っているのでしょうか。 お願いします。
>>632 perldoc Benchmark を見よ。
>633
質問の意味がわからん。
635 :
633 :02/03/27 16:34 ID:Uk2UqleO
すいません。ええとですね、 これはハッシュの勉強のところなんです。 値のグループ化というもので、社員の年齢ごとの 人数を集計するプログラムです。で3行目ですが、 $syukei{20} = $syukei{20} + 1 ですよね。 20をキーとしてそれに対応する値が右辺だということは わかるのですが、右辺の$syukei{20}がわかりません。 これは何になるのでしょう。
print $syukei{20}; で表示されたものが何かを考えればぁ?(゚Д゚)
637 :
633 :02/03/27 17:35 ID:Uk2UqleO
すみません。何回も。 サンプルなので、$syukei{20}が3で、$syukei{25}が1というのは わかっているのですが、それだと一番最初の右辺$syukei{20}が0で ないといけないですよね。つまり、 $syukei{20} = 0 + 1 ですよね。これで20のvalueが1になりました。 二回目からは$syukei{20} = 1 + 1 というのも分かります。 で最終的に$syukei = 2 + 1 で3になります。 僕が分らないのは、最初の右辺$syukei{20}が0というのが腑に落ちない のです。うまくいえないですけど助けてください。
$syukei{20} がはじめて出てきたときに 0 を勝手に入れてくれるんだよ。perlって便利だね。 と言うことでいかが? # ほんとはちょっと違うけど。
>637 Perlでは初期化されてない変数は空文字になる。 数式で使うと0として扱われる。
640 :
633 :02/03/27 18:28 ID:Uk2UqleO
みなさん、ありがとうございます。 自分も変数の初期値が0というのは知っているのですが、 こに場合はハッシュだから、どうなのかなと思っていました。 いわゆるハッシュ変数という奴なのですね。オライリーの 初めてのPERLを読んで何となくわかりました。これは今読んでる 初級本をクリアしてから読もうと思っていたのですが、けっこう いいですね。
641 :
nobodyさん :02/03/28 02:54 ID:9oC7jnq/
すみませんがご教授下さい。 rand関数がありますが、 たとえば $x = rand(6); $y = rand(6); とした場合に僕の希望としては それぞれに異なる結果を出したいのですが、 実際には $x,$y 共に同じ値になってしまって困っています。 サイコロで言えば二つを何度振っても 同じ数字が出続けるような物です。 何卒アドバイスを宜しくお願いします
同じになりませんが何か?
srandを複数回呼び出すような馬鹿なことはしてないだろうねぇ。
>>643 じゃなくて、srand必要なバージョンのPerlなのに呼んでいないんじゃないの?
645 :
nobodyさん :02/03/28 10:10 ID:KXdiu3Az
パーミッション設定 666−606 755−705とかで何か変わりますか? 以上にスレッドが重たいので困っております。何か良い方法ないでしょうか?
>>645 あなたと同じグループの人が読めなくなる書けなくなる実行できなくなる。
647 :
nobodyさん :02/03/28 10:30 ID:KXdiu3Az
>>646 ありがとうございます。CGIのスレッド設置したのですが
凄く重たいのですが何か良い方法ないのですかね。
改善できることはしたいのですか・・
>>647 意味のわからんことをさっきから。
Web制作にCGI設置用のスレがある。ここはお前のようなコンシューマーの来るところではない。帰れ。
>>647 そんな事もわからないスキルの人間に
教えた所でできないんじゃない?
>>647 ソースの中に nph- という文字列があれば、ファイル名の先頭に
nph- と付け加えてみる、というか、サーバーを替えたらどうですか?
それか、同じ団体のアカでも新しくもう一つ取れば、もしかすると
空いてるホストにあたるかも知れません・・・が、余りオススメしませんね。
しかし、軽い CGI に替えるのが一番効果的でしょう。
>647 共用サーバーは重いです。 専用サーバーを借りましょう。 ちゃんと保守までしてくれるところを。 そうすれば軽くなります。
権限がnobodyのファイルやフォルダを、一覧で選択して消せる スクリプトを配布してるサイトがあれば教えて頂けませんか。
大変厨房な質問申し訳ありません ActivPerl+win2kで-cwチェックに通ったPerlのCGIをサーバーにあげたところ500エラーが出ました。 何が問題なのかと、hKCatchをつかってみると [hogehoge.cgi:2:die] (eval 1) has too many errors. > use KCatch qw( source execdata );__DATA__ という箇所でdieしていました。他はwarnだけでdaiはありません。 has too many errorsをgoogleってみたところ2chの別スレで「perl4じゃ?」という発言を見つけました。しかしuseを使えているということはperl4ではないはず。 何が問題なのでしょうか。
>has too many errorsをgoogleってみたところ ワラタ とりあえずどんな処理をさせるコードなのか書かないと どんな関数を使ってるのかすら想像できないのでお答えできません
藁われた……うう、さすがに中学英語はわかります。たぶん……。 設定情報のあるsetup.cgiファイルを読み込み、それ自体を書き換えるcgiです。 使ってる関数は超基本関数だけです。 ローカルでは動いているのになぁ……。 パーミッションも#!行もrequireも間違ってないっぽいです。 謎……。
こんなCGIを動かしてみる。 #!/bin/sh echo "Content-type: text/plain" echo "" /usr/local/bin/perl -wc hogehoge.cgi
>>658 エラーは標準エラー出力に出るんじゃないの?
660 :
nobodyさん :02/04/01 20:21 ID:22Bwn0qt
PATH_INFOって、?以下の文字列って無視されますか?
663 :
nobodyさん :02/04/01 20:39 ID:bVnVGhV3
cgiから掲示板などに書き込むスクリプトを書きたいんですが、 全然分からないです・・・。 cgiからcgiにPOSTするにはどのようにすればいいんでしょうか? よろしくお願いします。
>>663 use Socket必死になって習得。
665 :
nobodyさん :02/04/01 21:18 ID:b9jzIHib
なんか全然レスつかないと思っていたら,間違えてWeb制作板にポストしていたので,ここに投げなおします.
cgiなどウェブ系のプログラムを独学で作ってきていますが、
何でも、「仕様書」なる者を書いて設計をきちんとしないと破綻するらしいとわかりました。
確かに、昔書いた掲示板のスクリプトとかシンプルなものでも、ちょっと変更を加えようとしても訳わかりませんで、
結局新しいのをつくったりします。
グーぐるで探したら、河村かつまという人のサイトで仕様書の作り方を開設していたのですが、すごくわかりにくい文章で、
挫折してしまいました。やっぱり文章は本職の人が書かないとだめですね。
http://www.st.rim.or.jp/~k-kazuma/SD/SD.html というわけで、仕様書の書き方をわかりやすく開設してあるおすすめのサイト、書籍を教えてください。
よろしくおながいします。
667 :
nobodyさん :02/04/01 21:28 ID:gjG2j3IK
CGIの掲示板を書いているのですが、記事削除システムの構造が理解できません( ̄− ̄; レス機能のない掲示板です。どなたか、記事削除システムを、どのようにすれば作れるか、教えてください。
>>667 削除対象のログ消すか対象ログにマークを付けて表示時に無視させればいい。
当然といえば当然の話。
669 :
WebBeginer :02/04/01 21:39 ID:FPTql6Ah
携帯両用の掲示板を開設しているのですが、PCでもiモードの絵文字が見たいので、ログファイル(@lines)を読み込んだ後に、 foreach(@lines){ $_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig; } foreach(@lines){ $_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig; } ・ ・ ・ ※「♪」「!」は実際はiモードの絵文字を直接入力してます。 としているのですが、この構文をiモードの絵文字の数、つまり百数十回繰り返すと、サーバに負担がかかりすぎるため、エラーとなってしまいます。 何回かやった結果、この構文10個くらいが限界のようです。 なんとかサーバに負担をかけずに全ての絵文字を変換するスクリプトってできますか?
>>669 foreach(@lines){
$_ =~ s/♪/<img src=pic_i\/onpu.gif width=12 height=12>/ig;
$_ =~ s/!/<img src=pic_i\/bikkuri.gif width=12 height=12>/ig;
・
・
・
こういう発想が普通のような気もしますが。
length(@lines)とlength(@lines)^2じゃ全然処理量が違います。
ループはできるだけ少なく。これが基本。
>>669 とりあえずiオプションは必要ないのでやめなさい。
絵文字に詳しくないのでなんとも言えんが、たぶんもっと簡単になると思う
673 :
WebBeginer :02/04/01 21:53 ID:FPTql6Ah
>>670 &
>>671 即レスありがとうございます。
この構文自体、他の掲示板CGIから引用したもので、自分でも理解しきれていないのですが、
length(@lines)とlength(@lines)^2じゃ全然処理量が違います。
自分の構文の場合だと具体的にどうすれば・・・
自分でも669の構文の繰り返しは幼稚だとは思うのですがなにぶん知識が浅くて改良できませんでした。
あと、iオプションってなんですか?
674 :
nobodyさん :02/04/01 21:54 ID:vgH2l50K
お勧めのCGIリファレンスページを教えてください。 杜甫々さんの所以外で・・
>673 >670さんがきっちり教えてくれてるだろ。 読んでないのか? iは大文字小文字を区別しないって事。 >674 とほほがダメな理由を言え。 そうでないと紹介できん。
677 :
WebBeginer :02/04/01 22:05 ID:FPTql6Ah
>>676 すいません、つい669の時の構文とおなじものだと勘違いしてました。
670さんのやりかたも前に試したのですが、百数十回だとやはりエラーがでてしまうんですよね・・・
>>673 ハッシュの変換テーブルを使うべし。
具体的にはCGIrescueでやってるから見てみれ。
>>677 ところでエラー内容は?
>>678 ああ、
s/.*?(.*?).*?(適当)/$data{$1}/g
みたいな?
680 :
WebBeginer :02/04/01 22:20 ID:FPTql6Ah
>>679 internal server errorですよ。
>>678 わかりました。早速見てみます。
>>680 >internal server errorですよ。
私はなめられているのでしょうか?
682 :
WebBeginer :02/04/01 22:32 ID:FPTql6Ah
>>680 いや、そういう意味で書いたのでは・・・
失礼でしたら申し訳ないです。サーバーエラーが複数あることを知りませんでした。
ただ、繰り返しを10回以内にするとエラーが起こらないのでやはりサーバに負担をかけたからエラーになったのかな、と。
>681さん まあまあ落ち着いて ごめん、わらてしまたよ
>682 埒あかん。 ソース丸ごとアップしろ。 多分説明してもお前には理解できないし、こっちが求めている情報をお前が選別して掲示できる事もない。
>>665 そうかなぁ?俺もそこは2年ぐらい前から知っているけど
よく書けていると思ったよ。
きみ基礎知識がないんじゃないの?
>>668 削除マーク付ける方が、データに不整合起こしにくくておすすめだよね。
>687 なにかにつけ、「ワラタ」ということばを連発したいがためにむりくり さがすやつ! さびしいのネ!
>>689 おまえのプロバのdnsがいかれてるだけ
693 :
nobodyさん :02/04/03 02:20 ID:2Lh4+kxY
どこで質問するべきか迷いましたがここで質問します
%17%ea%17%e8%17%ec%17%a8%17%dd%17%e8%17%d3%17%e3%17%b8%17%d1%17%f7%17%de%17%a8%17%fa%17%d2%18i%06%b5%18j
これの解読方法ありますか?
ネスケでテキスト表示させてもできなかった
ちなみに文字化けメールじゃありません
とあるチャットのデータファイルで内緒話の部分だけがそうなるんです
ちなみにそのチャットはこれ
http://www.teachat.org/download.php
はじあやで同じ事聞いてたな。氏ね。
>>693 はマルチポストです
お手を触れぬようお願いします
%17ばっかだね?
696 :
nobodyさん :02/04/03 10:35 ID:WrEAhQK7
my($date) my $tmp このmyってなんすか・・・
便乗なんだけど、my宣言って、パフォーマンスやメモリ使用量に 好結果があるのかなぁ? たとえば、複数人で同じソース使っていて、各自の担当部分の 変数を漏らさないようにする目的、とかだったら十分効果あるし 理解できるけど、素人程度の(要するに俺程度の)書くスクリプトでも、 充分、何らかの効果があるものなんですかね?
メモリやパフォーマンスの為にmy使ってるやつなんていないだろ。 無きゃ困るから使う。それだけ。
アプロダ掲示板作りたいんですけど perlとphpどちらが宜しいですかね? 各々メリットデメリット教えて。
700 :
nobodyさん :02/04/03 14:46 ID:YEM9HsOO
#! /usr/local/bin/perl -w の、「-w」オプションて、どういう場合に必要なんでしょう?
-w enable many useful warnings (RECOMMENDED)
実はわたしもどうしても解読できないものがありまして、それが693さんの書かれた ものとなんとなく形式が似ているのです。どなたかわかるかたがおられましたら教えて いただけないでしょうか? 以下に書いたものがそれなんですが... %83l%83^%82%be%82%e6%83o%81[%83J!+%83I%83}%83G%82%cd%82%a2%82%a2%83J%83%82%82%c9%82%c8%82%ea%82%e9%82%ba!+by+%89%f0%93%c7%82%c5%82%ab%82%c8%82%a2%82%e6%81[
CGIへの直リンク禁止処理を追加する
ということをやろうと思いましてやってみたのですが、
許可をしたアドレスからもはじかれてしまいます。
どこかが間違っているのでしょうか?
お願いします。
##特定したURL以外アクセス禁止(1ならする、0ならしない)
$badurl = '1';
##上記で1にした場合そのURL指定(CGIを設置するページ)
#リンク許可ページのURL (正確に記入。複数指定可)
$url[1] = '
http:// ';
$url[2] = '
http:// ';
$url[3] = '';
$url[4] = '';
if($badurl) {
$url[0] = $script;
$ENV{'HTTP_REFERER'}=~ s/%(..)/pack("C",hex($1))/eg;
if($ENV{'HTTP_REFERER'}){
for(@url){
if($_ && $ENV{'HTTP_REFERER'} =~ /^\Q$_\E/){
$flag = 1;
last;
}
}
}
if($badurl && $flag != 1) { &error("CGIへの直リンクは禁止です"); }
}
>703 パーソナルファイヤーウォールを導入されてるとREFFERERを返さない事もある。 ソフトによって隠されるから。
>703 オマエはアホだろ? とんだイカレ野郎だな!
>if($_ && $ENV{'HTTP_REFERER'} =~ /^\Q$_\E/){ if($_ && ($ENV{'HTTP_REFERER'} =~ /^\Q$_\E/)){
708 :
nobodyさん :02/04/03 20:03 ID:YEM9HsOO
>>701 ありがとうございます。必須というわけではないのですね。
私のローカル環境(Win32Apach+ActivePerl)ではつけてもつけなくても警告文に変化が見られないようですが、
そういうものなんでしょうか。
>708 -wcで構文チェックでもしてください。
710 :
703 :02/04/03 22:15 ID:???
>>704 FWが原因だったようです。
切ったら行けました。ありがとうございました。
>>709 つまんない質問にきちんとレスありがとうございました。
おかげで理解できました。
712 :
nobodyさん :02/04/04 09:51 ID:daqR1eJx
自分のホームページにつけたいのでファイルアップローダーcgiが欲しいんですが、 どこで入手できますか?yahoo!の検索ではどうにも行き詰まりまして・・・
714 :
nobodyさん :02/04/04 10:10 ID:daqR1eJx
失礼しますた
715 :
nobodyさん :02/04/04 12:02 ID:1G0Zf8mT
くだらない質問ですが $ENV{'TZ'} = "JST-9"; $time = time; ($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time); @week = (); $date = sprintf("%04d/%02d/%02d", $year+1900,$mon+1,$mday,$week[$wday],$hour,$min); で$timeをlogに書き込むと12桁の数字になるのですが なんででしょうか?
そりゃ$timeが12桁の数字だから。 せっかくだから$dateを書き込めって。
>>715 ($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy) = localtime($time);
@week = ();
$date = sprintf("%04d/%02d/%02d",
$year+1900,$mon+1,$mday,$week[$wday],$hour,$min);
までしてなぜ$timeを保存する・・・。
timeは1870年だったっけ?の1/1からの秒数です。
>715 timeで帰ってくる数字は1970年1/1 0:00からの秒数。 localtimeとかはそれを年月日の配列に変えてくれるもの。 大まかに言えばこんな感じ。
>>717 1970年1月1日0時0分0秒(GMT)だぉ。
720 :
715 :02/04/04 12:36 ID:???
理解しました。 皆さんありがとうございます。m(__)m
ちなみに1970年はUNIXのキゲンね。
723 :
nobodyさん :02/04/04 21:50 ID:U+Q0+BV/
えーと、 最近になってオペラが結構来てるんですけど。 表示が乱れてくるんです。 で、IE6とかに合わせてから、NN6とかみると微妙に違ってたりして、 そこでなおすとこんどはオペラが変で、 それをなおすとIEが変でいったいどうすれば、、、。
>>723 それはCGIとはほそろしいほど無関係。
Web製作板に行きなされ。
まぁあれだ。コレを期にCSSやStrict HTMLを覚えなさいってこった。
725 :
Q :02/04/04 23:07 ID:2wyFXP2l
Accessで作ったデータベースファイルをFTPでプロバイダのサーバにアップロードしてそのデータベースにPerlで記述したCGIからアクセスできますか? AccessでできなかったらなにかCGIでアクセスできるようなデータベースはないでしょうか? セキュリティが大事なことはやらなく、ただ単にFTPでアップロードしたデータベースファイルを扱いだけなんです。
>>725 サーバーにその「Accessで作ったデータベースファイル」を解析する何らかのブツが入ってりゃ余裕で出来るだろうよ。
727 :
Q :02/04/04 23:35 ID:2wyFXP2l
解析するブツですか・・想像もつきません。 CGIにSQL文を埋めこめられるのか、とかそんなことを想像してました。
728 :
nobodyさん :02/04/05 00:05 ID:9OfkLjEm
CGI_Lite.pmで複数のファイルを一度にアップできるかな? <form action=upload.cgi enctype=multipart/form-data method=post> <input type=file name=file1> <input type=file name=file2> ・・・・ てな感じで。
>>728 1個のファイルのアップロードCGIが作れるなら、
同じ要領で2個出来るか試せば良いだろ。
なんでもかんでも聞くなよ。
>729 1個のファイルのアップロードCGIが作れるなら、 同じ要領で2個出来るか試せば良いことぐらい言うまでもないだろ。 なんでもかんでも答えるなよ。
>729 1個のファイルのアップロードCGIが作れるなら、 同じ要領で2個出来るか試せば良いことぐらい言うまでもない事はいくらおまえでもわかるだろ。 なんでもかんでも答えるなよ。
>728 くれぐれもローカルで試してくれな。
Perlを使ってCGIを書いています。 親ウインドウから子ウインドウを開き、子ウインドウに入力された値をsubmitで親ウインドウに飛ばしています。 親ウインドウに値が渡った1回目はいいのですが、その画面でリフレッシュすると値がなくなってしまいます。 どのようにすれば、リフレッシュ時でも値を保持していれるのでしょうか?
>>734 <input type=hidden>で持ち回る。
737 :
:02/04/06 01:52 ID:twEq+RYw
i-modeで使える動作軽めのDLカウンタが欲しいのですが・・・
739 :
nobodyさん :02/04/06 02:30 ID:wejSs/vG
$text = "2ch2ちゃんねる"; と宣言した変数の初めの数文字だけを表示させる方法を教えてください。 $text には、半角文字と全角文字が混同しているという仮定です。 例えば、初めの4文字とすると、 「2ch2」としたいです。
>739 宣言と定義の違いもわかってなければ環境の文字コードも書いてないから 答えようがないネ! ネタか?
ついでに使用言語も書いてないし。
742 :
nobodyさん :02/04/06 11:33 ID:H1m5OFT0
perlで、実行しているcgiの絶対パスの取得方法を教えてください。
>>742 $ENV{'SERVER_NAME'}
$ENV{'SCRIPT_NAME'}
use FindBin; $FindBin::Bin;
>>744 use FindBin;
$FindBin::Bin->radin;;
746 :
nobodyさん :02/04/06 16:11 ID:+jTWd3mh
>>739 すみません。説明不足でした。
文字コードは、Shift-JISです。
使用言語は、Parlです。
よろしくお願いします。
747 :
(-_-) :02/04/06 16:16 ID:Pfw6jEuQ
749 :
:02/04/06 17:28 ID:nd67Ze2k
レンタルサーバを借りていますがで dbmを使ったcgiがうまく動きません。 普通のCGIは動いているのですが、dbmが入っていないということはありえますか? 普通は、使えると聞いたのですが、使えないサーバもけっこうあるんでしょうか? ちなみに本に↓のプログラムをためせば入ってるdbmが分かるといわれましたが 「表示すべきページがありません」になりました。 #! /usr/bin/perl use Config; print "Content-type: text/plain\n\n"; print "Result = ", $Config{extensions},"\n"; exit;
>>749 $Config{extensions}を調べてわかるのはデフォルトのエクステンションモジュールのみ。
システム(つか管理人)によっては他のブツも入れてるから、必ずしも正確ではない。
更に言うと、標準モジュールが存在しない環境ではConfigを調べる事すら失敗する。
このコードにしてみれ。
#!/usr/bin/perl
print "Content-Type: text/plain\n\n";
print eval{ require AnyDBM_File } ? "ok" : "not ok ($@)";
今、UICの掲示板を借りています>もっと書き込み隊 複数設置してるんですが、どうも重い・・・。 そこで、エクスリアに自分で同じような掲示板を作ろうと思うんですがレンタルと 自作で表示速度とかって変わるものなんですか?
>751 Cで組め。 さもなくばカエレ
755 :
740 :02/04/07 01:17 ID:???
>739==746 どうやらネタではなくほんとの初心者のようですね。これからはParlではなくPerlと書きましょう。 以下に処理例を書いておきます。 $len = 4; # 抜き出したい文字数設定 $text= "2ch2ちゃんねる"; ;# 印字するなら print $text=~ /^((?:[\201-\237\340-\374][\100-\176\200-\374]|[\241-\337][\336\337]?|.|\n){$len})/o; ;# 代入するなら ($get)= $text=~ /^((?:[\201-\237\340-\374][\100-\176\200-\374]|[\241-\337][\336\337]?|.|\n){$len})/o;
756 :
nobodyさん :02/04/07 02:32 ID:GbMi0GS6
>>755 すみません。
PerlをParlと書いていました・・・。(鬱
参考になりました。
ありがとうございました。
>>751 そんなことも知らずに自作を考えている君はすごいよ。
758 :
川上 :02/04/07 17:12 ID:adMQ+yzY
ご教授頂きたく宜しくお願い致します。 UNIXサーバーからNTサーバーへCGI(Perl)の 移転に伴いエラーが発生し原因が究明できず困っております。 プログラムとしてはCSV形式でデータを保存するデータベースです。 UNIXサーバーでは問題なく稼動しておりました。 状況としてはデータベースの検索処理を行っている部分では データファイル($logfile)の読み込みは[open(IN,"$logfile")]で 処理しており問題なく動作しています。 しかし、新規書込みにおいて、[open(OUT,">>$logfile")] また、修正において、[open(OUT,">>$logfile")]で処理したところ ファイルが開けないというエラーが発生しております。 これは何が原因で起きているのか解らない為 どこをどう調べれば いいのか困っております。 情報の至らぬ質問かと思いますが是非 考えられうる原因をご意見を拝聴致したく 何卒 宜しくお願い致します。
>>758 ソースとエラーメッセージを正確に提示していただければお力になれるかと思います。
760 :
川上 :02/04/07 17:52 ID:adMQ+yzY
>>759 さま
ありがとうございます。まず エラーメッセージですが
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
The headers it did return are:
と表示されreturn are:以降にエラー箇所の表示が出ておりません。
open(OUT,">>$logfile1") || &error("Write Error : データファイル1");で
ファイルが開けなかった時にエラー画面を出すようにしておりまして
そのエラー画面が表示されおります。
本件には関係ないと思いますが
当初 移転設定時にjcode.plの設定エラー時にはreturn are:以降にプログラム内での
require './jcode.pl';のラインをエラーとして表示してくれました。
761 :
川上 :02/04/07 17:52 ID:adMQ+yzY
ソースにつきましては まず新規書込処理としてはフォームから受取ったデータを下記にて書込みをさせています。 ----データの書込処理---- # ログを読み込み open(IN,"$logfile1") || &error("Open Error : データファイル1"); @lines = <IN>; close(IN); # 1つ前の記事を取得し分解 ($bno,$bp1,$bp2,$bq1,$bq2,$bq3,$bq4) = split(/<>/, $lines[$#lines]); # 登録Noを取得 $no = $bno + 1; # ログ更新処理 open(OUT,">>$logfile1") || &error("Write Error : データファイル1"); print OUT "$no<>$p1<>$in{'P2'}<>$in{'q1'}<>$in{'q2'}<>$in{'q3'}<>$in{'q4'}<>\n"; close(OUT); ----データの受取処理---- if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コード変換 &jcode'convert(*value,'sjis'); # 禁止文字変換 $value =~ s/<>/<>/g; # 削除情報 if ($name eq 'del') { push(@DEL,$value); } $FORM{$name} = $value; $no = $FORM{'no'}; $DEL = $FORM{'del'}; $in{$name} = $value; } --------
762 :
川上 :02/04/07 17:53 ID:adMQ+yzY
私が至らないために情報が不足しているかと思いますが、 他にどのような情報をご提示させて頂けばいいか わからないために とりあえず こちらを書き込ませて 頂きました。 ご教授 宜しくお願い致します。
>>760 指定されたCGIアプリケーションは、HTTPヘッダーの完全なセットを返さないことにより
無作法に振る舞いました。それが返したヘッダーは次のとおりです:
>>763 Content-typeなどなどが変と。
765 :
川上 :02/04/07 18:41 ID:???
>>763 さま
早速 ご教授頂きありがとうございます。
情報としてヘッダー部分の表示が抜けておりました。
申し訳ございません。
ヘッダーのソースは
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n";
print "<title>タイトル</title></head>\n";
print "<body>\n";
としております。
エラーが発生した際に エラー画面を表示させておりますが
表示されたソースをみると出力されるべきソースが途中で終わっておりました。
今回のエラーとは関係ないかもしれませんが追記させて頂きました。
UNIX環境では問題なく動きNT環境ではデータファイルに書込みが出来ないのは
どういったときに発生するものなのでしょうか。
ご教授 宜しくお願い致します。
print "Content-type: text/html\r\n\r\n"; にしてみて。どっちでもいいんだけどこっちが正式。
スクリプトの冒頭で use CGI::Carp qw(fatalsToBrowser); して、出力されたエラーメッセージ書け。
768 :
川上 :02/04/07 21:25 ID:???
>766 767 さま レスありがとうございます。 試して エラーメッセージを書かせて頂きますので 宜しくお願い致します。
>766 NPHスクリプトじゃない限りやってもやらなくても意味がないと思うゾ! あと、Windows環境では、\r\n だと、印字するときに前もって binmode(STDOUT) (標準出力の場合の例)をやっておかないと \x0d\x0d\x0a と3バイトになって しまうのでは?
770 :
川上 :02/04/07 23:57 ID:???
>やさしいお兄さんさま レスありがとうございます。 私がご教授をお願い致しました件(758 760 761)で 他より頂きました情報に ファイルへの書込権限がないので ファイルオープンが失敗しているのでは と頂いたのですがNTサーバーでもパーミッション設定が必要なのでしょうか?
>770 そりゃいくらなんでも$Mをバカにしすぎ
>770 ファイルロックのとことかどうやってる? まぁ、どちらにしろソースを全部みないとなんとも言えないから どこかにアップしてくれや。
773 :
nobodyさん :02/04/08 05:15 ID:AyL3x1HL
if(!$FORM{'name'}){$FORM{'name'} = "ナンシタン"}; と書いたんですが、オペラでやるとナナシタンとならずに空白で そんままログファイルに書き込んでしまいます。 NN6やIE6では出来たんですが、なにか対処法などはあるのでしょうか?
774 :
nobodyさん :02/04/08 05:16 ID:AyL3x1HL
スマソ。 ナンシタンじゃなくてナナシタンでした。 あと、そんままではなくてそのままでした。 言語と同時に日本語を学びます。
2chマガイなCGI交付してる所ないかな。 (既出なら悪い)
age っつってんだろーがこのバカちんがっ!
778 :
nobodyさん :02/04/09 11:12 ID:TGMHutEB
バカちん
779 :
nobodyさん :02/04/09 14:24 ID:c4h4V4YQ
色々変えて結果をどばっと落としてみてください.
779は中国人。
782 :
初来板 :02/04/09 17:08 ID:H7fQTBug
この板何?なんでスレ一覧の下のほうでもないのに、 去年のスレが平然とゴロゴロ転がってるわけ?
783 :
nobodyさん :02/04/09 17:52 ID:/BtheE/C
ファイルのアップロード処理をしたくて
http://member.nifty.ne.jp/hippo2000/perltips/Cgi.htm を読みながら作ってたんですが、
upload()で取ってきたinputの値がファイルハンドルになってくれません。
マニュアルに「use strict;だとperlが文句を言う」と書いてあったので
その関数の最初でno strict;しています。
それから、my $file = upload("file"); print ref($file);
とすると<UPLOAD>file</UPLOAD>という文字が帰ってきました。
これは関係ないですか?
785 :
nobodyさん :02/04/09 18:59 ID:XYR/ZMS7
dds
786 :
nobodyさん :02/04/09 20:24 ID:/BtheE/C
>>784 ソース読んでみるとFile::Copy::copy()で保存してるみたいなので、
use File::Copy;
:
copy($file, "save") || die("error: $!");
としても、<UPLOAD>file</UPLOAD> No Such File or Directory
というエラーで終了してしました。
CGI.pmを関数として使ってるんですが、それが悪いのかなあ、と。
j-code.plって古いとどんなデメリットがありますか?
788 :
nobodyさん :02/04/10 04:18 ID:c6LIImpc
連続書き込みですいませんが、CGI.pmのソースを調べたり ネットの読み物を探してみても、どうしても分からないです。 下のテストソースを実行させても出力が無いのはなぜですか? #!/usr/bin/perl -w use CGI qw(upload); print <<"END"; Content-type: text/html <html> <body> <form method="POST" action="$0" enctype="multipart/form-data"> <input type="file" name="upfile" value="" /> <button type="submit">send</button> </form> END if ($ENV{"REQUEST_METHOD"} eq "POST") { $file = upload("upfile"); print <$file>; # print <STDIN>; では出力がありました。 } print '</body></html>' __END__
>>787 特に無いと思われる。がフリーなんだからどうせ使うんなら最新版を落とすのを奨励。
>787 あまりに古いと一部の機能が使えない。
791 :
nobodyさん :02/04/10 14:49 ID:U5pgjWQy
こういうスクリプト(表示をhtmlで処理してる)
http://yokohama.cool.ne.jp/icefall/ にリロードボタンをつけるにはどうしたらいいんでしょうか。
投稿欄全て空白で書きこみボタンを押すと
「名前を入れて下さい」「内容を…」
と出る仕組みになってるのでリロードボタンを別に設置したいと思っています
ブラウザのリロードボタンを押しても更新されないようで (;´Д`)
792 :
初心者ですいません :02/04/10 14:54 ID:pqz8X1Tu
CSVファイルを絞り込み検索させて、結果表示する前に {$tanka = $gearn / $gvtnum;} などと割算をしているのですが、割り切れないと処理が止まってしまいます。 (割り切れると大丈夫みたいなのです) こういう場合はどうしたら良いのでしょうか? どなたか宜しくお願いいたします。
0で割ったらいかんぜよ。 $tanka = $gvtnum ? $gearn / $gvtnum : undef;
794 :
初心者ですいません :02/04/10 16:10 ID:pqz8X1Tu
>793 どうも有り難う御座います。 こうするものなのですね・・・
795 :
nobodyさん :02/04/10 21:44 ID:NYy94cTH
>795 セレクトフォームの内容によって出力内容を変えるだけ。 if($FORM{'select'} == 1){ $message = qq(<FONT SIZE=+2>$message</FONT>); } 表示行数変えるのと一緒だろ。 頭使えよ。
798 :
nobodyさん :02/04/10 21:57 ID:ZuHoR8rN
>>791 スクリプトを改造してエラー処理を無くす。(おそらく&error("hoge")になってるだろう)
その代わりにコメント等が無い場合はスルーしてそのままリロードさせるようにする。
(書き込み処理をifで囲む)
それとブラウザの更新ボタンを試してみたけどちゃんと更新されるよ?
>>795 チェックボックスのvalueをifで受けてチャットのコメントの始めと終りに
<font size=4>hoge</font>というふうに付くよう、
if($DATA{'checkbox'} eq "middle") {$hoge=~s/(.+)/<font size=4>$1<\/font>/; }
みたいな感じで改造する。
以上パールで書かれていると仮定してのお話でした。
というかソース見てないけど多分パールだよね?w
>>791 上の者だけど、普通にリンクを貼ればいい話でした。すんまそん。
更新できないってのはおそらくformのvalueが残ったままで更新しようと
してるからエラー処理にひっかかってると思われ。
2チャンのリロードのリンクと同じようにそのCGIのURLを貼ればいいだけ。
800
801 :
791 :02/04/11 01:00 ID:???
>>798 どうもありがとう。
もうちょっといじってみます。
俺の勘違いなのかもしれないね。
802 :
nobodyさん :02/04/11 22:02 ID:xrC+7yeQ
gifcatを使って、カウンタのプログラムを作成しているのですが、 Netscape6.2で繋げた画像の先頭だけがおかしくなります。 これは、仕様なのでしょうか? 某有名CGI頒布サイトのサンプルでも同じようになります。 言語は、Parlです。
>802 Parlなんて言語は知りません。
804 :
nobodyさん :02/04/11 23:50 ID:xrC+7yeQ
>>803 すみません。また間違えてしまいました。
Perlです。
806 :
nobodyさん :02/04/12 00:24 ID:DCCb4BjX
>>805 同じ資料ではありませんが、似通った内容は見たことがあります。
> 一番最初の画像の大きさが全体と異なる場合に表示がおか
>しくなるという、ブラウザ側のバグが原因だと推測しています。
とありましたが、画像のサイズは、全て統一しています。
>>802 Netscape6.2の方の問題だと思う。
これ以上は板違いだし、知らん。
808 :
113 :02/04/12 03:55 ID:xkmU3hC6
>>802 うちんとこは全桁化けてるけど、もう知らん。ネスケ無視だ。がはははは。
てか、俺も解決策知りたし。
>806 一番最初の画像=一番左の桁の画像 全体の画像=一番左から一番右まで全部含めた画像
810 :
nobodyさん :02/04/12 16:06 ID:KhU9N1Jw
>>809 すみません。
小学校から国語をやり直してきます。
811 :
nobodyさん :02/04/12 16:07 ID:KhU9N1Jw
812 :
nobodyさん :02/04/13 19:59 ID:ZRf5XmIQ
あの、.htaccessファイルに ErrorDocument 404 /aaa.html と書けば指定したサイトに、飛ばせるようなのですが --- AuthUserFile /hoge/ AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <Limit GET> require valid-user </Limit> --- のどこに書けばいいのでしょうか? お願いします。
携帯電話からしか見ることができないようにすることは出来ますか? PCからは絶対に見ることが出来ないように 出来るのであれば、やり方を教えてほしいです。お願いします。
816 :
nobodyさん :02/04/14 00:18 ID:gxlmJk+G
>>815 絶対は無理だろ。
ユーザエージェントで判断すればある程度はじけるが、
エージェント変更できる奴とかもあるしな。
>>816 すいません。絶対だなんて言い過ぎました。ごめんなさい。
是非、その方法を教えてほしいです。お願いします。
818 :
nobodyさん :02/04/14 00:29 ID:gxlmJk+G
>>817 環境変数のUSER_AGENT調べて判断しる。
例えばdocomoならDocomo〜とかなってる。
転送量削る為のサイト経由してる携帯を無視していいなら
REMOTE_HOSTで弾けたのが一年前 今はどうなんだろ
>>817 携帯のHTTP_USER_AGENT調べれ
820 :
nobodyさん :02/04/14 00:36 ID:oStrNP4H
フラッシュ作成ソフトの最新版もMX
822 :
817 :02/04/14 01:51 ID:???
$user_agent = $ENV{'HTTP_USER_AGENT'}; if($user_agent =@@@@@@@@) { $mobile = 1; } DoCoMoとUP.BrowserとPDXGWとASTELとJ-PHONEのうちどれか一個あれば 引っかかるようにしたいのですが @@@@@@@@@の部分をどういう風に書けばいいのですか? お願いします。
823 :
nobodyさん :02/04/14 02:03 ID:gxlmJk+G
>>822 正規表現使えば?
$_ = $ENV{'HTTP_USER_AGENT'};
if(m/(DoCoMo|UP.Browser|...|...|...)/){
$mobile = 1;
}
CGIに入る人数制限をする方法を教えてください。
いままで1度もCGIに入ったこと無いや。 死ぬまでに1度は入りたいね。
検索エンジンでデーター部分は一つでCGI設置場所を数箇所からアクセスした場合、 負荷は上がります?
>827 まず、なぜそんな回りくどい事をする必要があるか、200文字以内で説明せよ。
ミラーサイトっす
>827 アナタノニホンゴムズカシイ。 何がどこにアクセスするのか? 何の負荷を気にしているのか?
$hour:$min:$sec このように記載すると時間と分と秒数が表示されるのですが、 これに30分足した時間を求めるにはどうすれば宜しいですか?
>831 それを算出する為にlocaltime()使ってるだろ? そこの数字に30*60をたしておく。
833 :
nobodyさん :02/04/15 20:45 ID:7iLwapD7
画像アップ掲示板で <a href="$image"><img src="$image" border=0></a> の部分がありまして、 $imageの拡張子が .gif .jpg .png の拡張子以外は別の代変え画像を表示したいのですが、 どうすればいいのですか?
if($image !~ /(\,gif|\,jpg|\.png)/i){ #拡張子にこれらが含まれていなければ $image = $image2; # $imageの中身を$image2に変更 } print qq(<a href="$image"><img src="$image" border=0></a>\n);
>834 タイプミス… 自分で修正して。
$ancurl = $image; $image = $altimg if $image =~ /\.(png|jpe?g|gif)$/i; print qq(<a href="$ancurl"><img src="$image" border=0></a>\n);
838 :
WebBeginer :02/04/16 01:35 ID:DFygP1Bi
datファイルに複数行に改行した文章を格納した場合、それを一つの変数に読み込む事ってできますか? 例: bcom.datの内容↓ <STYLE TYPE="text/css"> A { text-decoration: none; } </STYLE> cgiで読み込む文章↓ $bcomfile = "./bcom.dat"; open (IN,"$bcomfile"); flock (IN,1); $bcom = <IN>; close (IN); これで$bcomをhtmlの中に書いても、最初の1行<STYLE TYPE="text/css"> しか格納されてないんですよね。 $FORM{'bcom'}=~ s/\r\n|\r|\n/<br>/g; とすると、改行が<br>に置き換えられてしまうので、結果としてタグが機能しなくなってしまうんですよね。 何とかなりませんか?
>>838 リストに入れたいのならば普通に
@LIST = <IN>;
で改行で区切ってリストに格納される。
もしスカラーにまとめて格納したいのならば
$list = join("",@LIST);
でおながいします。
なぜ私がおながいしているのか謎である。
while(<IN>){ $bcom .= $_; }
>838 while(<IN>){ $bcom .= $_; }
ちなみにスカラーに格納する場合は
>>840 さんの方法のほうが効率的ですな。
もっもちろんそんなの知ってたんだからな!
840より
843 :
WebBeginer :02/04/16 01:55 ID:DFygP1Bi
ありがとうございます。お願いついでにもう一つ、 color.datの中身↓ black<>silver<>blue<>silver で、 $colorfile = "./color.dat"; open (IN,"$colorfile"); @COLOR = <IN>; close (IN); ($bg_c,$tx_c,$li_c,$h_c) = split(/<>/,$COLOR[1]); と書いても各変数に値が代入されないのはなぜですか?
$COLOR[0]
>838 undef $/; $bcom= <IN>; $/= "\n"; これでおながいします。なぜおながいするのかは、わたしにも謎です。
847 :
nobodyさん :02/04/16 02:08 ID:3Tlg2ssN
そこらへんにあるperlの掲示板で著作権がなんとかとか言ってるのが多いんですが どのあたりまで改造して原型をとどめないようにしたら自分のって言っていいんですか? あー、このスクリプトおもしれーことやってるなーなんて思って ガチャガチャいじってるうちに原型がなくなるときあるじゃないですか。 そういうのってだめなの?
848 :
WebBeginer :02/04/16 02:11 ID:DFygP1Bi
みなさんありがとうございます。
>>843 のCOLORを0にしたら無事、格納できたんですが、
$body='<body bgcolor="$bg_c" text="$tx_c" link="$li_c">';
として、
<html>
$body
・
・
・
とすると、変数がむきだしに(ソースを見ると<body bgcolor="bg_c"・・・)となってしまい、うまくいかないのですが何故でしょう。
A改造してAとは全く別物になった → NG 一から書いてAそっくりなものが出来た → OK
$body="<body bgcolor='$bg_c' text='$tx_c' link='$li_c'>"; 自分で調べると言うことも身に付けような。
851 :
WebBeginer :02/04/16 02:33 ID:DFygP1Bi
すいません・・・
ポケットリファレンスなんだけど クオート風演算子の風ってのがなんか好き これって一般的な言い方なんでしょうか? qq()
>>853 quote-like operators の直訳だと思うYO!!
演算子クォート風味
856 :
831 :02/04/16 05:41 ID:???
>>832 どうのように足すのでしょうか?
もう少し具体的にお願いしたいのですが、、、。
>856 $[ == 0 を前提とすると、 ;# 値の取得 ($sec, $min, $hur)= (localtime(time+30*60))[0..2]; ;# ゼロサプレスなし $now= sprintf('%02d:%02d:%02d', (localtime(time+30*60))[2,1,0]);
858 :
nobodyさん :02/04/16 09:56 ID:TbadFbzP
CGIで、一定時間が来たら どっかのHPの情報を取ってきて ファイルに書きこんでいくプログラムはできますか。 (言語Perl)
859 :
nobodyさん :02/04/16 10:05 ID:WW7dwT5r
>>858 自垢を超えてファイルを読み込むことはセキュリティ上禁止されてるので
Perlに限らず難しいんじゃないかな?
861 :
858 :02/04/16 10:19 ID:eNjQI1pb
わかりにくかったかもしれません。 例えばAHOO Financeで日経平均が出ているページを毎日PM6:00に読みこんで、 そこから日経平均を文字列で取り出して、ファイルに保存しておく。 二行目はできると思うけど ユーザーアクションがないときにタイマーで 勝手に作業してくれるようなことはできるのですか?
862 :
858 :02/04/16 10:52 ID:R2KCu+6Y
>>860 じゃぁ、自垢のときに
AHOO Financeで日経平均が出ているページを読みこむ
プログラムは可能ですか?
SOCKETが使えれば簡単です。 Finance::YahooQuoteモジュールでも見て勉強しなさい。
864 :
831 :02/04/16 15:41 ID:???
>>857 ありがとうございました。
助かりました。
865 :
nobodyさん :02/04/17 01:26 ID:BXgzx7GK
訪問者の足跡(/index.html → /foo/index.html → /foo/bar.html →
http://www.yahoo.co.jp みたいな、たどった道)
が解析できるソフトで、できるだけ安価(orフリー)なものはないですか?
Apacheの生ログを解析するタイプでも、あるいは前ページにSSIかPHPかIMGタグかなにかで埋め込むタイプでも、
手段は問いません。
>865 ソフトが欲しいならスレ違いだ! うせろ! しかし、作ったほうが早いな! 簡単だからな! っつーか、作れ!
867 :
858 :02/04/17 11:08 ID:42l5cwQk
>>863 自分とこのプロバイダー
SOCKET通信は、localhostのsmtp/tcpのみということです。(TT)
他にやり方ないですかね?
868 :
nobodyさん :02/04/18 00:11 ID:1URG3Ku/
869 :
アフォ :02/04/18 14:43 ID:ZcdM4/xr
実は最近IE6のセキュリティー規制で去年作ったCGIからのクッキー食ってくれないのに 気づいたのですがコンパクトぽりしー?P3P?を書いとけばいいとどこかのサイトでみつ けたのですが、はてどうしたらよいんでしょうか。 ヘッダーに P3P: CP='ONLi COM CUR OUR' が吐き出されるようにまじないしておくと、嘘つきできると書いてあったんすが。 とりあえず対応するにはこれでいいんでしょうか。 cgiは同じドメインのレンタル鯖から呼び出してます。 (まだ試してません) それとも、まじめ導入すべきなんでしょうか。 perl初心者です。
870 :
nobodyさん :02/04/18 14:51 ID:Htj+h4zJ
871 :
nobodyさん :02/04/18 17:46 ID:fATaEmaK
apeboardを、 書き込み不可で閲覧可能な状態にしておくことできますか? 属性をいじってみたけれど、書き込み不可にするとサーバーエラーになって うまくできなかったので エキスパ−トの方、ワザを伝授してください。
873 :
アフォ :02/04/18 18:11 ID:ZcdM4/xr
>873 昼間は人が少ないからせめて24時間待ってみろ。 レスを急かすとレスする人間減るぞ。
875 :
nobodyさん :02/04/18 19:00 ID:Xv+8+6gt
ども。CGIの知識が乏しくて申し訳無いのですが、質問させてください。 CGIだけで、Formのフォーカス制御は可能でしょうか? JavaScriptも使わずにです。 どうも>476 さん辺りのレスを見る限りでは無理そうですが、、、(^^;
>875 具体的になにをしたいか言ってみればできる事もあるかもしれない。 >477みたいに<form>タグでなら制御できるし。 もっとも、これはCGIの挙動とはいえないが。
877 :
nobodyさん :02/04/18 19:19 ID:Xv+8+6gt
>>876 レスありがとうございます。
ちょっとスレ違いなのかもしれませんが、チャットの改造をしていまして
JavaScriptを使わないモードだとsubmitの方にフォーカスが移ったままになってしまうので
これをなんとかクリアーできないものかと。
そういえば>477さんのターゲット指定を忘れていたような気がするので、今一度
試しに逝って来ます。
878 :
アフォ :02/04/18 19:47 ID:???
>>874 ありがとうございます。
首長待ちしております。
>>876 やはり、だめのようでした。
これ以上は、スレ違いのようなので改造スレに逝って来ます。
ありがとうございました。
880 :
ひこ :02/04/18 22:47 ID:27B4F9dj
CGI初心者です。 今作っているCGIで「param」というメソッドが出てきます。 意味がわかりません。 そういったメソッド等の意味を調べたりするのに便利な書籍や、 WEBサイトをご存じの方がおられたらアドバイス下さい。 よろしくお願いします。
>>880 メソッドって何だよ。VB厨か?
それほんとにサブルーチンか?
myは説明に関係ないので無視して
>>884 メソッドでVB厨って出る時点でアホ決定なんだよ、ボケ。
なんかCGI.pmもしらんアホが吠えてるなw
なんだ、880も煽りか。
>>887 CGI.pmなんか使わないと何にもできない厨房もね。w
890 :
nobodyしゃん :02/04/18 23:17 ID:BuBmgSk0
EUCで記述したperlスクリプトから、外部ファイル(*.jsです)にshift-jisで書き出したいのですが、 何かいい方法はありますか?ご教授願います。
>>889 CGI.pmを知っている=CGI.pmなんか使わないと何にもできない
なのか?一回脳外科行けやボケ。
>>892 CGI.pmが無くても何でもできる−:知る必要がない
逆取れ。
894 :
nobodyさん :02/04/19 00:28 ID:zFUx8GfY
気に入ったスクリプトのソースを見る方法ってないですか? ちょっと参考にしたいなぁと思ってるんですが。
ソース公開してくれるのを待つ、作者にメールを出す、サーバ管理者がトチ狂うのを待つ。 まだ他にも方法はありそうだが・・・・・・
>894 スクリプトだったら、テキストエディタってのを使うと見ることができるYO!
897 :
nobodyさん :02/04/19 00:54 ID:zFUx8GfY
>>893 >CGI.pmが無くても何でもできる−:知る必要がない
一度CGI.pmモジュール読んでからいってほしい
899 :
869 :02/04/19 15:23 ID:1m0wphwT
>>869 ですが、「アフォはくんな」でしょうか。
IEのセキュリティもプライバシーも最低レベルに落としている知人に
アクセスしてもらうと正常に動作するのですが(WinXp&IE6)。
同じ設定にしてもウチノハクッキーすら食べてくれない状態で。
ちなみに以下の文をヘッダーに組み込んでみましたが、ぜんぜん効果なしでした。
P3P: CP='ONLi COM CUR OUR'
セキュリティー初期のままでもクッキー食わせる方法教えていただけませんか。
901 :
nobodyさん :02/04/19 19:47 ID:1m0wphwT
>>900 アホです、ありがとうございます。
nmda.or.jp参考になりました。(これは見つからなかった)
903 :
某研究者 :02/04/20 09:17 ID:Gxe0B6+C
しかしCGI用のインストーラ(FTPソフト改造か)と言うのは作成出来ぬ訳なのだろうか (パーミッション設定・ディレクトリ作成をWINDOWSのアプリケーションの様に 自動で出来ないのか)
>>903 出来る。しかしなんでお前は無知な癖にしゃべり方が偉そうなんだよ。
研究者と教えてくんは違うぞ?
FTPインストーラ付属CGI それイイ
907 :
nobodyさん :02/04/20 16:14 ID:Ebv3CsfS
CGIでフレームセットだけを自動生成して、既存のHTMLファイルを表示させる プログラムを作成したのですが、読み込んだHTMLファイルのエンコードがEUCに なっていしまいます。 CGIファイル側では、 <html> <head> <title>メールマガジン</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <frameset cols="180,*" frameborder="NO" border="0" framespacing="0"> <frame name="ContentsFrame" scrolling="NO" noresize src="contents_2.htm"> <frame name="InformationFrame" src="amc.htm"> </frameset> <noframes> <body bgcolor="#FFFFFF" text="#000000"> </body> </noframes> </html> このように記述します。 読み込むHTML側には <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> このように記述しています。 ブラウザは、IE6です。 使用言語は、Parlです。
909 :
nobodyさん :02/04/20 17:14 ID:Ebv3CsfS
>>908 どの部分で使えばよいですか?
CGIでフレームセットを表示した後、フレームを構成するHTMLもCGIで
表示してしまえば済むのですが、サーバーの負荷を考えてHTMLとして
表示させたいのですが、無理ですか?
>907 おまえが何をやりたいのかさっぱりわからん。
Parlってなに?
912 :
nobodyさん :02/04/20 17:31 ID:Ebv3CsfS
>>910 フレームセットを自動的に生成+それぞれのフレームに対するアクセス数を
カウントするプログラムです。
フレームでページを作った場合、個々のページにアクセスするには、
それぞれフレームセットを作らなければいけませんよね?
それを解消する+カウンタです。
>>911 すみません。また間違えました。
Perlです。
913 :
908 :02/04/20 17:45 ID:???
>>910 が言っているように、「どこを」「こうしたら」「こうなった」という
事が記述されてないから、適当に答えた(w
>>907 あんたは逆にこの質問されて答えられるのか?
914 :
nobodyさん :02/04/20 18:33 ID:Ebv3CsfS
>>913 すみません。
質問が具体的ではなかったですね。
> あんたは逆にこの質問されて答えられるのか?
分かりません・・・。
解決方法が分からないので、質問させて頂きました。
>>907 それって読み込んだHTMLのエンコードが本当にEUC-JPになっているの?
それとも,エンコードはSHIFT_JISなのにブラウザがEUC-JPだと判別してしまっているの?
HTMLファイルがもともとEUC(・∀・)デシタ!! とかいうオチのような気が.
916 :
nobodyさん :02/04/20 19:41 ID:Ebv3CsfS
>>915 恐らく、ブラウザがEUC-JPだと判断していると思われます。
あと、HTMLファイル自体は、Shift-JISです。
あの〜負荷ってどういう時に掛るのでしょうか・・・ サーチエンジンの場合、データーとCGI本体とを別々のサーバーに置いた時って、 どっち側に負荷が掛るのでしょうか・・・ ほんとすんません・・・ネタじゃないです
サーチエンジンで考えられる負荷 ・CGIスクリプトのコンパイル ・ファイルオープン ・データのループ (whileやforeach) よってCGI側
>916 恐らくって… ソースを表示すれば断言できるのに. じゃあ,そのHTMLファイルを,CGIで生成したフレーム経由ではなく URL直接指定で開くとどうなる?
920 :
917 :02/04/20 20:11 ID:???
921 :
nobodyさん :02/04/20 21:17 ID:Ebv3CsfS
>>919 ソースを表示って、秀丸とかでいいんですよね?
確認しました。
ブラウザでは、もちろん一発でShift-JIS表示されます。
>921 うーん,そうか. じゃあ今の情報からは思い当たるものが無いや.役に立たなくてスマソ. CGIだから起こった問題ではない気がするんだけどね…
923 :
nobodyさん :02/04/21 02:28 ID:2DSDrCKh
>>922 そうですか・・・。
ありがとうございました。
フレーム生成CGIからさらにCGIを呼び出すことにします。
>922 ほんとに役立たずだからびっくりしたよ。
>>924 この時間にスレ巡回して煽りレスのみを書き込むお前にもびっくりだ。
926 :
nobodyさん :02/04/21 04:33 ID:5EokjXuO
>925 おぉ、キミもそう思ってくれるんだぁ。 煽りレスもびっくりだけど 922 の役立たずぶりにももひとつびっくりってか!
>>907 ほとんど状況がわからんまま言うが、
CGIの問題とは違っていそうだからスレ違いではないかと思う。
ひょっとしてこれか?
> <title>メールマガジン</title>
> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
シフトJIS指定する前に日本語書いちゃダメ!
それをやっているファイルを全部書き換えろ!
念のため… <HTML LANG="ja"> も入れておくといいかも
929 :
nobodyさん :02/04/21 11:07 ID:6JsTHOqF
今非常にわからない問題があって、困っています。 どなたか解決法がわかれば教えて頂きたいのですが。 現在CGIStationさんのANS.Qを複数ページに設置しています。 少々HTMLを加えてして2ちゃんねるみたいなテーマごとのミニ掲示板みたいにしているのです。 で、荒しが多いのでアクセス制限しているのですが、この作業をなんとかして自動化 したいのです。 1今までのやり方は何も入ってないansq.cgiにアクセス制限のIPを書く 2既存のものをバッチファイルで一気に削除 3バッチファイルで新しいansq.cgiをコピー 4エクセルに作ってあるパラメータ表から掲示板ごとのデータをコピーして貼り付け (エクセルからCGIファイルにハイパーリンクを貼って開いています) という順でやっています。 ところが4の段階でどうもミスが多く違うCGIに違うデータが入り込んでしまうことも しばしばあり、なんとか自動化してアクセス制限のスピードを上げたいと思っています エクセルから他のアプリケーション(この場合はテキストエディタ) を開きセルの内容をCGIの適切な場所にコピーする 作業を自動化することはできないのでしょうか。 wordで開いて差し込みでなんとかならないものかと思いましたが 何ともなりませんでした。 VBAなども検索してみましたがさっぱりわかりません。 何かよい方法があれば知恵を貸して頂きたいのです。 よろしくお願いします。 ガイシュツだったらすいません
930 :
nobodyさん :02/04/21 11:18 ID:2DSDrCKh
>>827 そうなんですか・・・。
逆にするだけで解決してしまいました。
CGIの問題ではなくHTMLの問題だったんですね。
>>928 企業のページなどは、このような表記をしているページもあるみたい
ですね。
早速、入れてみました。
参考になりました!ありがとうございました!!
931 :
nobodyさん :02/04/21 11:40 ID:1/Tdsylw
>>931 俺だったら
<a href="./?data1=data">
<form action="./?data1=data">
↑こう書く
>>932 もちろんそうだけど
>>917 に
>どっち側に負荷が掛るのでしょうか・・・
って書いてあったから
そろそろ次スレか? ところでなんでこのスレは5.01なんだ。IEじゃねーつうの。
>>933 なるほど、そういえばそんな書き方もありましたね。
サンクスです。
938 :
937 :02/04/21 18:38 ID:???
939 :
a :02/04/21 22:22 ID:???
perlでkent-webのデイカウンタみたいのが作りたいのですがどこか初心者向けの解説ペーゾしりませんか?
940 :
nobodyさん :02/04/21 22:28 ID:IX+pJPo5
BBSにPassword認証つけたいんだけど 認証を行ったブラウザ(別のウインドウには影響なし)が起動している間だけ、 変数(Passwordデータ)を記憶させることってできない? クッキーやJAVAの範囲になっちゃうのかな・・・
941 :
nobodyさん :02/04/21 22:51 ID:Ld3WJnEP
942 :
nobodyさん :02/04/21 22:55 ID:Ld3WJnEP
943 :
nobodyさん :02/04/21 22:56 ID:Ld3WJnEP
>>939 まずは、CGIとはなんたるものか理解する所から始めないと駄目な様だね…
で、その解説ページも検索して、読み尽くしても解らなかったらここにこいや
>>940 cookie ぐらいしか思い付かないな
946 :
nobodyさん :02/04/21 23:48 ID:IX+pJPo5
>>945 なるほどやはりcookieですか・・・
cookieスレ逝ってきます
>>940 たのウインドウが起動している間だけってのは難しいけど、
簡単にやるなら
>>945 で。
もちょっと手の込んだ方法でやるなら、セッションオブジェクトが使える
言語でやると思う。
948 :
nobodyさん :02/04/22 13:14 ID:iPGLjlXl
よく掲示板にuriと思しき文字列を <a href="string">string></a> っていう風に置換する奴がありますけど、 2バイトコードに対応させるには 正規表現をどう書けばいいんでしょうか? 日本語のuriなどに対応させたいんですが・・・。
>948 そりゃかなり無謀な話だな。 「リンクさせたいURIは"<>"や"[]"で囲む」っつーマークアップ規則を提示してそれに従わせるとか。
951 :
948 :02/04/22 13:35 ID:???
>949 そういう場合困るんですよね・・・・・・。 >950 そういう風にする方がいいですね。 どうも、ありがとうございます。
952 :
nobodyさん :02/04/22 17:26 ID:mWLoTPYT
>>952 ダウンロードを抑制する為にか?そりゃ無理だな。
フラッシュを使えば出来るかもしれんが。
955 :
952 :02/04/22 21:58 ID:???
>>953 >>954 レスありがとうございます。
自分のホームページのアドレスを見せたくないから
そういうのに改造してくれないか、と知人に頼まれたもので。
例えば、
<img src="
http://www.hoge.com/hoge.cgi?kiji_icon=1 ">
とすれば、スクリプトを設置しているサーバー側で、
「ログファイルの1番目に記述されているアイコンURLを参照、画像を読み込んで表示」
といった処理を行い、ブラウザ等から見てもそのURLが分からないようにする、
といったことを考えています。
しかしその処理を行えるスクリプトが思い付かず、
そもそもそういったことが可能なのかどうか質問させていただきました。
Perl超初心者でして、バカな考え方なのかもしれませんが...
956 :
nobodyさん :02/04/22 22:38 ID:IEsnFENe
「web裁判」のcgiをダウンロード出来るサイトを教えて頂けませんか? ここなら誰か御存知と思うのですが…
>958 無能のくせに、知ったかぶり発見!
>955 画像をCGI経由にするって事は、その分サーバーに負荷をかけるってことだ。 しかも画像の数が増えれば増えた分だけ負荷が増える。 共用鯖ならやめておいた方がいい。 お前一人で使ってる鯖じゃないんだ。
961 :
nobodyさん :02/04/23 06:28 ID:Qw5U18DO
>952 Locationで飛ばせば良いかも。 URL直打ち対策の処理をしておけばなお良し。 ヘッダ読まれたらそれまでだけど・・・。
962 :
nobodyさん :02/04/23 06:32 ID:ABgbgZ3N
とあるサイトで掲示板などのCGIにはセキュリティホールが たくさんあることを知りました。よく知られている あのCGIもあのCGIも危険らしいです。 そんでもって、危険なのは分かったんですが、どのように 危険なんでしょうか。 初心者でもこのぐらいやっとけっていう対策とかありますか。
>962 open,exec,systemなどに外部から入力されたデータを使わない。
なるほど、って全然わからないんで調べときます。
965 :
952 :02/04/23 08:24 ID:JSeGUqgt
なるほど... これだとやはり負荷が問題になるんですね。 隠し通すことのできない Location もやめておきました。 知人にはできない、と言っておきます。 ありがとうございました。
my $file とかのmyってどうな効果があるの?
>>967 ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚) ( ゚д゚)ポカーン
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
今だ!1000ゲットォォォォ!! ``)  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ `)⌒`) ( ∧∧ ∧∧ ) (´⌒(´ ≡≡≡;;;⌒`)≡≡≡⊂´⌒⊃ ゚Д゚)⊃ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡ ;;⌒`)⌒`)  ̄ ̄ ズザーーーーーーーーッ ・・・・・・・・・・・・・・・・・・ ``)  ̄ ̄ ̄∨ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ `)⌒`) ( ∧∧ ∧∧ ) (´⌒(´ ;;;⌒`) ⊂´⌒⊃; ゚Д゚)⊃ ⊂(゚Д゚;⊂⌒`つ (´⌒;;; ;;⌒` / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ( ケコーンしよう・・・ 。o ○\____________/ .∧∧ヘヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ( ノ ) 。o○( うん・・ ./ | \ \_________/ (___ノ(___ノ / \
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。