2015.11.23
0からはじめるPHP#58【TDDで作り直す掲示板#6-現状報告-】
まず最初に、メール送信の話からしましょう。
メール送信の基本ロジックに関しては
#47(安全なmailto)で作ってるので基本はコピペです。
ついでに、スラッシュ記法でパラメータの受け渡しをした方がカッコいいかなと思ったんで、そうしてみます。
う、うーん・・・・・・?
で、結論としては
HTMLエンティティ(特にスラッシュ?)を含む文字列はスラッシュ記法を使わない方が良いということにします。
スラッシュ記法をやめてパラメータで渡すと上手く行くので、原因はその辺りにありそうです。ただ、きちんとは分かりませんが実際動かないので何かしらの原因はあるはずです・・・・・・。
返信ページなんかは、記事IDをスラッシュ記法で渡してるんですが、これは上手く行ってるんですけどねぇ・・・・・・うーん。
public function mailto(Request $request)
{
/*デコード*/
$request["mail"]=self::decrypt($request->input("mail"));
//メールのバリデーション
$this->validate($request, [
"mail" => 'required|email|max:255',
]);
return view("mailto",["mail"=>$request["mail"]]);
}
結局はこんな形に落ち着きました。
getで変なパラメータを送信することは可能なので、一応バリデーションを噛ませてます。まぁ、暗号化してるので意図的に狙った動作をさせることは難しい・・・・・・というか
それができたらセキュリティホールなんですがセキュリティ的に安全であることを目指すためには、きちんとバリデーションさせといた方が良いかなと思います。
さて、この時点で残っているテストは以下のものだけです。
・バリデーション(javascript)
・データベース送信
->エラー処理
・ページネーション
->・ナビバー表示
(書き忘れてたもの)
・フォーム初期値
->・初期値埋め込み
->・クッキー読み込み
->・クッキー書き込み
|
javascriptでのバリデーションは
正直めんどくさいだけなので実装しなくてもいいかなーと思ったりもしますし、そもそもフレームワークとはあんま関係ないですしね。
そして、ページネーションなんかは後回しでも全然大丈夫そうです。
ということで、ついにデータベースとの接続を行うことになります。
といっても、実は実装している過程でデータベースからの読み込みは既に終わっているので、残るは書き込みです。
あ、あとクッキー関連のテストケースを完全に失念してました。でもクッキーってどうテストするんだろう・・・・・・?(笑)
で、今回はデータベースのテストについてお話しようと思ったんですが、
リモートアドレスを取得しようとすると失敗するというバグが解決できなかったので解説を諦めます。(笑)
ちなみに、テスト駆動で開発するとか言いながらテストがバグるのであまりテストの話ができなかったのですが
掲示板は(機能面では)ほぼ完成しました。
ページネーションとエラー処理などはまだ未実装ですが、ページネーションは
この前話した通りすぐに導入できます。
エラー処理はまだまだ考えることがいっぱいあるのでまた今度お話したいと思いますが、上級者向けになるのでおそらく妥協することになると思います。(苦笑)
掲示板のデザインに関しては全く触れてないのですが、特に何もなければ11月中には公開できると思います。
が、先ほどあげたようなエラー処理の話や、あとテストに関しての知識を得ようとするともうちょっとかかるかなーと。まぁ気長にやっていきましょう。
ただ、個人的には11月で一旦切り上げて、12月は次のプロダクトに進みたいなぁと思っています。
その一方でセキュリティに関する知識をつけたいな・・・・・・という希望もあるので、どうしたものか・・・・・・って感じですね。