昨年9月頃に携帯電話で更新できるフォームを作ったのはいいんですが、 機種によっては更新するフォームを選択すると、携帯電話内の専用エディタのようなものが起動し、 そのエディタで編集を行うタイプ…… っていうとわかりにくいですが、11月に機種変更をしたらこのタイプでした。 → → → → フォームを選択すると→エディタが起動→データを入力していくと→画面右下の入力限界量の値が変化。 そんなわけで編集できる文字数は私の端末だと半角4095文字、全角2047文字に制限されてしまいます 全角2047文字っていうのは日記ページだと結構少ないです。 もちろん月の前半だとこれでもなんとかなるのですが、後半になると編集できる文字数を余裕でオーバーしてしまいます たとえば、今年の4月の日記ですと、全角約4000字 これでは下旬になると更新できない! ってことで、しばらくどうしたものかと考えてたのですが、 更新する部分だけをフォームで入力して、そのデータを日記ファイルに挿入すればいいってことに気が付きました。 挿入する場所になにかマーカーを埋め込んで、そのマーカーの位置に挿入するようにします ってことで、日記ページの挿入したい部分にコメントタグでマーカーを仕込んでそこに挿入できるようなCGIを考えました 困ったのがファイルの読み込みです Perlでファイルを読もうとすると、1行ごとの配列で読み出されます しかし欲しいのは一行ごとの配列ではなく1ページ分丸々の文字列変数です とおもったら、文字列をつなげるjoin関数なるものがあるではありませんかw ってことで配列をforeach文で一行ごとに切り出してjoin関数でくっつけることで回避できました そんなわけで処理の流れは以下のようになりました 旧型の処理と比べると書き込みCGIの方に機能が集約されました 逆に、入力の方は単にフォームを表示して更新データを書き込みCGIに渡すだけになってます そんなわけで入力側はCGIファイルからHTMLファイルになりました しかしながら例によってファイルは二つです、熟練者が作れば多分ひとつにできるはず('A`) そんなわけで作ったcgiをまたもやさらしageします→■ このプログラムは ☆いうまでも無いことですが無保証ですw ☆このCGIを使ったことによっていかなる損害が生じたとしても責任取れないです ☆利用・改造・流用・再配布可能です。 ☆修正対象ファイルはCGIソースを直接書き換えて変更します ☆挿入位置を示すタグは<!--ADDING-->です。このタグを日記の更新したい位置に挿入しておきます。 ☆何もしなかった(フォームになにも書かなかったり)した場合には 修正対象のHTMLファイルを一切触らないようにしました 触ったとしても何も書き加えないので何もおこらないとは思いますが念のため。 ☆foreach文やif文の中括弧のつけ方が気に入らないとか言われても困りますw さらに「にんじゃがNinjaExpressの日記を端末で更新する」という目的で作られたため ☆文字コードはEUCじゃないとうまく動作しない可能性があります 多分ソースを書き換えれば他の文字コードでもうまくいきそう(未確認 ☆当然ながら入力フォームしか装備してないのでHTMLを直接書けないと意味ないですw ☆ファイルを扱うのが一人だけという想定なのでファイルロックとかは考えてません(゚∀゚) ☆もちろん例外処理とかもまったくかんがえてません(゚∀゚) こんなものでも使ってみたければどうぞご使用くださいませwwww このCGIを作成するにあたっては、前回同様 杜甫々さんのとほほのWWW入門ならびに KENTさんのKENT WEBを大いに参考にさせていただきました |