2010.05.06

【正誤情報】PHP5であなたもウェブアプリが作れる!

PHP5であなたもウェブアプリが作れる!

本書の内容に次のような誤りがありました。お詫びして訂正いたします。 [2006/05/29]



■初刷、第2刷



stripslashes関数の追加

PHPの設定ファイル(php.ini)の標準設定では、フォームのGETとPOSTで渡される文字列やCOOKIEの文字列をエスケープ処理し、「」「’」「”」の前に「」(バックスラッシュ)が付け加えられます。エスケープ処理には、フォームからの意図しないコマンドの実行を防ぐ役割がありますが、それによって日本語が文字化けしてしまうことがあります。エスケープ処理による日本語の文字化けを回避するためには、stripslashes関数を使って受け取った文字列から「」を取り除いてください。



 【例】$memo = stripslashes( $_GET[“memo”] );



エスケープ処理は、設定ファイルphp.iniの「magic_quotes_gpc」パラメータでOn/Offを切り替えられます。Offにした場合は、addslashes関数で必要な箇所にエスケープ処理を施すことになります。



本書のサンプルでは、以下のリストにstripslashes関数を設定してください。



P.100 リスト(enquete1.php)20行目と21行目

$name1 = stripslashes( $_POST[“name1”] );

$name2 = stripslashes( $_POST[“name2”] );



P.109 リスト(enquete2.php)17行目と18行目

$name1 = stripslashes( $_POST[“name1”] );

$name2 = stripslashes( $_POST[“name2”] );



P.195 リスト(Schedule.class.01.php)84行目と85行目と86行目

$this->splace = stripslashes( $_POST[“splace”] );

$this->stitle = stripslashes( $_POST[“stitle”] );

$this->contents = stripslashes( $_POST[“contents”] );



p.76「forループ」の説明

forループの動作について、[1]~[4]の流れで記載しておりますが、記述に誤りがあります。正しくは以下のとおりです。

[1]変数の初期化を行う(式1)

[2]条件(式2)を判定し、条件が合わなければ(FALSEであれば)forループを終了して「}」の次の行へ進む。条件が合えば、文または「{」と「}」に挟まれた文を1回実行する

[3]条件に使う変数を更新する(式3)

[4][2]に戻る

このため、p.76の最後の記載「~forループは説明からもわかるように、文を最低でも1回実行します。」という部分も誤りです。最初の[2]の判定で条件が合わなかった場合、1回も実行しないことになります。


p.101 リスト(enquete1.php)52行目



<meta http-equiv=“Content-Type” content=“text/html; charset=Shift_JIS“>





<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>


p.122 リスト(form_mail.php)35行目



<meta http-equiv=“Content-Type” content=“text/html; charset=Shift_JIS“>





<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>


p.240 リスト(graph_home.html)2行目



<meta http-equiv=“Content-Type” content=“text/html; charset=Shift_JIS“>





<meta http-equiv=”Content-Type” content=”text/html; charset=Shift_JIS”>











本書の内容に次のような誤りがありました。お詫びして訂正いたします。 [2005/3/25]



■初刷



p.268 ソースリスト「chsetting.php」11行目

誤:

md5(trim($_POST[‘current_password’] , FALSE)))

正:

md5(trim($_POST[‘current_password’]) , FALSE))



p.227 3行目

誤:

英語曜日名と数値を対応させる配列$month~

正:

英語名と数値を対応させる配列$month~



p.179 「表6-1●usersテーブルの定義」が間違っています。正しくは、次のとおりです。

























名前 制約 説明
idno integer primary key ユーザID(名前)が変更されても管理の基準となるユーザの整理番号
user varchar(8) ユーザID
pass char(8) パスワード