【追記アリ】Serene Bach UTF-8版にメールフォームを設置する

この記事は約4分で読めます。

UTF-8 版 Serene Bachである拙宅に、メールフォームが設置されました。
そして、このエントリはそのためのノウハウをしたためてありますのだ。
CGIスクリプトの改造に触れてるので、自己責任において活用してくださいなのだ。
具体的な方法は続きに書いてあるのだ。

追記 08/11/24
メールフォームスクリプトの修正更新がありました。作者さんサイトで入手できます。

追記 08/02/09
宵闇書房さんが移転してたのでリンク先を修正。

追記:重要 06/12/30
このメールフォームスクリプトには「設置サーバー以外からの呼び出しを禁止する」ルーチンがありません。
実は、うちに設置していたこのスクリプトが海外のSPAM配信の踏み台にされてしまったらしく、鯖に大変負担をかけてしまったようなので、今はスクリプトを取り外しています。
(SBで新たにディレクトリを作る・または編集できるようなディレクトリを作ろうとするとパーミッションがアレになる関係もあるんでしょう)

今回取り上げたスクリプト元のhttp://kemu.net/さんと、宵闇書房さんと、突然の相談と依頼にも快諾してくれた read a littleのTYLIGHT さんに、この場を借りて御礼申し上げます。

サイトを見た人がメールを送られるようにしたい。
しかし、今のご時世、メールアドレスをさらけ出すのはリスクが大きすぎる。
……となると、選択肢はメールフォーム、と相場は決まっておるのであります。
しかしながら、せっかくデザインをまとめているのに、メールフォームのページだけデザインが違うのではやっぱりかっこ悪い。

そこで。

sbにメールフォームを設置する@宵闇書房のエントリを参考に、kemu.net さんからスクリプトをお借りし、送信成功・失敗ページを作り、フォーム送信エントリを作り(テンプレートに組み込むのではなく、専用ページにしたかったのでエントリを作ったのだ)さて送信……と思ったら、フォームで名前に設定していたところに日本語を入力すると文字化け。本文はメーラーのエンコードを変えることで読めたけど、名前の部分はどうしても読めない。

これはあれか? うちの SB UTF-8 版だからか?……と思い当たる言葉をぐぐるさんして、スクリプトとにらめっこしてみたけど、門外漢には呪文に見える文字の羅列。基本的に何をどう弄っていいか分からないし、見覚えのある文字を弄ってみてもやっぱりダメ。とうとう、わたしの知る中でこういうのに造詣の深い Arrange Stream の中の人、とわたんこと TYLIGHT氏に相談を持ちかけたのだ。
(注:Arrange Stream は read a little 内の独立コンテンツ)


以下、宵闇書房さんとこにある手順のうち、メールフォームのスクリプト設置以外はできているモノとして、話を進めます。

必要なモノ

重要なのは Jcode.pm。詳しい説明はリンク先にゆずるとして……
ページ内「Jcode.pm」の項目にファイルへのリンクがあるので、そこから入手するのが手っ取り早いのだ。

CGI改造手順(あ、perlのパスはちゃんと設定するのだ)

  1. 12行目 require ‘jcode.pl’; を use Jcode;
  2. 36行目 jcode::convert(\$in{message},’jis’); を
    $message = Jcode::convert($message,’jis’); に変更
  3. 57行目 jcode::convert(\$in{value},’euc’); を
    $value = Jcode::convert($value,’jis’); に変更

あとは、スクリプトと Jcode.pm をアップロードして、パーミッション設定したれば OK 。

UTF-8 にデフォルトで対応しているメースフォームスクリプトは数が少なく、あってもシェアウェアだったり、機能が多くてシンプルな用途には使えなかったりするので、この改造で使えるようになったのは本当に助かりました。
エントリのはじめにも書いたけど、もう一度ありがとうございましたっ!

コメント

  1. FORM MAIL (ver 1.03) のutf-8エンコード

    いろいろメールフォームCGIを探しまわっているときに、扱いやすそうなのを見つけた…

  2. ユウ より:

    はじめまして。ユウことケムネット管理人です。
    手探りながらスクリプトを作成しているのですが、色々な方が改良してくださって、感謝しております。

    元々が、「コピーライトのないものを設置したい」という動機で、「それなら自作すればいいや」というものでしたので、配布目的ではなかったんですよ。
    ですので、自分の環境に合わせて作成されているのです。

    それでもご利用頂いている方が多いので嬉しい限りです。

    utf-8のことは僕も今回勉強になりましたので、感謝しております。

  3. Dynastess より:

    作者降臨キタ━━━━━━(゚∀゚)━━━━━━!!!!(←

    わたしはといえばプログラミングなんてさっぱり、既存のスクリプト改造は毛の生えた程度という、他人様のフンドシで相撲を取っているようなものなので、報告がてらの情報共有がせめてもの使命なのではと思います。

    今回のエントリで得られたことが、さらなる力になることを祈りますです。

  4. お世話になりましたサイト様。

    ☆プラグインをお借りしたサイト様。・sb開発研究所様http://serenebach.net/「記事評価プラグイン ver 0.03」・[あ]UnderDone(あんでるどん)様http://underdon…

  5. ユウ より:

    どもっす。ケムネットの管理人ユウです。

    踏み台になってしまったですか・・・非常に申し訳なかったです。


    このメールフォームスクリプトには「設置サーバー以外からの呼び出しを禁止する」ルーチンがありません。
    実は、うちに設置していたこのスクリプトが海外のSPAM配信の踏み台にされてしまったらしく、鯖に大変負担をかけてしまったようなので、今はスクリプトを取り外しています。

    ちと改良しまして(遅すぎですが)設置サーバ以外じゃないのですが、リファラを抜いて設置URL以外からの呼び出しを禁止する処理を加えました。

  6. Dynastess より:

    >ユウさん
    改良お疲れ様です。
    もう1年くらい前の話ながら、くみ取っていただきありがとうございます。

    踏み台になってしまった原因はわたしの方にもあるのですが(フォルダのパーミッション設定関係を突かれたものと思っています)、スクリプト側でも自衛できるに越したことはないですね。