• 締切済み

perl初心者 「掲示板作成」

はじめまして、最近perlを勉強するために、買った本を参考に掲示板を作成しています。 2つほど質問したいことがあります。 ***質問*** 1:作成した掲示板で、記事を投稿し、その直後に掲示板をリロードすると、先ほど投稿した記事が再びデータファイルに書き込まれてしまいます。 これを防ぐ方法はあるでしょうか。 2:さまざまなスクリプト内でよく見かける『ENV』や『STDIN』は一般的にどのようなときに使うネーミング(?)なのでしょうか?? ******** 質問が分かりにくかったら申し訳ありません。 ソースが必要でしたらアップします。 どうぞよろしくお願いします。

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

1.GETでは無くPOSTを使うとある程度防げます。  リロードボタンを付けるのも手です。  HTTPヘッダのlocationで、URLを一度クリアしてしまう方法もあります。(http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html) 2.お約束みたいなものです。cgiを処理するのに必要な情報が入っています。 $ENVにはcgiがプログラムに受け渡す環境変数の値が入っています。 たとえば、FORMがGETで送られたのかPOSTで送られたのかを判別するには環境変数のREQUEST_METHODを参照します。 FORMでPOSTを使った場合はSTDIN(標準入力)として、データが受け渡されます(データの長さは環境変数のCONTENT_LENGTHを見れば解ります。GETを使った場合は、環境変数のQUERY_STRINGの中に格納されます。 また、アクセスしてきたブラウザの種類などを知るのにも使われます。なおcgiの出力はSTDOUT(標準出力)として出力します。通常のprint文の使い方で出力できるので、細かいことを意識しないで済みます。 例: $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; }

参考URL:
http://hoohoo.ncsa.uiuc.edu/cgi/env.html
kei_von
質問者

お礼

ありがとうございます。 質問1はスクリプト外で対処をするという理解でいいのでしょうか。 メソッドはPOSTなのでリロードボタンを作ったり、http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.htmlを参考してみたいと思います。 質問2のご回答ありがとうございます。むずかしくてちょっと目が点になってしまいました。環境変数を使ったスクリプトを作ったことがないのですが、一応理解できました。 ありがとうございました。

