お 詫 びと 訂 正 ( 正 誤 表 ) 2015 年 12 月 18 日 現 在 Ver.1.1 本 書 の 以 下 の 部 分 に 誤 りがありました ここに 訂 正 するとともに ご 迷 惑 をおかけしたことを 深 くお 詫 び 申 し 上 げます 本 書 に 関 するお 問 い 合 わせ ご 質 問 送 付 先 の1 行 目 誤 :Web ページより 正 : サポートページ http://froide-kk.co.jp/donichi/ 公 式 facebook https://www.facebook.com/donichi.p1.froide/ 金 曜 日 Friday 第 2 節 ダウンロード&インストール P.35 手 順 5 インストール 先 の 指 定 画 面 に 下 記 の 画 面 イメージを 追 加 5.インストール 先 を 指 定 する 画 面 が 表 示 されますので そのまま[ 次 へ(N)>]ボタンをクリ ックしてください
P.41 手 順 6 コンポーネントの 選 択 画 面 の 次 に 下 記 の 手 順 を 追 加 設 定 保 存 方 法 の 選 択 画 面 が 表 示 されるので そのまま [ 次 へ(N)>]ボタンをクリックし てください P.41 手 順 7 プログラムグループの 指 定 画 面 に 下 記 の 画 面 イメージを 追 加 7.プログラムグループの 指 定 画 面 が 表 示 されますので そのまま [ 次 へ(N)>]ボタンをク リックしてください
土 曜 日 Saturday 第 3 節 配 列 を 使 ってみる P.85 重 要! 連 想 配 列 についての2 行 目 誤 : 次 のP.83 正 :P.83 第 6 節 PHP でカレンダーをつくってみよう 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 第 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 5 誤 :(P.182 2. ログインと 初 期 設 定 参 照 ) 正 :(P1933 参 照 )request テーブルに P.201(オ) クロスサイトリクエストフォージェリ(CSRF) 対 策 のための 機 能 を 有 効 にする を 追 記 クロスサイトリクエストフォージェリ(CSRF)について クロスサイトリクエストフォージェリ( 以 降 CSRF)とは 別 のサイトに 用 意 したコンテンツ 上 の 罠 のリンクを 踏 ませること 等 をきっかけとして インターネットショッピングの 最 終 決 済 や 退 会 等 Web アプリケーションの 重 要 な 処 理 を 呼 び 出 すようユーザを 誘 導 する 攻 撃 で す FuelPHP では こういった 攻 撃 の 対 策 のための 機 能 が 搭 載 されています 1C: 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() 25 if ($request and $request->save()) 正 :22 'body' => Input::post('body'), 23 'ip' => Input::ip() 25 26 if (Security::check_token() and $request and $request->save()) 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 引 数 で 指 定 された 引 数 の 文 字 列 を 第 3 引 数 の 文 字 数 分 切 り 詰 める 関 数 です 第 2 引 数 は 切 り 詰 めた 文 字 部 分 に 表 示 する 文 字 を 指 定 します P.208 7 保 存 成 功 時 request index.php が 実 行 され ブラウザに 画 面 が 表 示 される の 3 行 目 誤 :26 行 目 : おねがい 情 報 の 本 文 ($item->body)を 文 字 列 の 一 部 分 を 返 す 標 準 関 数 (substr) 正 :26 行 目 : おねがい 情 報 の 本 文 ($item->body)を 文 字 列 の 一 部 分 を 返 す 関 数 (Str::truncate) P.213 C: donichi fuelphp-1.7.3 fuel app classes controller request.php の 26 行 目 P.205 の 変 更 による 影 響 誤 :23 'ip' => Input::ip() 25 26 if ($request and $request->save()) 27 { 正 :23 'ip' => Input::ip() 25 26 if (Security::check_token() and $request and $request->save()) 27 {