パーフェクトPHP

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

本書に関するサンプルファイルをダウンロードできます。

データは,圧縮ファイル形式でダウンロードできます。圧縮ファイルをダウンロードしていただき,適宜解凍してご利用ください。

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2012年8月20日更新)

P.022 上から7行目付近 (3刷修正済み)

CentOS/Fedoraでは/etc/php/php.iniがphp.iniファイルになります
CentOS/Fedoraでは/etc/php.ini がphp.iniファイルになります

P.024 真ん中のインストール (3刷修正済み)

Mac OS Xではportコマンドからインストールします

----
$ sudo port install php5
$ sudo port install php5-devel php5-mbstring php5-mysql
$ sudo port mysql5-server
----

Mac OS Xではportコマンドからインストールします

----
$ sudo port install php5
$ sudo port install php5-devel php5-mbstring php5-mysql
$ sudo port install mysql5-server
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
$ sudo sh -c "echo 'Include conf/extras-conf/mod_php.conf' >> /opt/local/apache2/conf/httpd.conf"
----

P.083 「PHP Notice~~」のリストの前,下から3行目

この例の場合、3つのい要素が
この例の場合、3つ要素が

P.198 7.1本文1行目

本章ではフレームワークの作成と、それを用いたWebアプリケーションの作成を行います。
本章と次章ではフレームワークの作成それを用いたWebアプリケーションの作成を行います。

P.201 下から5行目付近

アプリゲーションごとに
アプリーションごとに

P.202 図7.1(3刷修正済み)

Settion
Session

P.237 リスト7.15 run() メソッド内のif文(3刷修正済み)


if ($param === false) {


if ($params === false) {

P.312 リスト8.32 3行目 (3刷修正済み)


class AccountController extends Controller


class StatusController extends Controller

P.339~341 9.4.3 対応方法 (3刷修正済み)

http://www.tokumaru.org/d/20110127.htmlで脆弱性指摘あり。修正済みコードは以下からダウンロードできます。

P.359 本文 下から5行目

 +document.cookie;</script>
 %2Bdocument.cookie;</script>

P397 本文 上から5行目

 file=../../../../../../../etc/passwd%00
 design=../../../../../../../etc/passwd%00

P.389 リスト10.21 (3刷修正済み)


eval("echo htmlspecialchars(str_replace(" . $_GET['keyword'].
    ",'', ".$string."), ENT_QUOTES, 'UTF-8');");


eval("echo htmlspecialchars(str_replace('" . $_GET['keyword'].
    "','', '".$string."'), ENT_QUOTES, 'UTF-8');");

P.389 本文 上から3行目 (3刷修正済み)

 ところが、このプログラムに「?keyword=phpinfo()」とつけてアクセスすると、phpinfo()関数の結果が表示されてしまいます。これは、$_GET['keyword']の値「phpinfo()」がeval()関数によって実行されてしまうためです。
 ところが、このプログラムに「?keyword='.phpinfo().'」とつけてアクセスすると、phpinfo()関数の結果が表示されてしまいます。これは、$_GET['keyword']の値に含まれている「phpinfo()」がeval()関数によって実行されてしまうためです。

P.389 リスト10.22 (3刷修正済み)


if (strpos($string, $_GET['keyword']) !== false) {
    eval("echo htmlspecialchars(str_replace(".$_GET['keyword'].
        ",'', ".$string."), ENT_QUOTES, 'UTF-8');");
}


if (strpos($string, $_GET['keyword']) !== false) {
    eval("echo htmlspecialchars(str_replace('".$_GET['keyword'].
        "','', '".$string."'), ENT_QUOTES, 'UTF-8');");
}

P.405 リスト 10.38のファイル名


 command_injection_04.php


 command_injection_03.php