アウルネット

PHP工房「カレンダー予約フォーム01」多国語言語対応への道

昨年、貸別荘「すずめのおやど」のメールフォームを検討していた時、PHP工房のカレンダー予約フォームを知った。でも既に稼働していたメールフォームがあったので、採用を見合わせた。
それが年末の整理のとき、パソコンの中に残っていたファイルを見て、一度、本格的に検討して見ようと思った。どうせ、やるなら多国語言語が良いと思ってトライしたのはいいが、PHP初心者にとって、その道のりは険しいものであった。
何とか形にはなったが、この先、忘れてしまいそう。そこで、その手順をもう一度、おさらいし、まとめてみた。(2016/1/5)

先ず日本語で使えるようにする

では、どんなカレンダー予約フォームなのか、PHP工房のサンプルで見て見よう。この基本形を中国語やハングル等が使えるutf-8対応とするのがこのページの目的である。
手順:
(1)カレンダー予約フォーム01のダウンロード。カレンダー予約フォーム01の運用方法はインラインフレームではなくページ埋め込み型とする。
(2)カレンダー予約フォーム01のファイル一式をFFFTPでサーバーにアップロードしたら、PHP工房のページをみて、パーミッション設定。このあと管理画面にログイン。
(3)「補足、コメントなど」欄に「○×△(料金)」の形で1か月分入力し、「登録」をクリック。 (4)コメントデータを保存するファイル名はcomment_set.datと言う事なので、FFFTPでダウンロード。
(5)するとデータ形式は

2016-01-01,× (6.5)
2016-01-02,× (6.5)
2016-01-03,○ (6.5)

と言う形であることが分かった。これを1年分、手作業でやるのは大変なので、実際はエクセルのマクロを利用して1年分一気に作ることとした。
(6)本文(main部)が空白になっているページ(レイアウト済み)を用意し、calformchn.phpで保存。
(7)pc.phpをエディタで開き、ヘッダー部の<!-- ▼▼▼既存のページ等に表示させる場合以下の

<link href="calendar_form/style.css" rel="stylesheet" 
type="text/css" />

をcalformchn.phpの<head>~</head>間に入れる。パスは環境に合わせて変更する。
(8)pc.phpの「<!-- ▼▼▼既存のページ等に表示させるにはここからコピペ下さい▼▼▼ --> …… から、ここまで」をcalformchn.phpで、<body>のmain部にコピペする。
(9)<formで

<form action="calendar_form/mail/mail.php" 
method="post">

action=" "の所を環境に合わせてパスを通す。
(10)calformchn.phpを保存したらブラウザで、動作確認(ローカルだとXAMPP)
(11)表示された画面で「予約する」をクリック
(12)サンプルの予約画面がでたが、サイズが大きく、本文からはみ出している。これはあとで直す。 (13)空データのまま確認をクリック
(14)「入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。【お名前】は必須入力項目です。【メールアドレス】は必須入力項目です。」がでた。動作関係は問題ない。
(15)但し、calformchn.phpと同じデザインでは無く、mail.phpのオリジナルデザインで出るので、mailフォルダ内のmail.phpの中身をそっくり、新規ページ内にコピペ。
(16)このファイルをmailフォルダ内のmail.phpに上書き保存。このとき、新たなmail.phpのスタイルシートのパスを確認。ここではサイトルート相対パスにしたから、保存フォルダが変わっても問題ない。
(17)ここでcalformchn.phpが本文からはみ出していたのを修正するため、calendar_form/style.cssを開く。
(18)次のようにフォーム幅を変更。

#formWrap {
	width:650px;→width:90%;

(19)送信設定のため、config.phpを開いて、管理者メールアドレスに入力する。また、$site_top = "http://www.php-factory.net/";の部分を書き換える。(サイトルート相対パスもOK)
(20)mail.phpを開いて、自動返信メール設定で$remail = 1;にし、送信者にも確認メールが行くようにした。
(21)新しく埋め込み型にしたmail.phpをサーバーにアップロード。
(22)フォームの「お問い合わせの内容」欄に中国語で記入して送信。
(23)「送信ありがとうございました。送信は正常に完了しました。トップページへ戻る»- Powered by PHP工房 -」
(24)メールが2通来ている事と中国語が文字化けしている事を確認。

ここからはメールをutf-8対応にする手順

(25)PHP工房にアクセスし、「多機能メールフォーム多言語対応版」をダウンロード。
(26)解凍したら、mail.phpをエディターで開く。
(27)前と同様にここでも、「管理者メールアドレス・自動返信メール・トップに戻る」の設定をする。
(28)全てを選択し、コピー。
(29)前に作ったmail.phpの中身を全て、このコピーした内容に置き換える(貼り付け)
(30)ファイル名をmailutf8.phpにし、mail.phpと同じフォルダに保存。
(31)calformchn.phpで<form action="">のファイル名をmailutf8.phpに変更する。ここでもフォームの横幅を前と同様、#formWrap { width:90%;とした。これで大きなレイアウトの崩れはない。また

 <th>メールアドレス(半角)</th>
      <td><input size="30" type="text" name="メールアド
      レス" />

で、name属性をname="Email"とする。
(32)また、予約メールフォームに合わせるため、mailutf8.phpで、
$require = array('お名前','電話番号','Email','性別','サイトを知ったきっかけ');とした。
これで、送信者にも予約フォームと同じ内容のメールが届くようになった。
(33)「送信確認画面の表示(する=1, しない=0)」は「する」にしたが、確認画面で予約月日がreservと表示されるので、mailutf8.phpで

<input type="hidden" name="reserv[date]"
<input type="hidden" name="予約年月日[date]">
<input type="hidden" name="reserv[time]" →削除

に変更と削除を行った。そして上書き保存。
(34)calformchn.phpにアクセスし、中国語で送信テスト。
「お問い合わせ内容」に次の文章を入れて送信。
こんにちは。私たちは、あなたの来るのをずっと待っていたわ。お母さん、こちらがいつも話している中山さんよ。
你好、我们一直在等着你来呢。妈、这就是我常跟您说的中山小姐。
(35)メールが二通来て、文字化けが無かったので成功!

まとめ

PHP予約メールフォームUTF-8化の過程を書いてきたが、抜けがあるかも知れない。でも動作は確かにしている。
今回、いいアイデアだったのは多機能メールフォーム多言語対応版を使った事。同じサイトのphpなので、置き換えて見ようと思った。こう思わなかったならば実現はずっと先になっていたか、普通のCGIでやったかも知れない。
こう言ったプログラムは変更箇所を見つけるのが大変。ファイルがたくさんあるので、どこを直すといいのか試行錯誤。随分、時間を要した。でも、無料で使えるのだから、有難いことだ。作者に感謝したい。
これが出来たら、あとはフォームの中文化とレイアウト変更。中文化は先ず台湾仕様でやってみようと思う。フォームの書き方は台湾のサイトを参考にしたり、中国語辞典を見て、書いては見るが、難しそう。中国語翻訳者の知人はいるが、こういったIT関係は多分、得意じゃないだろうな。
それと、ページ埋め込み型では無くインラインフレームで検討したとき、targetの問題が出た。これはfunctionで一か所、parentをtopにすると直った。

実験に使ったカレンダーフォーム

ここまでの結果はここで確認できる。

スポンサードリンク

関西の貸別荘 すずめのおやど

京都近郊の貸別荘すすめのおやど

↑ トップ

 ホーム