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のパスはちゃんと設定するのだ)
- 12行目 require ‘jcode.pl’; を use Jcode; へ
- 36行目 jcode::convert(\$in{message},’jis’); を
$message = Jcode::convert($message,’jis’); に変更 - 57行目 jcode::convert(\$in{value},’euc’); を
$value = Jcode::convert($value,’jis’); に変更
あとは、スクリプトと Jcode.pm をアップロードして、パーミッション設定したれば OK 。
UTF-8 にデフォルトで対応しているメースフォームスクリプトは数が少なく、あってもシェアウェアだったり、機能が多くてシンプルな用途には使えなかったりするので、この改造で使えるようになったのは本当に助かりました。
エントリのはじめにも書いたけど、もう一度ありがとうございましたっ!
コメント
FORM MAIL (ver 1.03) のutf-8エンコード
いろいろメールフォームCGIを探しまわっているときに、扱いやすそうなのを見つけた…
はじめまして。ユウことケムネット管理人です。
手探りながらスクリプトを作成しているのですが、色々な方が改良してくださって、感謝しております。
元々が、「コピーライトのないものを設置したい」という動機で、「それなら自作すればいいや」というものでしたので、配布目的ではなかったんですよ。
ですので、自分の環境に合わせて作成されているのです。
それでもご利用頂いている方が多いので嬉しい限りです。
utf-8のことは僕も今回勉強になりましたので、感謝しております。
作者降臨キタ━━━━━━(゚∀゚)━━━━━━!!!!(←
わたしはといえばプログラミングなんてさっぱり、既存のスクリプト改造は毛の生えた程度という、他人様のフンドシで相撲を取っているようなものなので、報告がてらの情報共有がせめてもの使命なのではと思います。
今回のエントリで得られたことが、さらなる力になることを祈りますです。
お世話になりましたサイト様。
☆プラグインをお借りしたサイト様。・sb開発研究所様http://serenebach.net/「記事評価プラグイン ver 0.03」・[あ]UnderDone(あんでるどん)様http://underdon…
どもっす。ケムネットの管理人ユウです。
踏み台になってしまったですか・・・非常に申し訳なかったです。
—
このメールフォームスクリプトには「設置サーバー以外からの呼び出しを禁止する」ルーチンがありません。
実は、うちに設置していたこのスクリプトが海外のSPAM配信の踏み台にされてしまったらしく、鯖に大変負担をかけてしまったようなので、今はスクリプトを取り外しています。
—
ちと改良しまして(遅すぎですが)設置サーバ以外じゃないのですが、リファラを抜いて設置URL以外からの呼び出しを禁止する処理を加えました。
>ユウさん
改良お疲れ様です。
もう1年くらい前の話ながら、くみ取っていただきありがとうございます。
踏み台になってしまった原因はわたしの方にもあるのですが(フォルダのパーミッション設定関係を突かれたものと思っています)、スクリプト側でも自衛できるに越したことはないですね。