掲示板 version 1.02

  1. 掲示板です。是非足跡を残していってください!
  2. 恐縮ですがタグは無効です。入力項目はいずれも省略可です。
  3. 荒らしはやめてください。IPアドレスを記録しています。…念のため (^^;
  4. 荒らし防止のため、"http://"を禁止キーワードにしています。
  5. 全角文字が含まれていない英数字のみの記事は投稿できません。
タイトル  
お名前
内容
確認用6 + 1 =  (迷惑書き込み防止用です。足し算の答を入力してください。)

No.585 coPygus.Com ジーンズcoPygus.Com 2021/10/06

ジーンズcoPygus.Com

No.584 ご質問ありがとうございます 管理人 2020/12/04

ご質問ありがとうございます。
お返事がとても遅くなってしまい、申し訳ありません。
plabanalyzerが動作しないとのこと、申し訳ありません。
古いプログラムなので、あるいはPerlのバージョンとの互換の問題があるかも知れません。。
私の方では、新しいバージョンのPerlで動くかどうか、現在のところ、未確認です。
今後、確認する機会があれば、トライしたいと思いますが、対応時期は未定です。。
無責任で申し訳ないです。。

No.583 perl v5.16.3 では動作しますか? 村上たあな 2020/09/30

こんにちは。はじめて質問いたします。
以前から使っていたplabanalyzer.cgiが突然動作しなくなり困っております。
kagoyaのサーバーを使っており、先日サーバープランをs21からs22へ変更したときから動かなくなっているのではないかと推測しております。質問なのですが、perl v5.16.3 では動作しますでしょうか?ご多用のところ申し訳ありませんが、よかったら原因について、考えられる要素を教えて頂ければと思います。

No.582 書き込みありがとうございます 管理人 2020/08/25

陶芸家さん、こんにちは。
書き込みありがとうございます。

書き込みがあるとメールで通知されるので分かるのですが、
前回の書き込みが2019/2/1ですから1年半ぶりです笑

このサイトはもう15年くらい前に作ったサイトで情報が古いのですが・・
なにかのお役に立てれば幸いです!

No.581 陶芸家 2020/08/25

67歳のじじぃですがperlは20年くらい前から使っていましたが相当にいい加減
適当、中身殆ど分からずで人に聞いたりしながらやっていましたがこの年になり、このままでは死ねん、せめて自分の使ってるプログラムはある程度理解したいと思い、本を買いましたが、、矢張りネットのほうが分かりやすい、で
色々やってる内に当サイトと出会いました。大変役立ちます、これからも利用させていただきます。

No.580 はんばい www.keevoo.com/brand-731.html 2019/07/24

シュプリーム 偽物 半袖Tシャツ です。

No.579 ありがとうございます。 管理人 2019/02/05

yuukiさん、お返事が遅くなってすみません。
書き込みを拝見して、なんとも嬉しい気持ちで一杯になりました。
当サイトがなんらかの形で人のお役に立てているとしたら、
管理人としてこれ以上の喜びはありません。
書き込みありがとうございました。

今となっては本当に古いサイトになってしまいましたが、
当サイトは私のPerlの原点でもありますし、
これからもこの場所にありますので、よろしければまた来てくださいね。

No.578 謝辞 yuuki 2019/02/01

約9年前に質問させていただいたNo.484です.
最近はワードプレスなどのCMSが主流で,直にPerlでウェブサイトを構築する機会がめっきり減りませた.古風なウェブサイトが少なくなっていくのがさみしいと感じると同時に,ウェブ技術の進歩を日々感じます.
9年前私は高校生で,ここで勉強させてもらいながらプログラミングを学びました.ここでのPerlプログラミングが原点で,その後大学院まで進学し,プログラミングを多用するシステム工学を専攻するまで至りました.
最近,どうしてもPerlでうまくいかないことがあり,また参考にさせていただきました.ありがとうございます.
このサイトは,私にとってとても貴重な資料です.ドメインやサーバの維持など大変かと思いますが,末永く私の原点であり続けていただけたらと思います.

No.577 設置させていただきました! 水沢 2019/01/12

ホームページのトップページ最下部に取り付けさせていただきました!
設置も簡単でとても分かり易かったです、素晴らしいカウンターですね。
利用させていただき、ありがとうございます!

No.576 勉強中 k0b 2018/10/30

table.view_table, th, td {
border: 1px #000000 solid;
border-collapse: separate;
border-spacing: 1px;
}

No.575 ありがとうございました 初心者 2017/12/29

勉強になりました

No.574 ありがとうございます。 キムチちゃん 2017/10/14

情報、大変、参考にさせていただいております。ありがとうございます。

No.573 お邪魔します2 通りすがりの者です 2017/09/22

すみません、もう1つ。

No.572 お邪魔します 通りすがりの者です 2017/09/22

確認に足し算は面白いですね。
動作をテストさせていただきます。

No.571 Re ハラダ 2017/06/14

ご情報ありがとうございます。




okaimonokizi.seesaa.net/

No.570 print "Hello, Perl !"; PerlNewBee 2017/04/23

Perl勉強中です。
I'm learning Perl.
I can programm to show "Hello, Perl !" on command line

No.569 2017/02/14

かか

No.568 2016/11/20

テスト

No.567 文字ばけについて教えてください。 はるか 2016/05/22

古い携帯で掲示板に書き込むと文字化けするのですが、
CGIの方で対策はありますか。

No.566 いいサイトですね 通行 2016/02/12

結構年季の入った風情ですが、スパムが見当たりませんね。すごいです。

No.565 いいサイトですよね 通りすがりました 2015/09/14

ちょっと、いや、だいぶ情報が古いところもありますが^^;

No.564 テストです テスト 2015/07/31

こんにちは。

No.563 test01 2015/06/15

難しくて、うまくいきません

No.562 テスト テスト 2014/12/03

テストっていう話や

No.561 初めてのcgi 2014/03/16

test

No.560 test 2014/02/14

testテスト

No.559 test 2014/02/14

testテスト

No.558 棒グラフの件 eye385 2013/09/03

お世話になってます。
Firefoxで正常にグラフ表示できました!ありがとうございましたm(_ _)m

No.557 テストmy てすと 2013/08/06

てすと

No.556 管理人 2013/07/23

情報ありがとうございます!

No.555 下の棒グラフの件 2013/07/19

こちらはChromeですが
span.plgに
display:inline-block;
を追加したら表示されるようです。

No.554 管理人 2013/07/19

funcHMさん、こんにちは。

htmlを解析しても答えが分からないようにするっていうのは、けっこう難しいです。
1〜10までの画像を用意するというような、単純なやり方ではたぶんうまくいかないです。
よろしければ、具体的な実装を考えてみてください^^

No.553 この掲示板の脆弱性について 2 funcHM 2013/07/16

度々すいません。
既存の投稿を見る限り、captcha や CPAN 等が取り上げられてますが、
1〜10までの乱数で作ってあるみたいなので、1〜10までの画像を用意して
おけばいいでしょう。処理高速を優先するのらこちらが良いと思います。

No.552 この掲示板の脆弱性について funcHM 2013/07/16

大げさかも知れません。
確認用の足し算ですが、これを解析するスパムもいるかも知れませんので、
数字を画像に置き換えると良いと思います。

いつもこのサイトにお世話になっております。

No.551 testあ testあ 2013/03/24

testあ

No.550 testあ testあ 2013/03/24

testあ

No.549 クリック数のカウント ぱんにゃあ 2013/02/20

こんにちは。
突然で申し訳ございませんが、Javascriptのみ(cgiやPHPを使わずに)で複数リンクのクリック回数をカウントするにはどうしたらいいのでしょうか。
このページ(ttp://www.perl-labo.org/gocount/2/)を拝見しましたが、この方法をJavascriptのみで行いたいのです。
返信待ってます。

No.548 ありがとうございます ya 2012/12/17

いつも大変勉強になっております。

No.547 はじめてのcgi momo 2012/10/10

テスト

No.546 ありがたいです kijuis 2012/03/07

私は初心者なので、とても助かってます。
管理人さん、これからもよろしくおねがいします。

No.545 ありがとうございます eye385 2012/02/11

お返事ありがとうございます。
不具合ということで承知しました。気長にお待ちしますので無理なさらないでくださいませ。

No.544 すみません不具合です 管理人 2012/02/10

eye385さん、正しく棒グラフが表示されないのは、
CGIプログラムが出力しているHTMLソースに問題があるのだと思います。
IEで動作確認をしていたもので、問題に気が付きませんでした。
調査して修正すべきなのですが、すみません今時間が無くてできません。
ご迷惑をおかけしてすみません。

No.543 plabanalizerのグラフ eye385 2012/02/09

こんばんは。plabanalyzerを使わせていただいています。
質問させてください。

Firefox10.0でカウント詳細画面を表示すると棒グラフが正しく表示されません。IE8.0なら表示されます。グラフ以外の数字は正しく表示されます。どんな原因がありますでしょうか。

No.542 よろしくです。 クロネコ 2012/01/19

perl初心者です!まだ全然perlについて分かりませんが
今日からお世話になります^^

No.541 管理人 2011/12/26

↓の書き込み、こういうのまだあるんですね〜
いやー迷惑ですね。ヤレヤレ
この掲示板、削除機能が無いのですみません^^;

No.540 おまじない 堕天使 2011/12/24

これはアメリカのゲームです。1度やってみてください。
これは、たった3分でできるゲームです。試してみてください。驚く結果をご覧いただけます。このゲームを考えた本人は、メールを読んでからたった10分で願い事がかなったそうです。このゲームは、おもしろく、かつ、あっと驚く結果を貴方にもたらすでしょう。
約束してください。絶対に先を読まず、1行ずつ進む事。
たまず、ペンと、紙をご用意下さい。先を読むと、願い事が叶わなくなります。
1,まず、1番から、11番まで、縦に数字を書いてください。
2,1番と2番の横に好きな3〜7の数字をそれぞれお書き下さい。

3,3番と7番の横に知っている人の名前をお書き下さい。(必ず、興味のある性別名前を書く事。男なら女の人、女なら男の人、ゲイなら同姓の名前をかく)
必ず、1行ずつ進んでください。先を読むと、なにもかもなくなります。

4,4,5,6番の横それぞれに、自分の知っている人の名前をお書き下さい。これは、家族の人でも知り合いや、友人、誰でも結構です。

まだ、先を見てはいけませんよ!!

5,8、9、10、11番の横に、歌のタイトルをお書き下さい。
6,最後にお願い事をして下さい。

さて、ゲームの解説です。

1)このゲームの事を、2番に書いた数字の人に伝えて下さい。
2)3番に書いた人は貴方の愛する人です。
3)7番に書いた人は、好きだけれど叶わぬ恋の相手です。
4)4番に書いた人は、貴方がとても大切に思う人です。4)4番に書いた人は、貴方がとても大切に思う人です。
5)5番に書いた人は、貴方の事をとても良く理解してくれる相手です。
6)6番に書いた人は、貴方に幸運をもたらしてくれる人です。
7)8番に書いた歌は、3番に書いた人を表す歌。
8)9番に書いた歌は、7番に書いた人を表す歌。
9)10番に書いた歌は、貴方の心の中を表す歌。
10)そして、11番に書いた歌は、貴方の人生を表す歌です。

