お 詫 びと 訂 正 ( 正 誤 表 ) 2016 年 7 月 4 日 現 在 Ver.3.0 本 書 の 以 下 の 部 分 に 誤 りがありました ここに 訂 正 するとともに ご 迷 惑 をおかけしたことを 深 くお 詫 び 申 し 上 げます 書 籍 第 2 版 で 修 正 の 入 っているものも 含 めて 掲 載 しております この 本 でつくる Web アプリ 新 規 画 面 の URL 誤 :http://localhost:8000/request/edit 正 :http://localhost:8000/request/create 変 更 画 面 の URL 誤 :http://localhost:8000/request/create 正 :http://localhost:8000/request/edit 本 書 に 関 するお 問 い 合 わせ ご 質 問 送 付 先 の1 行 目 誤 :Web ページより 正 : サポートページ http://froide-kk.co.jp/donichi/ 公 式 facebook https://www.facebook.com/donichi.p1.froide/ 序 章 第 3 節 あれ? 正 しく 動 かない ときの4つのポイント P.14 1 回 目 の 画 像 誤 : ここまで OK 正 :ここまで OK 画 像 を 差 し 替 え
金 曜 日 Friday 第 2 節 ダウンロード&インストール P.35 手 順 5 インストール 先 の 指 定 画 面 に 下 記 の 画 面 イメージを 追 加 5.インストール 先 を 指 定 する 画 面 が 表 示 されますので そのまま[ 次 へ(N)>]ボタンをクリ ックしてください P.41 手 順 6 コンポーネントの 選 択 画 面 の 次 に 下 記 の 手 順 を 追 加 設 定 保 存 方 法 の 選 択 画 面 が 表 示 されるので そのまま [ 次 へ(N)>]ボタンをクリックし てください
P.41 手 順 7 プログラムグループの 指 定 画 面 に 下 記 の 画 面 イメージを 追 加 7.プログラムグループの 指 定 画 面 が 表 示 されますので そのまま [ 次 へ(N)>]ボタンをク リックしてください P.47 手 順 2 の startbootstrap-small-business-1.0.3.zip の 解 凍 の 際 に 下 記 の 手 順 が 追 加 にな ります すべて 展 開 後 展 開 ボタンをクリックすると 下 記 のウィンドウが 表 示 されますので ファイルを 置 き 換 える(R) をクリックしてください 展 開 後 の C: donichi fuelphp-1.7.3 public assets のフォルダ 構 成 は 下 記 のようになりま す
この 訂 正 に 伴 い P.119 ページの 下 部 のあいさんのセリフ 内 の small-business.css の コピーは 必 要 ありません P.49 Git と Vagrant がちゃんとインストールされているか 確 認 します 誤 :コマンドプロンプトに 次 のように Vagarnt と Git の 正 :コマンドプロンプトに 次 のように Vagrant と Git の 土 曜 日 Saturday 第 2 節 繰 り 返 し 文 を 使 ってみる P.79 Step Up! 変 数 のルール 誤 : 次 は 半 角 英 字 またはアンダースコア(_)からはじまり それ 以 降 は 半 角 英 数 字 とアンダース コアを 組 み 合 わせて 指 定 します カタカナひらがな 漢 字 記 号 などを 含 めた 全 角 は 使 えません 正 : 次 は 文 字 またはアンダースコア(_)からはじまり それ 以 降 は 半 角 英 数 字 アンダースコ ア 文 字 (カタカナ ひらがな 漢 字 等 )が 使 用 できます P.80 例 ) 良 い 例 悪 い 例 誤 : 良 い 例 :$_123 $a_ $ a 悪 い 例 :$123 $a_ $ 変 数 正 : 良 い 例 :$_123 $a_ $ a $ 変 数 悪 い 例 :$123
第 3 節 配 列 を 使 ってみる P.85 重 要! 連 想 配 列 についての2 行 目 誤 : 次 のP.83 正 :P.83 第 4 節 繰 り 返 し 文 を 使 ってみる P.90 繰 り 返 し 処 理 で 表 示 された 画 面 誤 :でできるPHP 入 門 正 :でわかるPHPプログラミング 教 室 画 像 を 差 し 替 え P.91 C: donichi fuelphp-1.7.3 public donichi.phpの4 行 目 網 掛 け 範 囲 と 数 字 を 訂 正 誤 :04 for($i=6; $i>=0; $i--){ 正 :04 for($i=7; $i>=0; $i--){ P.92 あいさんのセリフ 誤 :この$i が 0 以 下 の 間 は 正 :この$i が 0 以 上 の 間 は P.92 ななこののセリフ 誤 : 以 下 と より 小 さい って 違 いましたっけ? 正 : 以 上 と より 大 きい って 違 いましたっけ?
第 6 節 PHP でカレンダーをつくってみよう P.111 C: donichi fuelphp-1.7.3 public donichi.php のコードの 10 行 目 変 更 箇 所 のため 太 字 誤 :10 print $value; 正 :10 print $value; P.120 C: donichi fuelphp-1.7.3 public donichi.php のコードの 20 行 目 誤 :if ($week_number == 6 $i==date("t")) { 正 :if ($week_number == 6 ($i+1)==date("t")) { P.127 C: donichi fuelphp-1.7.3 public donichi.php のコードの 31 行 目 本 書 のコードでは PHP5 では E_STRICT 警 告 ですが PHP7 になると E_DEPRECATED 警 告 となります 今 後 の PHP のバージョンアップで 動 かなくなる 可 能 性 ありますので 訂 正 いたします 誤 :30 class Print_Calender{ 31 function space_cell($count){ 32 if ($count!=0){ 正 :30 class Print_Calender{ 31 static function space_cell($count){ 32 if ($count!=0){ P.130 C: donichi fuelphp-1.7.3 public donichi.php のコードの 29 行 目 本 書 のコードでは PHP5 では E_STRICT 警 告 ですが PHP7 になると E_DEPRECATED 警 告 となります 今 後 の PHP のバージョンアップで 動 かなくなる 可 能 性 ありますので 訂 正 いたします 誤 :28 class Print_Calender{ 29 function space_cell($count){ 30 if ($count!=0){ 正 :28 class Print_Calender{ 29 static function space_cell($count){ 30 if ($count!=0){
P.131 C: donichi fuelphp-1.7.3 public donichi.php のコードの 3 行 目 と 12 行 目 本 書 のコードでは PHP5 では E_STRICT 警 告 ですが PHP7 になると E_DEPRECATED 警 告 となります 今 後 の PHP のバージョンアップで 動 かなくなる 可 能 性 ありますので 訂 正 いたします 誤 :02 class Print_Calendar extends Today_Calendar{ 03 function space_cell($count){ 04 if($count!= 0){ 11 class Today_Calendar{ 12 function today($day){ 13 if(date("y/m/d")== date("y/m/d", mktime(0, 0, 0, date("n"), $day, date("y")))){ 正 :02 class Print_Calendar extends Today_Calendar{ 03 static function space_cell($count){ 04 if($count!= 0){ 11 class Today_Calendar{ 12 static function today($day){ 13 if(date("y/m/d")== date("y/m/d", mktime(0, 0, 0, date("n"), $day, date("y")))){ 日 曜 日 Sunday 第 2 節 作 成 したプログラムを 見 てみよう P.157 C: donichi fuelphp-1.7.3 fuel app views tweet index.phpのコードの3 行 目 誤 :03 </ul> 04 <p>index</p> 正 :03 04 </ul> 05 <p>index</p> P.158 図 oil g controller コマンドで 生 成 されたindex.phpページ 誤 :Index 表 示 (index.phpの04 行 目 ) 正 :Index 表 示 (index.phpの05 行 目 ) P.161 この 節 で 学 んだことのtemplate.phpの 説 明 誤 : 書 かれているファイル:Viewプログラム) 正 : 書 かれているファイル):Viewプログラム P.164 ななこの 最 初 の 吹 き 出 しの 1 行 目 誤 :tweet/index.php 正 :tweet/index
第 4 節 ページを 追 加 してみよう P.177 Step Up! 例 ) Controller プログラム 側 の 2 行 目 誤 :$data[ message ]= メッセージ 正 :$data[ message ]= メッセージ ; P.177 Step Up! 例 ) View プログラム 側 誤 :print $title ; print $message ; 正 :print $title; print $message; 第 5 節 作 成 したプログラムを 見 てみよう P.181 キーワード RDB(リレーショナルデータベース)とは? 誤 :1. 列 No の 1 2 や 姓 の 山 田 花 子 などの 正 :1. 列 No の 1 2 や 姓 の 山 田 佐 藤 などの 第 6 節 おねがい ページをつくってみよう P.189~P.190 C: donichi fuelphp-1.7.3 fuel app config config.php の 行 番 号 誤 : 259 /* Always Load */ 260 /***************************************************************** *********/ 261 // 'always_load' => array( 262 263 /** 264 * These packages are loaded on Fuel's startup. 273 */ 274 // 'packages' => array( 275 // //'orm', 276 // ), 277 278 /** 279 * These modules are always loaded on Fuel's startup. 311 * If you don't want the lang in a group use null as groupname. 312 */ 313 // 'language' => array(), 314 // ), 315 316 );
正 : 257 /* Always Load */ 258 /***************************************************************** *********/ 259 // 'always_load' => array( 260 261 /** 262 * These packages are loaded on Fuel's startup. 271 */ 272 // 'packages' => array( 273 // //'orm', 274 // ), 275 276 /** 277 * These modules are always loaded on Fuel's startup. 307 * If you don't want the lang in a group use null as groupname. 308 */ 309 // 'language' => array(), 310 // ), 311 312 ); P.196 4 誤 : 一 覧 画 面 に 入 力 した おねがい 情 報 と IP アドレス がちゃんと 表 示 されているか 確 認 し Add new Request をクリックします 正 : 一 覧 画 面 に 入 力 した おねがい 情 報 と IP アドレス がちゃんと 表 示 されているか 確 認 します P.196 5 誤 :(P.182 2. ログインと 初 期 設 定 参 照 ) 正 :(P1933 参 照 )request テーブルに
P.201(オ) クロスサイトリクエストフォージェリ(CSRF) 対 策 のための 機 能 を 有 効 にする を 追 記 クロスサイトリクエストフォージェリ(CSRF)について クロスサイトリクエストフォージェリ( 以 降 CSRF)とは 別 のサイトに 用 意 したコンテンツ 上 の 罠 のリンクを 踏 ませること 等 をきっかけとして インターネットショッピングの 最 終 決 済 や 退 会 等 Web アプリケーションの 重 要 な 処 理 を 呼 び 出 すようユーザを 誘 導 する 攻 撃 で す FuelPHP では こういった 攻 撃 の 対 策 のための 機 能 が 搭 載 されています 1 C: donichi fuelphp-1.7.3 fuel app config config.php ファイルを 開 きます 2 以 下 のグレーの 部 分 のコメントアウトを 解 除 し CSRF 対 策 機 能 を 有 効 にすると 簡 単 に 実 装 することができます Scaffold で 生 成 されるコードでは 実 装 されないので 手 動 で 実 装 します C: donichi fuelphp-1.7.3 fuel app views request _form.php 行 数 は FuelPHP のバージョンによって 異 なります 112 /** 113 * Security settings 114 */ 115 'security' => array( 116 // 'csrf_autoload' => false, 117 // 'csrf_token_key' => 'fuel_csrf_token', 118 // 'csrf_expiration' => 0, 119 120 /** P.203 C: donichi fuelphp-1.7.3 fuel app views request _form.php のコードの 4 行 目 Scaffold で 生 成 されたコードでは クロスサイトリクエストフォージェリ(CSRF) 対 策 のため の 機 能 が 含 まれていないため 誤 :01 <?php echo Form::open(array("class"=>"form-horizontal"));?> 02 03 <fieldset> 04 <div class="form-group"> 05 <?php echo Form::label('Body', 'body', array('class'=>'controllabel'));?> 正 :01 <?php echo Form::open(array("class"=>"form-horizontal"));?> 02 03 <fieldset> 04 <div class="form=group"> 05 <?php echo Form::hidden(Config::get('security.csrf_token_key'), Security::fetch_token());?> 06 </div> 07 <div class="form-group"> 08 <?php echo Form::label('Body', 'body', array('class'=>'controllabel'));?>
P.205 C: donichi fuelphp-1.7.3 fuel app classes controller request.php の 25 行 目 と 66 行 目 Scaffold で 生 成 されたコードでは クロスサイトリクエストフォージェリ(CSRF) 対 策 のため の 機 能 が 含 まれていないため 誤 :22 'body' => Input::post('body'), 23 Input::ip() 24 )); 25 if ($request and $request->save()) 正 :22 'body' => Input::post('body'), 23 'ip' => Input::ip() 24 )); 25 26 if (Security::check_token() and $request and $request->save()) request.php 64 $request->ip = Input::ip(); 65 66 if (Security::check_token() and $request->save()) 67 { 68 Session::set_flash('success', 'Updated request #'. $id); P.208 C: donichi fuelphp-1.7.3 fuel app views request index.php のコードの 26 行 目 と 30 行 目 substr 関 数 では 文 字 列 を 指 定 の 長 さだけ 切 り 詰 める 関 数 なので 一 部 の 文 字 が 文 字 化 けする 可 能 性 があり Str クラスの truncate 関 数 を 使 用 するように 訂 正 します 誤 :25 <div class="col-md-4" > 26 <h3><?php echo substr($item->body,0,36);?></h3> 27 <p> 投 稿 日 時 28 <?php echo date("y-m-d H:i", $item->created_at);?></p> 29 <p> IP <?php echo $item->ip;?></p> 30 <p><?php echo substr($item->body,0,240);?></p> 31 <?php echo Html::anchor('request/edit/'.$item->id, '<i class="icon-wrench"> 変 更 します 正 :25 <div class="col-md-4" > 26 <h3><?php echo Str::truncate($item->body,12, '', true);?></h3> 27 <p> 投 稿 日 時 28 <?php echo date("y-m-d H:i", $item->created_at);?></p> 29 <p> IP <?php echo $item->ip;?></p> 変 更 します 30 <p><?php echo Str::truncate($item->body,80, '', true);?></p> 31 <?php echo Html::anchor('request/edit/'.$item->id, '<i class="icon-wrench"> P.208 C: donichi fuelphp-1.7.3 fuel app views request index.php のコードの 26 行 目 の 説 明 誤 :substr: 第 1 引 数 で 指 定 された 引 数 の 文 字 列 を 第 2 引 数 から(0 の 場 合 は 頭 から) 第 3 引 数 のバイト 数 分 返 す 標 準 関 数 です 正 :Str::truncate: 第 1 引 数 で 指 定 された 引 数 の 文 字 列 を 第 2 引 数 の 文 字 数 分 切 り 詰 める 関 数 です 第 3 引 数 は 切 り 詰 めた 文 字 部 分 に 表 示 する 文 字 を 指 定 します
P.215 7 保 存 成 功 時 request index.php が 実 行 され ブラウザに 画 面 が 表 示 される の 3 行 目 誤 :26 行 目 : おねがい 情 報 の 本 文 ($item->body)を 文 字 列 の 一 部 分 を 返 す 標 準 関 数 (substr) 正 :26 行 目 : おねがい 情 報 の 本 文 ($item->body)を 文 字 列 の 一 部 分 を 返 す 関 数 (Str::truncate) P.208 28 行 目 誤 :<?php echo date("y-m-d H:i", $item->created at);?></p> 正 :<?php echo date("y-m-d H:i", $item->created_at);?></p> P.213 C: donichi fuelphp-1.7.3 fuel app classes controller request.php の 26 行 目 P.205 の 変 更 による 影 響 誤 :23 'ip' => Input::ip() 24 )); 25 26 if ($request and $request->save()) 27 { 正 :23 'ip' => Input::ip() 24 )); 25 26 if (Security::check_token() and $request and $request->save()) 27 { P.216 29 行 目 誤 :$val->add_field( 'ip', 'Ip', 'required max_length[255]'); 正 ://$val->add_field( 'ip', 'Ip', 'required max_length[255]');