掲示板 version 1.02
- 掲示板です。是非足跡を残していってください!
- 恐縮ですがタグは無効です。入力項目はいずれも省略可です。
- 荒らしはやめてください。IPアドレスを記録しています。…念のため (^^;
- 荒らし防止のため、"http://"を禁止キーワードにしています。
- 全角文字が含まれていない英数字のみの記事は投稿できません。
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‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB ƒuƒ‰ƒEƒU‚Ì–ß‚éƒ{ƒ^ƒ“‚Å–ß‚Á‚Ä‚ ‚¾‚³‚¢B Šm”F―p‚ÌŒvŽZ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB ƒuƒ‰ƒEƒU‚Ì–ß‚éƒ{ƒ^ƒ“‚Å–ß‚Á‚Ä‚ ‚¾‚³‚¢B 2010/07/10
Šm”F―p‚ÌŒvŽZ‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·BBB
ƒ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 よっさんさん、ありがとうございます。
スクリプト言語 と インタープリタ言語、
もう一度言葉の定義を確認してみます。
ありがとうございました。
お礼が遅れまして申し訳ございません。
No.485 管理人 2010/02/10
formdata() を呼ぶと、STDINがからっぽになりますので、
その後で rawformdata() を呼んでも値が返らない・・・
ということかも知れません?
No.484 フォームからのデータを受信する yuuki 2010/02/09
こんにちは。
いつもこのサイトを拝見させていただいてます。
このサイトのコンテンツを参考に、フォームからデータを受信する関数を作ったのですが、$ENV{'REQUEST_METHOD'} eq "POST"の時に作動しません。(rawformdataから値が返ってこない)
よろしければ、問題点と解決法を教えていただけないでしょうか。
sub formdata
{
my %f;
my @i;
my ($t, $n, $v, $r);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $r, $ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET") {
$r = $ENV{'QUERY_STRING'};
}
@i = split('&', $r);
foreach $t (@i) {
($n, $v) = split('=', $t);
$v =~ tr/+/ /;
$v =~ s/%0D%0A/\n/g;
$v =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$f{$n} = $v;
}
return %f;
}
sub rawformdata
{
my %f;
my @i;
my ($t, $n, $v, $r);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $r, $ENV{'CONTENT_LENGTH'});
} elsif ($ENV{'REQUEST_METHOD'} eq "GET") {
$r = $ENV{'QUERY_STRING'};
}
@i = split('&', $r);
foreach $t (@i) {
($n, $v) = split('=', $t);
$f{$n} = $v;
}
return %f;
}
No.483 テスト tyrant 2010/01/29
テスト
No.482 2010/01/29
テスト
No.481 :;l @l 2010/01/15
klj
No.480 :;l @l 2010/01/15
666p
No.479 :;l @l 2010/01/15
666p
No.478 違うよ よっさん 2009/12/29
スクリプト言語ってのは簡易プログラム言語のこと。
コンパイル無しで実行出来る言語は、インタープリタ言語。
混同しやすいが定義が違っています。
No.477 yoshi_yuu 2009/12/16
すみません。下の二つは僕のミスです。
フォームに飛ぶPOSTを傍受し改竄するソフトの操作ミスです。
本当に申し訳ないです。
No.476 管理人 2009/12/16
ユーザビリティはなにより大切ですよね。
目線の移動や全体のバランスなどいろいろ難しいですよね。
書き込んでくださったURL拝見しました。勉強になります。
ありがとうございました。
No.475 testは。。 管理人 2009/12/16
すみませんがテストはご遠慮くださいね。
文字化けしているし(^^;
No.474 test yoshi_yuu 2009/12/16
繝繧ケ繝医〒縺吶5his is test.
No.473 繝繧ケ繝 yoshi_yuu 2009/12/16
繝繧ケ繝
No.472 yoshi_yuu 2009/12/15
しょうもない事ですが、ヒューマンチェックのテキスト、
> (迷惑書き込み防止用です。足し算の答を入力してください。)
を入力フォームの前に持ってきた方がいいと思います。
ttp://cyberniko.jp/hal/web/form
を見かけて、少し気になったので投稿しました。
ほんとしょうもないことをいちいちウザいかもしれません。すみません。
No.471 yoshi_yuu 2009/12/15
ご返答ありがとうございます。
> HTMLを解析されることを前提にすると、
> 式部分を画像、それもプログラム的に読み取れない歪んだ画像=captchaにする必要があります。
まったくその通りです。僕の説明に語弊がありましたので、改めて訂正させていただきます。
僕が目指したのはNo.465で書き込んだような、
mode=write&hc_c=0&plabtitle=荒らしだぜ!&plabname=名無し&plabbody=コメント&hc=0
のように、hc_c(答え)とhc(ユーザー入力)にある一つの正解を入れる事で、何度も投稿できることを防ぎたかったのです。
この掲示板の現行仕様では、hc_cとhcに同じ値にすれば、何度でも投稿出来てしまうような仕様です。
これはhc_cに答えのハッシュ値を格納するという手を使っても、
ゴリ押しで(総当たりなど)で対応する組み合わせを求めてしまえば、
それをPOSTにひっつけるだけで投稿出来てしまう、というものを改善したかったのです。
くどいですが、つまり、答えをハッシュ化しても、
mode=write&hc_c=2cdcf45fa(答えのハッシュ値)&plabtitle=荒らしだぜ!&plabname=名無し&plabbody=コメント&hc=15(答え、ゴリ押しで求めた)
の様なhc_cとhcの組み合わせを何回も使える事に問題があると思ったので、トークンを使うという結論に至りました。
トークンを使えば、POSTは
mode=write&hc_c=2cdcf45fa(答えのハッシュ値)&plabtitle=荒らしだぜ!&plabname=名無し&plabbody=コメント&hc=1(答え、ゴリ押し中)&token=2f4e5fa8adf2515bc5fea
とすれば、足し算が違う時点でトークンは削除され、このPOSTは確率的には二度と使えないレベルだと思います。(Perlの乱数の精度によります)
新しいトークンを取得すると、hc_cは変動しますので、一桁+一桁でも最初の一回で成功する17分の一しかありません。
式部分を解析されれば終わりですが……。
コード読んでくださってありがとうございます。
正直、あの程度なら一つのサブルーチンでいけたかもしれないですが、
今後いろいろ機能追加する見込みがあったので、クラス化しました。
SHA256などのモジュールがサーバー上で動作するのか微妙なので、なんとも実用性のないコードになってしまいました。
とにかく、なるべく楽にcaptcha、もしくはそれに匹敵する様なものを探して、出来れば実装してみたいと思います。
長文失礼しました。
No.470 captcha 管理人 2009/12/14
お疲れ様です。
立派なコードですね!
私はSUPERなんてものは使ったことがありません。。。
さて、466でも書いたのですが、HTMLを解析されることを前提にすると、
式部分を画像、それもプログラム的に読み取れない歪んだ画像=captchaにする必要があります。
そうしないと、正しい答えを自動でPOSTできてしまうので、トークンとか管理しても意味が無いかと。。。
ですから、ここらで画像captchaの研究をされた方がいいのではないかと思います。
画像の生成はCPANモジュールに任せるとして、その周りの処理をどうするかですね。
ファイルの存在を利用するなら、"発行した問題"に対してファイルを作るよりも、
"使用済みの問題"に対してファイルを作っておいて、再利用を防ぐ方がいいかも知れません。
captchaを簡単に使えるライブラリを作られましたら、教えてください(^^
No.469 yoshi_yuu 2009/12/13
古い話ですが、やはりヒューマンチェックの精度をあげたいと思い、いろいろ考えてみました。
僕の目標は、
・HTMLを解析されてもOK!(答えのハッシュ値を扱う)
・正しい組み合わせを何回も使えない
例)答えのハッシュ値:2cdcf45fa86725 と 答え(入力されるべき値): 15 をPOSTにひっつけてもダメ
足し算は今の所一桁のようですが、この桁数は少しいじれば増やせると思うので、今のところ無視します。
ということで、以上を満たすようにするためには以下の結論に至りました。
1、ログを表示する時にランダムな値を生産します。(このランダムな値をトークンと呼びます)
2、そのトークン名でサーバー側にファイルを生産します。(このファイルをトークンファイルと呼びます)
3、トークンを掲示板書き込み時に要求します。
つまり、掲示板書き込み時には、トークン、答えのハッシュ値、ユーザーが入力した答え、が必要になります。
4、上記の三つがPOSTに乗って飛んできます。
5、そのトークンのトークンファイルがあるか確認、なければ、エラー終了。
6、足し算の答え合わせ、しくじれば、トークンファイルを削除してエラー終了。
7、トークンファイルがあり、かつ足し算の答えがあえば、書き込み処理を行い、最後にトークンファイルを削除して終了。
という感じでどうでしょうか。この方法だと掲示板のログだけ見ていく人がいると、それだけでファイルが生産されて、サーバーの容量を圧迫します。
なにかの仕組みで、時間のたったトークンファイルを削除する仕様をつけなければ実用出来ないかもしれません。
とりあえず、トークンの生産、チェック、削除は僕が実装してみたので、よろしければ見てやってください。
ttp://horizon.xxxxxxxx.jp/token/token.html
No.468 勉強につかわせてもらってます 定年おやじ 2009/12/12
こんばんは
HTMLはまえからそこそこつかえるし 今年の4月くらいからperlのお勧めの本と同じので 約6冊読み漁ってます。。。
コマンドプロントでならそこそこperl組めるようになったので 自作サーバーから趣味と実益かねてやりたいことはじめてます。
すごい参考にさせてもらってます
かじり始めの初心者ですが お礼です
No.467 yoshi_yuu (もと梅沢) 2009/12/09
なるほど。おっしゃるとおりです。僕の仕組みでは結局意味ないですね。
確かに厳密にしてゆけば結局captchaにするしかないのですね。
セッションを使ってみるとか色々考えて見ましたが、やっぱり実装が複雑になってしまいますね。
最低限の労力で済めばそれで充分ですね。
No.466 まさにその通りです。 管理人 2009/12/09
今回加えた足し算のヒューマンチェックは、
この掲示板のhtmlを解析してhc_cをPOSTする人はいないという前提で、強度はすごく弱いです。
htmlを解析されることを前提にした場合は、
htmlを解析されても答えが分からないように、足し算の式部分を画像にしなければなりません。
それは結局、画像captchaにするということですが、
画像captchaが面倒なので、足し算を採用したので、この問題はおいときましょう(^^;
書き込み可能なhcとhc_cの組み合わせを隠すということだと、
hc_cを暗号化するだけでは足りないです。
正しいhcとhc_cの組み合わせが1つあれば、それを使って何度でも自動書き込みできてしまいます。
ですから、time値を暗号化したものをhiddenで埋めておいて、
そのtime値を答えの暗号化のタネに使いつつ、
そのtime値からの経過時間をチェックするなどの必要があります。
あと、1桁同士の足し算は答えが17通りしかありませんので、
17回答えを変えてPOSTすれば書き込めてしまうので、
連続書き込みを検出して拒否するなども必要になります。
この点では、1桁同士の足し算はそもそもヒューマンチェックには向きませんね。
というわけで、真面目に作ると大変なのですが、
最近迷惑書き込みが頻繁にあったので、ヒューマンチェックとしては不充分ながら、
取り急ぎ追加した次第です。目をつぶってください(^^;
No.465 梅沢 2009/12/09
hiddenのhc_cというものに、足し算の答えが入ってるみたいですが、これは少しまずくないですか?
mode=write&hc_c=○○&plabtitle=タイトル&plabname=名前&plabbody=書き込み本文&hc=****
このようなPOSTが飛ぶと思います、そして、多分チェックは、
if (○○ != ****) {
die "計算違うよ!!";
}
こんな感じかと思いますが、これだと、
mode=write&hc_c=0&plabtitle=タイトル&plabname=名前&plabbody=書き込み&hc=0
などとしたPOSTでもOKです。なので、hc_cには答えのハッシュ値を放り込んでおき、入力をハッシュ化して比較しないと不味いです。
長文失礼しました。
No.464 梅沢 2009/12/09
test
No.463 梅沢 2009/12/09
ご苦労さまです。効果があればそれに越したことはないですが、
効果がなかったとしても、失礼ながら、それでもいいと思います。
ところで、このような迷惑書き込みのソフトもPerlが使われているんでしょうか?
No.462 動いているみたい。 管理人 2009/12/03
足し算でヒューマンチェックするのは簡単にできました。
とりあえずこれで迷惑書き込みが減るといいのですが。
アダルトの宣伝書き込みがされている掲示板なんてみっともないですから(^^;
No.461 テストです 管理人 2009/12/03
ヒューマンチェック足し算を追加してみました。
No.460 変わった性癖集合!! なまら 2009/12/02
俺の性癖が金になるなんて考えてもみなかったなw
だってチンコ見せるだけで金が貰えるんだぜwwww
こんな見せたがりでも世の中の役には立つって事だなw
今やこの性癖のおかげで月100万稼がして貰ってますわwww
No.459 変わった性癖集合!! なまら 2009/12/02
俺の性癖が金になるなんて考えてもみなかったなw
だってチンコ見せるだけで金が貰えるんだぜwwww
こんな見せたがりでも世の中の役には立つって事だなw
今やこの性癖のおかげで月100万稼がして貰ってますわwww
ttp://prf.bnpnstore.com/fu2-67c/
No.458 梅沢 2009/11/24
返答ありがとうございます。
captchaは僕自身触れたことはないんですが、PerlはCPANがとても充実していると思います。
一から十まですべて作るというのも勉強としては非常に重要とは思いますが、
先人が作ってくださったものを使ってみるというのも、一考ではではないでしょうか。
No.457 管理人 2009/11/24
スパム対策は重要ですよね。
画像のcaptchaは大変そうですが、
1+2=□ みたいな簡単なヒューマンチェックでも効果ありそうですね。
No.456 スパム 梅沢 2009/11/22
スパムなのか、ひどい書き込みですね。
この機会に、Perlでcaptchaの実装について触れるというのはいかがですか?
No.455 セフレ確定♪ 裕次郎 2009/11/21
まんちょのにおいって本当に一人一人違うんだなww
すっぱいのやらしょっぱいのやら色々経験してきましたわw
でも昨日の女は神だった!!まんちょの温もり!締まり具合!
そしてにおいから味まで最高すぎ!!
マジ気持ち良過ぎて3分持たなかったわwww
No.454 セフレ確定♪ 裕次郎 2009/11/21
まんちょのにおいって本当に一人一人違うんだなww
すっぱいのやらしょっぱいのやら色々経験してきましたわw
でも昨日の女は神だった!!まんちょの温もり!締まり具合!
そしてにおいから味まで最高すぎ!!
tp://zip.koreikura.net/5mjpvzx/.htm
マジ気持ち良過ぎて3分持たなかったわwww
No.453 ママ〜!あの人何してるの? 児島 2009/11/16
こないだ露出癖のある女に当たってさ
いきなり昼間の公園で脱ぎ出してエライ目にあいましたわw
ばれないように茂み押し込んで乗り切ったものの次は声がでかいのよ!!!
あん時は本当どうしようかと思ったわw
でもデート代、報酬10万、二回中出しとかなりウマーでしょwww
No.452 ママ〜!あの人何してるの? 児島 2009/11/16
tp://zoo.donune.net/nlzckq-.html
こないだ露出癖のある女に当たってさ
いきなり昼間の公園で脱ぎ出してエライ目にあいましたわw
ばれないように茂み押し込んで乗り切ったものの次は声がでかいのよ!!!
あん時は本当どうしようかと思ったわw
でもデート代、報酬10万、二回中出しとかなりウマーでしょwww
No.451 困るなあ・・・ 管理人 2009/11/07
この掲示板、荒らし対策がなってないというか、ナント、削除機能がありません
削除機能が無い掲示板なんて、あり得ないですよね・・・(^^;
とりあえず、ホスト晒しておきますね
No.449&450
2009/11/7 19:51:01 NWTfb-20p1-122.ppp11.odn.ad.jp
No.450 看護婦さんって大変だな なおひと 2009/11/07
昨日も夜の11時に呼び出しくらっちゃった!!!
家に着くなり脱がされて、そのまま玄関で挿入ってどんだけ溜まってんのw
それから二連戦で結局寝たのが2時だしな!!!
報酬貰ったから文句言わないけど、毎日続いたらさすがにきついなww
No.449 看護婦さんって大変だな なおひと 2009/11/07
昨日も夜の11時に呼び出しくらっちゃった!!!
家に着くなり脱がされて、そのまま玄関で挿入ってどんだけ溜まってんのw
それから二連戦で結局寝たのが2時だしな!!!
tp://ton.thebigmonitor.net/k08f1qg.php
報酬貰ったから文句言わないけど、毎日続いたらさすがにきついなww
No.448 管理人 2009/09/25
個別の質問には回答をしていませんので、
質問がありましたら、掲示板でどうぞ。
No.447 頭が下がります ナカムラ 2009/09/24
サイトの立ち上げの経緯を拝見し、頭が下がりました。
記録を残すというのは、大変な忍耐と熱意が必要だと思います。
それに加えて、やはり何と言っても実力がなければ到底できないことです。
私もperlをかじりはじめて3W目です。よろしくお願いします。
「このページは役に立ちましたか?」のcgiで質問しました。よろしければ
ご確認ください。