この書き込みを読んでから、1時間以内に10個の掲示板にこの書き込みをコピーして貼って下さい。そうすれば、あなたの願い事は叶うでしょう。もし、貼らなければ、願い事を逆のことが起こるでしょう。とても奇妙ですが当たってませんか?
った3分ですから、ためす価値ありです

No.539 ttp:// ttp:// 2011/11/13

あああ→ttp://

No.538 テストです 見習いプログラマ 2011/08/21

参考にさせてもらっています

No.537 管理人 2011/06/09

管理人でございます。放置気味ですみません。

皆川源太郎さん、
お役に立てて嬉しいかぎりです。ご自由に使ってください。
しかし社名とか書いちゃって大丈夫なんでしょうか(^^;

直江兼続さん、
7年ですか、そうですか、なるほど私もオッサンになりました(笑
「管理人さんのこのサイトが私に仕事を与えてくれた」
うーむ、どういうことでしょう、ともかくお役に立てたなら嬉しいです(^^

その他の質問書き込みをされている皆さま、
返事をさぼり申し訳ありません。。。

No.536 シンプルで改造が楽です。(^^);\ 皆川源太郎 2011/06/06

初めまして、管理人様。m(_ _)m

業務用のツール開発を生業としている、ジオプランニングの皆川と申
します。

良いアクセスカウンターを探していまして、ここにたどり着きました。

再配布、改造等OKと言う事ですので、お言葉に甘えさせて頂きまして、
改造版のアクセス解析を弊社の顧客に配布しようかと思っております。

ここのアクセス解析が原型になっておりますので、とても安定して動作
してくれますし、何よりシンプルで改造するのがとても分かり易く、
時間短縮が出来ました。

有り難うございます。

この場を借りてお礼を申し上げるとともに、仕様変更しての流用のご報
告を申し上げます。

本当に、有り難うございます。

No.535 てすと てすと 2011/06/02

てすと

No.534 多機能カウンター 直江兼続 2011/05/23

7年も経つでしょうか。
ホームページのアクセスカウンターに、ココの多機能カウンターを
使用させて頂きました。
あの頃のこの掲示板には「確認用」というボックスはなく、
荒し対策で四苦八苦しておりましたよね。
随分と進歩したなぁと驚くと共に、管理人様の努力に感じ入りました。

当時の私は、テストの仕方なりはお聞きしましたが、
管理人様を見ていて思ったのは、人に聞くのではなく、
「自分のやる気」で構築するもんやなぁという事です。

管理人さんのこのサイトが私に仕事を与えてくれたんです。
ありがとうございました。


直江山城

No.533 ERRORと表示されます miyata 2011/05/11

お世話になります。今サーバー立上げ中ですが、
・・・・・/plabanalyzer/plabanalyzer.cgi
とすると ERROR と表示されます。
今までのですと、総カウンター数がちゃんと表示されるのですが、よくわかりません。
merged.plの
print "Content-type: text/html\n\n";
    print "ERROR";
    return 1;
から出ているようです。ヒント宜しくお願いします。

No.532 テストのは… かびぃ 2011/05/05

実は携帯で書きました。

No.531 テスト しく 2011/04/28

お疲れ様です

No.530 テスト かびぃ 2011/04/15

届いているかな?

No.529 質問です Tekkscue 2011/03/27

cgiをよびたしたとき別窓が出るのを防ぎたいのですが、どのような処理をすればよいのでしょうか

No.528 hm。。 Tekkscue 2011/03/27

書き込み挙動をみます。

No.527 お初です Tekkscue 2011/03/26

とてもわかりやすかったです。

No.526 質問があります miya 2010/12/03

初めて投稿します。
.cgiをイメージごと、cgi-bin配下ディレクトリに保存していますが、このままですと.gifが表示されません。htmlのディレクトリに移動したいと思いますが、パスはどこを書き換えたらよいのでしょうか。
OSはcentos。ブログはMT5で使用したいと思います。レンタルサーバーではそのまま動くのですが自前のサーバーではどうもよく動きません。
宜しくお願いします。

No.525 2010/11/27

自分で掲示板を作ってみたくて
色々調べているうちに、このサイトに辿りつきました。
読みやすく判りやすい内容で非常に参考になります。

No.524 非常によかった。 じじいです 2010/11/04

・構成がすっきりしていて、サンプル・文章とも非常にわかりやすいです。
・これから、読破するまでお世話になります。
・今後、パスワード入力+隠しcgiについて、コンテンツ追加を検討されませんか?

No.523 おつかれです nozomin 2010/10/22

初心者にわかりやすくて便利です〜 ありがとうございます!

No.522 少しだけ obro 2010/10/16

勝手に部分的に利用させてもらっています
少しだけ perl 分かってきたかな?
ありがとうございます

No.521 わかりやすかった! mako 2010/07/25

会社でperlでcgiをやれと言われてひと月、
あらゆる本やサイトをさまよったものの理解できず、
貴サイトにめぐり合い、一夜ですっきり解決です!
ありがとうございました!

No.520 Šm”F―p‚ÌŒvŽZ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB ƒuƒ‰ƒEƒU‚Ì–ß‚éƒ{ƒ^ƒ“‚Å–ß‚Á‚Ä‚ ‚¾‚³‚¢B Šm”F―p‚ÌŒvŽZ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB ƒuƒ‰ƒEƒU‚Ì–ß‚éƒ{ƒ^ƒ“‚Å–ß‚Á‚Ä‚ ‚¾‚³‚¢B 2010/07/10

Šm”F―p‚ÌŒvŽZ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB
ƒuƒ‰ƒEƒU‚Ì–ß‚éƒ{ƒ^ƒ“‚Å–ß‚Á‚Ä‚ ‚¾‚³‚¢B

No.519 分かるかな? obro 2010/06/06

1ヶ月かかってHP何とかできてママこんなものかと思ってましたが 次にcgiやり始めて なんと五里霧中 手探り
これから分かってくれるかな? 私の頭は
まだ準備段階

No.518 つっこみ 通りすがり 2010/04/30

splitは演算子ではなく関数です。
主に『名称 リスト演算子』中の名称は関数名です。

式として扱うような「==」や「+」を演算子と呼びます。
split中のパターンマッチは演算子です。

文字列リテラル("",'',q,qq,qw)は関数でも演算子でもありません。

Perlは関数やリテラルを演算子のように扱える為に関数を演算子と呼ぶ場合もありますが、
厳密には上記の通りです。

weblabo.griffonworks.net/perltexinfo/perl_9.html#SEC42

No.517 アドバイスありがとうございます。 管理人 2010/04/22

このサイトは私が「Perl/CGIの勉強をしていた初期の過程を残したもの」なので、
結果的に、PerlでCGIプログラムを作る入門サイトになっていますが、
ターゲットを考えて作ったサイトではないですし、他のサイトをライバルと考えたりもしていないです。
が、もっと内容を充実させたいという気持ちはあります。
が、今は時間がとれないので、このサイトに期待せず、ご自分で研究してみてください。(ごめんなさい)
その過程を1つのサイトにして残すと、同じ情報を探している他の人が喜びますよ(^^

No.516 ユーザTargetを明確に 初心者 2010/04/21

助言:
perl-laboのユーザ層は不明確
初心者向けなら、
@インストール編は必須です。
Ac:\perl/bin/perl;#記入すべき---->結局簡単なsampleも体験できず。
入門済みなら、変数ってなになどという説明などは要らない。

perl入門ばかりのもの向けなら:
サーバのとこについて詳しく説明する必要ですが、一切なし
uploadなど、

結局:ユーザ自身はあちこち探し、勉強が必要。振り返ってみて、laboさんの説明がうまいという感じ。

完全な初心者をターゲットするにはワンセットの内容が必須です。
laboさんサイト内容から見れば、初心者からプロまでのようですが、一番重要なstart案内がなし。

せっかくのすばらしい中身ある研究内容は眠っている!

ライバルさん、全員特徴があり。
ご参考になれば

No.515 テスト方法について 初心者 2010/04/21

ご返事にありがとうございます
貴サイトは超実践入門・親切・実用・内容豊富。perl/cgiの集大成です。
足りないのはテスト方法だけです。
独自カラーが強く、ライバルを超える時期は遠くないと思います。
以下のサイトはインストール方法があるが、内容は古いです。安全運行できるかどうかは初心者にとって判断できない。
www.site-cooler.com/server/

以下のサイトも独自カラーです。文法に強い。perlだけ
www.geocities.jp/KY_webid/perl5/index.html

以下のサイトはサンプルが多い。中以上レベル向き。実践入門ではない。
www.kent-web.com/

自力でAN HTTPDを用いてcgiのテストはできたが、メール送信のテストはできない。

ぜひ、足りないものを追加して、お待ちしております。

No.514 管理人 2010/04/16

初心者さん、ご要望ありがとうございます。
いつか、そういった内容のページも作りたいなぁと思っています。

No.513 初心者のために 初心者 2010/04/15

はじめまして
perl入門ばかりのものです。
サイトを拝見して、大変参考になります。
本当にすばらしいサイト!!
希望:
cgiのlocalマシンのテスト運転方法。この方法がわからないと、自分の手で貴重なサンプルの作動は確認できません。
Apacheのインストール方、簡単なテスト方など
ぜひよろしくお願いします

No.512 始めめまして Rein 2010/04/14

最近CGIを始めた初心者です、クッキーの制御が上手く行かずたどり着きました。また1から覚えるつもりで通わさせてもらいますね。

No.511 yoshi_yuu 2010/03/24

そうですね。
やっぱりユーザー毎にファイル(トークン)を生産するってのがネックですかね……。

ですが、たいていのcaptchaはこんな感じの仕組みをとっているはずです。
(ですが、PHPなどにはセッションという概念があるので、恐らく高速です。)
僕にはそれをパクる位しかできないので、こういう実装になってしまいした。

ファイルを大量生産しない形での実装がありましたら、お手数ですがご教授下さい。

No.510 管理人 2010/03/23

ありがとうございます。
ユーザー毎にファイルを生成する方法はベストではないと思いますが、
アクセスの多いサイトでなければ充分だと思います。

No.509 yoshi_yuu 2010/03/23

CPANに依存するのはサーバー上で運用するcpatchaにとってよくないだろうということで、確実にサーバーで運用できるまでCPANを排除しました。
CPANに依存していた部分は自身でカバーしたので、今までと同じように使うことができます。

また、前回のver1.10では、クッキーの削除が五分になってましたが、そんなに急いで削除する必要はなかったので、
延長して二日にしました。それ以外は特に変更はないです。

Ver1.20
ttp://horizon.xxxxxxxx.jp/token/captcha3.html

No.508 yoshi_yuu 2010/03/20

返答ありがとうございます。

そうですね、やっぱりファイルがメチャクチャ多くなる可能性がありますね……。
特に、イタズラでリロード連発されたらヤバいですね。

では、トークンをクッキーに保存ましょう。
そうして、投稿せずに再度訪れた場合は、そのトークンのファイルに書いてある答えを使いまわします。
そうすれば、トークンの生産量を抑えられるはずです。
クッキーの使い方はよく分からなかったので、管理人様がお造りになられた、cookie.plライブラリをそのまま使いました。
また、以前のコードでは足し算の二つの数を生産する時に、乱数生産をループの中に入れるというコーディングをしてました。
普通に考えたら、そんな必要はなかったので修正しました。

というわけで、バージョン1.10です。← 前の奴はバージョン1.00ということで……。
ttp://horizon.xxxxxxxx.jp/token/captcha2.html

No.507 拝見しました 管理人 2010/03/19

コード拝見しました。勉強になりました。ありがとうございます。
captchaの回答の隠蔽と再使用の禁止ですね。
新しいファイルをページビュー毎に生成するというのは、実用上はチョット使いにくいかな…(^^;

No.506 yoshi_yuu 2010/03/19

プログラムの流れは、
1、トークン(ファイル)の作成(乱数とハッシュで)
2、足し算の二つの数と答えを生産
3、答えをトークンに書き込む
4、captchaの足し算を出力し、hiddenかクッキーにトークンを書き込む
5、トークンと答えが送られてくる
6、トークンファイルを開き、答えを取得し正しいか調べる
7、合っていようが間違っていようがトークンを削除

こんな感じです。トークンファイルにはパーミッションなどでアクセスできないようにするのがいいと思います。
何かまずいことがありましたらご指摘ください。

No.505 yoshi_yuu 2010/03/19

ソース中のmainパッケージは使用例です。
多分こんなかんじで使えばいいと思うんですが……。

No.504 yoshi_yuu 2010/03/19

ふるい話ですが、Captchaを実装してみました。
いい案が思いつかなかったので、PHPのPEARのText_CAPTCHA_Numeral(ttp://pear.php.net/package/Text_CAPTCHA_Numeral/)を丸パクリしました。
ただ、Perlにはセッションがないので、それは前回作ったトークンで代用しました。

問題は、僕の作ったプログラムがCAPNのライブラリに依存してるので、サーバーでそのまま運用できるかは謎です。
↓にソースをアップしておきました。
ttp://horizon.xxxxxxxx.jp/token/captcha.html

No.503 yoshi_yuu 2010/03/17

Google Analyticsについては使った事がないのでよく分かりませんが、ぱっと見たところグラフとかがすごくきれいだと思いました。
あのグラフをPerlだけでカバーするのは少しきついんじゃないかと思います。
つまり、処理速度や負荷よりも、サーバー要件を満たせるかどうかが大きいのではないかと思います。

Google Analyticsはすごく綺麗でしたが、 管理人様がお造りになられたアクセス解析ソフトもいいと思います。
あれだけの機能を備えつつ、データベースに依存しないとか、
開発経緯や思想を詳しく公開しているというのが非常にいいと思います。


正規表現の処理速度や負荷について興味がおありでしたら、オライリーの「詳説 正規表現」という本がお勧めです。
(かなり高いし厚いし、外国人が書いた物なので、一度立ち読みするのをお勧めします。)

No.502 管理人 2010/03/16

こんにちは、管理人です。

taroさんの改良案、ありがとうございます。
その通りだと思います!
yoshi_yuuさんもありがとうございます。

ご指摘いただいたコードを書いたとき、
$ENV{'HTTP_HOST'} を知らなかったのかも知れません(^^;

No.501 taro 2010/03/15

すごいですね!僕は基本的にそういう関数の中身の仕組みまで把握してないのでとても勉強になります。
ところで、アクセス解析といいますと、Google Analyticsがかなりすごいと思うんですけど、もし普通にperlとかであれを作るとアクセスの少ないサイトでもかなりの負荷になると思うんですよ。(まして、アクセスの多いところなら・・・)どんな風に負荷を避けてるのか気になるところです。
(やっぱりすでにコンパイルとかされてるのかな?)

No.500 yoshi_yuu 2010/03/13

管理人でもないのに偉そうな事を言いますが、splitは実は演算子です。← どうでもいいですね、すみません。
しょうもないことは置いといて、split演算子は正規表現と同じ仕組みで対象を分割します。
つまり、split演算子にも正規表現と同じ速度がかかると見てもよいと思います。
(taroさんの例では、/というメタ文字でも何でもないものだけで分割されるようなので、正規表現検索といえど非常に高速なのは確かです)

確かに動作としては問題ないかと思いますが、上記のとおりsplit演算子は一応正規表現検索を行いますし、ターゲット文字列の最後まで検索を行うので、長くて/の多いリファラーには非常に負荷がかかります。
個数上限被演算子(splitのいわゆる第三引数)を指定するとかしないと不味い気がします。

No.499 どうも taro 2010/03/13

返答ありがとうございます。
たぶん正規表現使うのが普通だと思うんですけど、split関数を使って/で分割して、if( eq ) するのもありなのかなと思っていたりします。
(ttp: / / www.perl-labo.org / みたいに考えて)
正規表現は処理としては負荷がかかるみたいだし(個人用としては全然問題ないと思うけど)アクセス解析CGIは頻繁に働くので。

No.498 yoshi_yuu 2010/03/12

↓ 正規表現の閉じる/が無いですね……。
正しくは、
} elsif ($ref =~ /^https?:\/\/$host\//) {
ですね、すみません。

No.497 yoshi_yuu 2010/03/12

僕もtaroさんの改良案に賛成です。
リファラーは最初がhttp(s)://であって然るべきです。
そうでないものがまじり込む可能性は排除するべきだと思います。
(お気に入りの場合は多分リファラーが空なので、空の場合はお気に入りからというような解釈でいいかと。)

www.perl-labo.orgの部分は環境変数$ENV{'HTTP_HOST'}とかから生産すれば、より汎用的になるかと。

my $ref = $ENV{'HTTP_REFERER'};
my $host = $ENV{'HTTP_HOST'};

if ($ref eq "") {
# ブックマークとして処理
} elsif ($ref =~ /^https?:\/\/$host\/) {
# 普通にカウント処理
}

No.496 taro 2010/03/04

下の^が全角になってます。半角の^の間違いです。

No.495 改良案? taro 2010/03/04

ページビューカウンター 50.外部URLの削除のところの,?で判別するところを、ttp://www.perl-labo.org/がアドレスの最初にあることを確かめるように正規表現使えばいいと思います

$charactor = "abcdefghijklmnopqrstuvwxyz"; ← 検索対象の文字列をセット

if ( $charactor =~ /^abc/ ) { ← 文字列のマッチング
print "「abc」 から始まる文字列です。\n";
}

こんな感じに。

No.494 yoshi_yuu 2010/02/26

潜在的なバグというのは語弊があったかもしれません。失礼しました。
話はそれますが、GETを規制するのとしないのとでは差があります。
この掲示板の場合はヒューマンチェックをしていますが、もしその様な仕様がない場合、攻撃者は、
ttp://www.perl-labo.org/cgi/bbs/bbs.cgi?plabname=arashi&plabbody=hahahaha!
の様なリンクを適当な掲示板、ブログなどのコメント欄等に貼りまくります。
すると、それを見た"第三者"がリンクをクリックし、攻撃者の代わりに攻撃(いたずら投稿)を行ってくれる為、IPアドレス等でのブロックが困難となります。
(そこまでしていたずら投稿したい場面など、あり得ないかもしれませんし、

POSTであっても第三者に攻撃させる手段があるので、例としては不十分かもしれません)


今回の事は、残念ながら未熟な僕ではどちらが良いというのは決められませんでした。
管理人様の作るプログラムはどれも堅牢で、隙がなく、うまい例があげられません。

No.493 管理人 2010/02/23

GETを拒否しても、本質的にはいたずら対策になりません。
GETで攻撃はできるがPOSTで攻撃はできない程度のいたずらっ子対策になるだけです。

GETで書き込みができる掲示板、あるいはその他のCGIプログラムがあったとして、
それを"潜在的なバグ"というのは違うと思いますよ。

No.492 yoshi_yuu 2010/02/23

難しいですね。確かに分ける場面は急には出てこないです。
ですので、getformdata()の仕様変更は確かに必要ないかもしれないです。
強いて言えば、GETとPOSTに同じ名前のものがあれば、それが上書きされてしまうくらいです。
ただ、getformdata()にGETとPOSTを分ける仕様が付け加えられたものがあれば、この掲示板の様にリンクなどから投稿出来るという、潜在的なバグをなくせるのではないでしょうか。
つまり、いちいちプログラマーがGETを弾くとか、どっちでもいいとか、そういった事を考える必要が無いということです。

出すぎた事を言ってしまって申し訳ありません。
PHPを少し経験したせいか、経験的に危なく感じてしまいました。

No.491 管理人 2010/02/22

ご返信ありがとうございます。

if (GETなら) { エラー終了 } はした方がいいと思いますが、
GETとPOSTのデータを分けて取得したいというケースに出会ったことが無いので、
getformdata()の仕様を変えるべきという理由がよく分かりません。
未熟ですみません(^^;

No.490 yoshi_yuu 2010/02/20

確かに、この掲示板においてはそういう攻撃くらいしか考えられません。
しかし、このサイトを見てformdata()を使う人は結構いると思います。
formdata()をより汎用的にすることは、ここを訪れた人がみんなよくなると思いますよ。
そうなると、単純にGETを弾くというのでは、汎用性が落ちると思います。
GETとPOSTを両方さばける構造はそのままに、かつGETとPOSTを分けられたらいいかとおもいます。

No.489 管理人 2010/02/19

なるほど、GETで掲示板に書き込めてしまうと、いたずらされる可能性がでてきますね。
GETによる書き込みができないようにすると、予防ができますね。
勉強になります。

formdata()でmethodのチェックを行うべきかどうかというのは好みの問題ですが、
if (GETなら) { エラー終了 } という処理を別で行う方法もありますね。

GETで書き込めてしまうことで起こりうるトラブルを考えてみました。

 リンクをクリックするだけで掲示板に書き込みが行われるリンクをあちこちの掲示板等にばらまき、
 ターゲットの掲示板を無意味な書き込みだらけにする

この方法を使ったいたずらが以前mixiあたりであったような?
そんなことしてなにが楽しいのか。でも世の中いろんな人がいますからね。。。

他にGETで書き込めてしまうことによるトラブルって、どのようなケースがありますか?

No.488 yoshi_yuu 2010/02/18

formdata()などは、GETクエリ(GETで送られたデータ)とPOSTクエリ(POSTで送られたデータ)を同じ連想配列に入れるようですが、これはPOSTとGETを区別しないということですよね。
掲示板などの、本来POSTでの送信を期待している場面で、URLに追加するだけでリンクなどから投稿出来てしまうのは少し問題があると思います。
(もちろん、この掲示板の様にヒューマンチェックがあれば大丈夫ですが。)
PHP風ですが、$_GET{'name'} = 'value', $_POST{'name'} = 'value'などと、POSTとGETは分けて処理する方が良いのではないかと思います。

No.487 yuuki 2010/02/11

>>485
返答ありがとうございます。

問題点が解りました。
違う関数を作ってみます。

本当にありがとうございました。

No.486 管理人 2010/02/10

>>478 よっさんさん、ありがとうございます。
スクリプト言語 と インタープリタ言語、
もう一度言葉の定義を確認してみます。
ありがとうございました。
お礼が遅れまして申し訳ございません。

 

Plab BBS v1.02 © PERL-LABO