サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
www.perl-labo.org
研究内容 フォームから受け取ったデータをメールで送信するやり方を研究しましょう。 結果 受け取るデータは まず、フォームで入力してもらうものについて考えてみます。 メールを送信するのに必要なデータとして考えると、 送信先メールアドレス、送信元メールアドレス、件名、本文、とりあえずこの4つですが、 でも、メールフォームって基本的に送信先は決まってますよね。 もし送信先を自由に設定できるメール送信CGIプログラムなんかをウェブで公開していたら、 いたずらメールを送られちゃいます。ですから、メール送信CGIプログラムは送信先は固定。 これが基本ですね。 ということで、送信先はCGIプログラムの中で設定するようにして、 変えられないようにします。 ということで、今回メールの送信を研究するにあたって、入力データは 「送信元メールアドレス」「件名」「本文」の3つにしましょう。 いずれも、省略可とします
研究内容 メールにはファイルを添付することができます。 Perlとsendmailを使ってファイルを添付する方法を研究しましょう。 詳細 メールにファイルを添付する方法 sendmailを使用してPerlからメールを送信するには、 メールヘッダを含むデータをsendmailに渡してあげるんでした。 残念ながら、ファイル名を指定するだけでそのファイルが添付されるような 便利な機能はないようで、 メールデータの中に自力でファイルが添付されていることを示すヘッダや 添付するファイルデータなどを加える必要があるようです。 ファイルを添付したときの、ヘッダなどを含むメールの内容は次のようになります。 Content-Type: Multipart/Mixed; boundary="(バウンダリー文字列)" Content-Transfer-Encoding:Base64 From: 送信元 To:
研究内容 リンクタグに、自動的にonclickを追加しちゃう研究です。 詳細 したいこと リンククリックをカウントするには、次のようにリンクタグに onclick を追加する必要がありました。 全てのリンクタグにこれを追加するというのは、大変な作業です。 これを、自動化しちゃうことはできないでしょうか? できます! 答えは、自動化できます。自分でonclickを追加しなくても、 JavaScriptによって、onclickを自動的に追加することができるのです。 ぶっちゃけ、答えは次のようなJavaScriptです。 <script type="text/javascript"> var all = document.all; var n = all.length; for (i = 0; i < n; ++i) { var el = all(i); var tag = el.tagName
研究内容 当サイトでは、多くのサイトがそうであるように、 リンク集ページを用意して、いくつかのサイトさんにリンクさせてもらっています。 さて、このリンク集によって、自分のサイトからリンク先のサイトへ、どれくらいの人が訪問しているのか 調べてみましょう! 詳細 来たカウントはできるけど… 「どのサイトから、どれだけの人が自分のサイトに来てくれたか」は、 既に研究したリファラーカウンターによって知ることができます。 このサイトからはたくさんの人が来てくれているなぁ、とか、このサイトからは 全然人が来てくれないなぁ、といったことが分かってしまいます。 この「来てくれた数」は、多くのサイト管理者が興味をもって、実際に解析をしていると思います。 では、逆の、「自分のサイトから、どのサイトに、どれくらいの人が行っているか」というのは、 知ることができるでしょうか? どのサイトにどれくらいの人が行ってい
研究内容 文字コードをJISに変換し、メールヘッダ内の日本語をBASE64エンコードする研究です。モジュールを使います。 詳細 メールの決まりごと 前回作ったのは、メール件名も本文も日本語文字コードについて考慮することなく そのままのコードで送信するというものでした。CGIプログラムとウェブページを 共にS-JISで作成していますので、文字は全てS-JISで送信されていることに なります。しかしメールの文字コードには決まりごとがあって、 メールヘッダ内の日本語はJISの文字列をBASE64にエンコードしたもの、 本文はJIS、となっているらしいです。 これらの決まりは MIME というそうです。Multipurpose Internet Mail Extensions の略だそうです。 RFC1341、RFC1342で定められ、最新版はRFC2045とRFC2046とのこと。ただ原文は英語
研究内容 検索エンジンからの訪問者様がどのような検索キーワードでサイトに来られたのか調査する研究です。 詳細 検索エンジンからの訪問…気になりますよね 前回、リファラーを調査するCGIプログラムを作りました。 訪問者様がどこのリンクをたどってやってきてくれたのかを調べるCGIプログラムですが、 そのCGIプログラムを設置してみて、気がついたことがあります。 それは、検索エンジンからの訪問者様がおられるっていうことです。 googleとか、yahooなどの検索エンジンがアクセス元になっているので分かります。 そうすると、ちょっと気になります…どんなキーワードでこのサイトがヒットしたのでしょう。 訪問者さんはどんな情報を知りたくてこのサイトに訪問したのかな、 知りたい情報はあったのかな…と、妙に気になってしまいます。 知りたい情報があったかどうかは、各ページに設置したページアンケートに 答えて
研究内容 デバッグ(エラーを直すこと)をするときにとても重要なことを学びます。 詳細 プログラムにはエラーがつきものです CGIプログラムを作り始めて、とりあえずとても簡単なCGIプログラムを動かすことができて、 さぁこれから!という感じですね。でも、ここからが大変です。 というのは、いつもすんなりCGIプログラムが動いてくれるとは限らないです。 プログラムにはエラーがつきもの。 それも、ちょっとしたタイプミスによるエラーとか、よく起きます。 悲しいことに、1文字打ち間違えただけでも、動きません。 そこで、エラーの直し方の基礎知識を学んでおきましょう。 エラーが起きたときのメッセージ 一番多いエラーはやっぱり入力ミスによるエラーだと思います。 そこで、実際に、入力ミスしてるCGIプログラムを実行して、 どうなるか試してみましょう! 次のプログラムを実行してみます。 #!/usr/bin/p
研究内容 ブラウザから送られてくる文字の一部はエンコードされています。これをデコードして 元の文字に戻す研究です。 詳細 なんで %~ に変えて送ってくるの HTMLのフォームから送られたデータは、半角文字の一部(& とか / など)、 それに日本語などの全角文字は %~ というなんだか わからん文字に変換されてCGIプログラムに送られてきますよね。 これは、全角文字に含まれている & や = などと、 変数の区切りの & や変数と値を結ぶ = とを区別するためなのかなと思います。 エンコードって? あるデータを一定のルールに従って別のデータに変換することをエンコードといいます。 ブラウザが文字を %~ に変えるのが、エンコードですね。 デコードって? エンコードされたデータを元のデータに戻すことをデコードっていいます。 変換のルール まず、スペースが + になります。これはなんだか分かり
研究内容 ブラウザからGETメソッドで送信されたデータをCGIプログラム側で受け取る仕組みを研究します。 詳細 やりとりがしたい CGIプログラムの面白いところは、ホームページに来てくれた訪問者様と なにかやり取りというか、インタラクティブなことができるということだと思います。 アクセスカウンターやアクセス解析のような、訪問者様と特に無関係に動作する CGIプログラムもいろいろ便利ですが、やっぱり掲示板のような、訪問者様が参加できるような ものが作れるというのが楽しいです。 実際、メールフォームとかアンケートとか、なにか訪問者様から情報をもらって、 その情報を処理するCGIプログラムというのはとても沢山あります。 ここから、そういうCGIプログラムを作る基礎として、訪問者様から情報を受け取る CGIプログラムというものを 研究したいと思います。 ブラウザ側の話 情報を受け取るには、情報を送
研究内容 メールを送信する関数をライブラリにしておきます。 詳細 メールを送る処理というのはこれからも何度もでてくる可能性がありますから、 使いやすい形で関数、ライブラリにしておこうと思います。 結果 引数は 関数の引数は、差出人名、差出人メールアドレス、 送信先名、送信先メールアドレス、件名、本文の6つです。 いずれも、省略可とします。 その他にもいくつかの情報を送信しましょう 本文の後ろに、 送信した時刻や、 アクセス解析のところで研究した、訪問者のホスト名などを 自動的に追加するようにします。 これは、イタズラなどが連続して起きたようなときに、 特定のホスト名の訪問者の送信を禁止するなどの処理ができるかな、 と思うからです。 作成したCGIプログラム #!/usr/bin/perl require 'getformdata.pl'; require 'sendmail.pl'; %f
2022年9月15日、当サイトのサーバーの仕様変更により、 当サイトのCGIプログラムがそのままでは動作しない状態になってしまいました。 修正すれば動くのですが、当サイトは2004年オープンの古いサイトで、 サイト内の情報がほぼ当時の古いままであったこともあり、 この機会に、CGIプログラムを修正するのではなく、 サイトを閉鎖する道を選択することにいたしました。 これまで当サイトをご訪問してくださったすべての皆様、 特に当サイト掲示板に書き込みを残してくださった皆様、ありがとうございました。 皆様のPerlライフが今後も豊かでありますように^^
特にファイルへの上書き書き込みの時には絶対にロック処理が必要です。 上書き書き込みをするときっていうのは、 いったんファイルが空っぽになるみたいです。 なので、書き込み中に他のプログラムがそのファイルを読み込むと、 全部書き込まれていない状態でファイルを読んでしまいます。 上に書いたような状況です。こうなったら、確実にデータは壊れます。 書き込み開始から、書き込み終了まで、他のプログラムには ファイルにアクセスさせない!ロックする!これ、重要です。 その方法を研究しないといけません。 ファイルのロックってどうやるの? ファイルのロックにはいろいろなやり方があるようなのです。 それぞれのやり方にはメリット、デメリットがありますが、 その全部を勉強する必要はないですよね。 最も汎用性があるという、mkdir を使ったロック処理を勉強します。 ファイルのロック処理はこれからも何度も使うものですか
このページを最初にブックマークしてみませんか?
『Perl/CGI研究室 'PERL-LABO'』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く