PHP+SQLite実践サンプルブック: 最新Webアプリ開発環境の「使える機能」を厳選!
- ソシム (2005年7月1日発売)
- Amazon.co.jp ・本 (239ページ)
- / ISBN・EAN: 9784883374298
作品紹介・あらすじ
「これからPHP」なあなたに最適!SQLiteは、PHPの5から標準で組み込まれた「速くて」「簡単な」データベースシステムです。MySQLよりも習得しやすく「LAMP」に代わる技術を先取りで身につけていきましょう。
感想・レビュー・書評
-
題材をSQLiteに絞って書いていることは評価できますが,PHPのコーディングとしては数年前のものです.
一番の問題は脆弱性があるサンプルが存在することです.それも含めこの書籍は下記の問題があるため,別の書籍での勉強を強くお勧めします.
■E_NOTICEの警告が出るコードが平然と書かれている
例えば下記のようなコード
$foo = $_POST[ "foo"]
これは前のページから「foo」をポストされなければE_NOTICEが発生する.
サンプルの正常系の処理では出てこないのかもしれないが,「鵜呑みにする」ことに注意し,そういうコードを例題にすることは控えるべき.
■ショートタグを使っている
<? foo() ?>
まだそういう本出てきますか.ハァ.
■SQLインジェクションがある
$foo = $_POST[ "foo"];
$sql = "SELECT * FROM foo where foo='".$foo."'";
のようなコードがある.$fooのサニタイズをしていません.
■コードの最適化が甘い
仮に5つの変数の文字コードを変更するとします.
これがこの書籍だと
$foo1 = mb_convert_encoding( $foo1, "EUC-JP", "SJIS");
$foo2 = mb_convert_encoding( $foo2, "EUC-JP", "SJIS");
$foo3 = mb_convert_encoding( $foo3, "EUC-JP", "SJIS");
$foo4 = mb_convert_encoding( $foo4, "EUC-JP", "SJIS");
$foo5 = mb_convert_encoding( $foo5, "EUC-JP", "SJIS");
といった記述になっています.しかしこれは下記のようにするべきだと思います.
$in_charset = "SJIS"; // SJISもShift_JISなどにするべきかと
$out_charset = "EUC-JP";
$foo1 = mb_convert_encoding( $foo1, $in_charset, $out_charset));
$foo2 = mb_convert_encoding( $foo2, $in_charset, $out_charset));
$foo3 = mb_convert_encoding( $foo3, $in_charset, $out_charset));
$foo4 = mb_convert_encoding( $foo4, $in_charset, $out_charset));
$foo5 = mb_convert_encoding( $foo5, $in_charset, $out_charset));
ここはポリシーの違いかもしれませんが,紙面のような記述だとtypoなどを日常から発生させやすいコードになります.
#foreachなどでまわして〜ってのもあるけど若干読みづらくもなるので判断が難しいです
■RFC違反
HTTPヘッダーでLocationを使うときはURLはフルパスで書かなければなりませんが,この書籍では相対パスで記述されています.
ほとんどのブラウザーで動作すると思いますが,初心者は鵜呑みにするからこそこの程度の手抜きはしてはいけないと思います.
まだあった気がしますけど,総合的なサンプルコードレベル的にはこれは数年前の実装内容です.
今時このコードを仮に業務上実装したら「知らなかった」では済まないいでしょう.
#まぁ過去のものを引きずってて修正しきれないってのは仮に1,000歩譲るとしてですが
まだ後一つダメコードがあった気がするのですが忘れてしまいました.
価格は2,100円と若干安め(ムック系よりは高いけど)ので入手し安い(かつ勧めやすい価格帯)のですが,非常に残念です.
詳細をみるコメント1件をすべて表示-
スーパー賢者タイムさんPHPは初心者なのでレビュー参考になりました。PHPは初心者なのでレビュー参考になりました。2010/12/08
-
-
iPhoneでつけている家計簿のデータをPCで扱ってみたくてデータのフォーマットを調べたらSQLiteとのことで、図書館でSQLiteとタイトルについている本を借りてみた。
PHPを使ってWebからSQLiteを使った簡単なアプリをちょっとずつプログラミングしていく構成でWebサービスとかの構築とかやりたければ非常に参考になる本だと思う。
が、私の場合、SQLiteのデータが扱いたかっただけなので、ちょっと違ったかな。
返却する前にもう一度再読して、実際にいじってみよう。