関連するQ&A

  • perl初心者です。

    はじめまして、Perl初心者です。 以前からある、Perlのソースをコピペして新しいフォルダを作成したのですが、(以前のディレクトリーと同じ場所) リンクを貼っても表示されません! 一つのページには掲示板を2つ以上貼ることは不可能なのでしょうか? コピペする前のソースは正常に動作します。 アドバイスを宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perl 掲示板 初心者

    初の投稿で大雑把な質問失礼致します。 (1)目的・・・ホームページに掲示板を設置したい (2)言語・・・Perl (3)文字コード・・・UTF8(Encode) Perlでメールフォームは作ることはできました。 メールに関しては、ネットサーフィンでなんとか完成したのですが、 掲示板は、たくさんでてくるも、どれもうまいこと動作しません・・・ http://webings.net/perl/boardimg1/ ここのサイトのようにしたいのですが、 コピペで貼付けし、サーバーに送り実行すると 書込ファイルが開きませんと表示されます まずファイルの読込から躓いていて、先に進みません・・・ サーバー側に index.html----cgi----bbs.pl----dat----boardimg-----jpg,png,gif等 |-----boardimg.dat このようなフォルダ構造ではないのでしょうか? パーミッションは bbs.pl→777 boardimg.dat→666 そこで、教えて頂きたいのが (1)このサイトで、どう改善すればいいのか・・(すごく大雑把申し訳ないです) (2)初心者でもわかるようなサイト (3)掲示板の仕組み(ファイルの読込、書込について) また、このサイトの掲示板では、Perl内でHTMLが記述されてますが、 ホームページのformからCGI.pmでデータの受け渡し にするほうがいいのでしょうか?

  • PHPで掲示板作成

    こんにちわ。今、PHPで掲示板を作成しています。大体の基本の骨組み はできたのですが、機能でつまづいています。 ・投稿者の投稿を削除、修正ができる。 ・管理者がログインでき、すべての投稿記事を修正、削除できる。 ・1ページにつきに投稿を10件づつ表示。 とりあえず、上記の三項目を実現させたいのですが、解説ホームページ等をみてもうまく自分のスクリプトに組み込めなく困っています。 作成途中のスクリプトを載せたかったのですが、文字制限であきらめました。代表的、比較的というか簡素なものでもいいので、何か例を 記述していただけないでしょうか?

    • ベストアンサー
    • PHP
  • perlについての話題が充実している掲示板を教えてください

    仕事でperlを使って書かれたソースをカスタマイズすることになったのですが、 (オリジナルのソースには仕様書など一切なし。作成者の了解を得て フリーウェアをカスタマイズ) ソースコードがあまりに複雑で、困っています。 調べても良く分からないところはどんどん質問したいのですが、 メーリングリストは手間がかかるしセキュリティの問題もあるので、 良い掲示板を探しています。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlで%ENVを使いCGI

    perlで%ENVを使って環境変数を使いPerlスクリプトを作りwebページで表示したいと考えています。 このようなことをしたい場合はどのような手順でスクリプトを書けばよいのでしょうか? かなりアバウトな質問ですがよろしくお願いします。

    • ベストアンサー
    • Perl
  • 掲示板を作りました。

    いつもお世話になっております。 現在、cgiとperlの勉強を兼ねて掲示板を作成しております。 ある程度の形は完成したのですが、一つ問題があります。 それは、他の人の書き込みを表示するために、更新しますよね?? ブラウザの更新ボタンをクリックすると、同じ記事がもう一度出てきてしまいます。 単純にリロードして、同じ記事が何度も掲載されるのを防ぎたいのですが・・・。どのような方法があるのでしょうか?? 現在勉強している本にはそこらへんが全く触れておりませんでして・・・。 ご存知の方、いらっしゃいましたら、教えて下さい。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • 管理人のみ閲覧可能な掲示板

    初めて投稿させて頂きます☆ 現在、ホームページを作成中なのですが、 こちら↓のような掲示板のCGIスクリプトを探しています。 http://moko.chu.jp/bbs/apeboard_plus.cgi 記事は一覧表示されて、管理人のみ記事を読むことのできる掲示板です。 CGIを設置できるサーバーなので、レンタルBBSなどではなくて、CGIスクリプトを希望です。 検索サイトで「掲示板 CGI」などを検索しましたが、 見つける事ができませんでした。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • CGI
  • 掲示板のシステムについて

    Perlを勉強する為にゼロから掲示板を作っています。 投稿記事を入力してログに保存→表示 投稿記事の削除などのところまで出来ました。 しかしそれは全て親記事の場合のみです。 普通の掲示板では親記事に対してレスできますよね? レスできるようにしたいのですが、どのように親記事とレスを結び付けていいのか全く思い浮かばないのです。 通常レスできるようにするには、どのような流れになっているのかな?

    • ベストアンサー
    • Perl
  • Perl掲示板での半角英数字自動改行

    初めて投稿させて頂きます。 Perlハンドブックを買って、ネットでも調べてみたのですがわからなかったので質問させて頂きます。 掲示板などで半角英数字(長文)の投稿があった場合 全角英数字に変換する。 という記述はあったのですが、半角英数字のまま表示し、 適当な場所で改行する。というのが見つかりません… 適当な場所というのは、掲示板の記事表示部分のテーブルの端に来ると改行という感じです。 自分でもまだ検索等してみますが、どうぞ宜しくお願いします

    • ベストアンサー
    • Perl
  • perlスクリプト

    perlの勉強をしているものです。人様の作ったスクリプトを解析しています。以下のスクリプトについて質問があります。 while(chomp($in = <STDIN>)){ last if ($in eq "\cD"); print "$in"; } このスクリプトに出てきている、"\cD"の意味と、ifの前に出てきているlastの働きが分かりません。またこのスクリプトは全体としてどのような仕事をするのでしょうか?? 分かる方いらっしゃいましたら、ご教授いただけると幸いです。よろしくお願いします。

専門家に質問してみよう