DB初期化
ユーザ機能を作ろうと思ったけど、いろいろ考えてサーチ管理者の機能を先に作ることに。
まずはDBの初期設定。最初はSQLiteファイルを手動で設定すればいいなんて考えていたけど、最低限の初期設定は自動化しようかと。
もっともフォームを使って登録とかじゃなく、作成済みのSQLを順に流すだけ。初期設定を変えたい場合は、直接SQLを変更してもらう感じ。
処理内容の概略は以下の通り。
- 設置者:サーバにスクリプトを置く
- 設置者:初期化用ページにアクセスする
- スクリプト:DBにマスタデータがなければ生成する。
完全にマスタがないわけではなく、一部欠損しているなどの不整合状態ならアボートさせる(現状のデータファイルを削除なりリネームして退避なりした後で再アクセスするよう促す)
- スクリプト:DBに管理者パスワードが設定されていなければ(初期状態)、パスワードを含めて管理者用初期設定をさせる。
管理者パスワードが既に設定されていたら、アクセスされるのはおかしい(というか必要ない)のでアボートさせる(安全のため、初期化用ページは本当に初期状態の場合しか動作しないようにする。初期設定が終わってさえいれば、パスワード等の変更は管理画面でできるから無問題)
- スクリプト:セッションを開始
- スクリプト:管理用メイン画面にリダイレクト
たったこれだけでも、コードにするとめんどいんだよね……。
DBの初期化処理自体はうまくいって、直後の画面表示はこうなります。
スタイル等がまだ未確定なのでメッセージ部分がアレだし、パスワードに使える文字も確定していないけど。
何にしても初期化を完了した状態で検索画面にアクセスすると、データがなくても表示に異常がないことを確認。ただしセッション周りはまだいろいろ考える&調べることがあるので、やっつけの暫定コード。
それからアボートはdieするだけだけど(あってはいけない状態なので、HTMLのページにするなどの余計な情報は出さない)、日本語メッセージを表示しようとすると環境依存で化けますね。たとえばFirefox3.6はちゃんと表示されたけど、IE8はダメ。なのでレスポンスヘッダで文字コードを送出してdieする関数を作成してそれを呼び出すことに。
2010/10/10 14:17:30更新
最終更新:2010年10月10日 14:17