PHPしっかり入門教室 使える力が身につく、仕組みからわかる。(小原 隆義)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. PHPしっかり入門教室 使える力が身につく、仕組みからわかる。

PHPしっかり入門教室 使える力が身につく、仕組みからわかる。


形式:
書籍
発売日:
ISBN:
9784798153377
定価:
2,618(本体2,380円+税10%)
仕様:
B5変・280ページ
分類:
Webプログラミング
シリーズ:
しっかり入門教室

本書籍の他の形式を確認する

  • このエントリーをはてなブックマークに追加

Web業界の即戦力になる!

本書はPHPによるWebアプリケーション開発をゼロから学べる教科書です。

初心者の方でも読み進められるように、サンプルデータを使いながら丁寧に解説していきます。HTMLやCSSの知識がなくても、すぐに学習が開始できます。さらに、現場で使える技術を厳選して学んでいけるので、効率よく実務スキルが身につきます。

著者は実際にスクールやセミナーでPHPを教えてきた経験から、初心者がどこでつまづきやすか、理解しづらいかを熟知しています。どんなかたでも、途中であきらめることなく、確実に学び通せるようになっています。読み通した時、きっと新しい扉が開いたことを実感していただけるでしょう。

Part1(準備編)では、PHPのプログラミングに必要なソフトやツールの役割、使い方を理解します。Part2(構文&制作編)では、PHPやSQLの構文を理解し、小型のアプリを作ることで制作の流れを体験しながら学びます。

Part3(実務編)では、大型課題をこなし制作に係る重要事項を押さえることで、実務レベルのスキルを育てます。

Appendix(付録)では、現場では必須になっているバージョン管理(Git)やフレームワーク、エラー対処法などについて解説しています。

Part1 準備編
1章 Webプログラミングの環境を構築する
2章 Webサービスの仕組みを理解する

Part2 構文&制作編
3章 変数にデータを格納する
4章 if文を使って処理を分岐する
5章 while,forで処理を繰り返す
6章 配列を使って複雑なデータを管理する
7章 データベースと連動する
8章 GETとPOST
9章 正規表現と文字列
10章 メール送信とファイル操作
11章 関数を使って処理をまとめる
12章 COOKIEとSESSION

Part3 実務編
13章 ログイン認証
14章 実務に必要な知識・技術

Appendix 付録
A1 Gitを使う
A2 フレームワークの特徴と種類
A3 エラーの対処法


Part1 準備編
1章 Webプログラミングの環境を構築する
2章 Webサービスの仕組みを理解する

Part2 構文&制作編
3章 変数にデータを格納する
4章 if文を使って処理を分岐する
5章 while,forで処理を繰り返す
6章 配列を使って複雑なデータを管理する
7章 データベースと連動する
8章 GETとPOST
9章 正規表現と文字列
10章 メール送信とファイル操作
11章 関数を使って処理をまとめる
12章 COOKIEとSESSION

Part3 実務編
13章 ログイン認証
14章 実務に必要な知識・技術

Appendix 付録
A1 Gitを使う
A2 フレームワークの特徴と種類
A3 エラーの対処法

付属データはこちら

会員特典はこちら

書籍への問い合わせ

正誤表、追加情報をご確認の上、こちらよりお問い合わせください

書影の利用許諾について

本書籍に関する利用許諾申請はこちらになります

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2021年04月28日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 004
本書の構成 上から7行目
2刷
Part-1ではPHP/MySQLの環境構築方法を
Part1ではPHP/MySQL の環境構築方法を、 Part と 1との間の「-(ハイフン)」を削除します。 同様に8行目のPart-2、 9行目のPart-3、Part-2のハイフンも削除します。
2021.03.24
1刷 005
ブラウザ対応について
2刷
Windows Windows Explorer 11/Microsoft Edge 40/Firefox 55/Google Chrome 61 Mac     safari 10/Google Chrome61
Windows  Internet Explorer 11/Microsoft Edge 40/Firefox 55/Google Chrome 61 Mac     safari 10/Google Chrome 61

2021.03.24更新
2021.03.24
1刷 010
「Chrome をインストールし、機能を確認する」1行目
2刷
本書では、検証用ブラウザにChrome(クロム、クローム)を使います。
本書では、検証用ブラウザにChrome(クローム)を使います。
2021.03.24
1刷 012
テキストエディタ「Atom」をダウンロードするの「Atom」の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.03.24
1刷 016
1つ目の見出し
2刷
Xammp とは?
Xampp とは?
2020.08.21
1刷 018
「インストールと設定」本文
2刷
ここでダウンロードしたファイルを実行します。インストールが始まるので、案内に沿って 操作を進めてください。Windows では「現在のアカウントでは機能が制限されるかもしれな い」という警告が出ますが、「OK」を押します。ここから先はインストールが始まるまですべて 「Next」を選択します。途中、インストール先が表示されますので確認してください。デフォルト でWindows は「C:¥xampp」に、Mac は「/Application/XAMPP」にインストールされます。 インストールが終わると「Finish」ボタンが現れます。それを押すと言語を選択する画面が現 れるのでアメリカ国旗(英語)を選択してください。XAMPP のコントロールパネルが開きます。 Apache とMySQL の「Start」ボタンを押してください。正常に起動すれば次のようになります。 ------------------------------------------- 上記文章に差し替えます。 また、「Warning」の画面を削除します。 また、以下のMEMOも加えます ------------------------------------------- Mac 版は「Manage Servers」というタブをクリックして設定ページを開きます。 デザインは画像とは異なります。また、Mac 版はXampp のインストール方法も頻 繁に変更されていますので、その都度最新のインストール方法を検索してください。 次回以降、コントロールパネルを開くには Windows では「C:¥xampp¥xampp-control.exe」を、 Macでは「/Application/XAMPP/xamppfiles/manager-osx.app」を ダブルクリックして開きます。 学習用にこちらのファイルのショートカットを デスクトップに作っておくことをおすすめします。
2021.03.24
1刷 025
上から1~3行目
2刷
同じく、「File」メニューから「Save As…」を選択してください。これで「名前を付けて保存」することができます。ファ イル名は「sample.html」としてデスクトップ上に作成してください。
ショートカットの[Ctrl]([command])+[S]を使い、ファイル名を「sample.html」としてデスクトップ上に保存し てください。
2021.03.25
1刷 030
「ブラウザを使ってプログラムを動作させる」上から1行目
2刷
XAMPPの
Xamppの
2021.03.25
1刷 033
「文字列を連結する」の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.03.25
1刷 034
ATTENTION 下から2行目
2刷
と波カッコで変数を囲む必要があります。
と中括弧で変数を囲む必要があります。
2021.03.25
1刷 041
「入力フォームを作成する」上から5行目
2刷
「./」を入れておくと
「./」(カレントディレクトリ)を入れておくと
2021.03.25
1刷 041
「入力フォームを作成する」本文下から1行目
2刷
* 複数ファイルで構成されるプログラムで実行する場合、最初に実行するファイルからの相対位置となるため「./」はなくてもかまいません。実際の開発では「./」を入れて絶対位置を使いますが、本書は、次章以降、学習しやすいように相対で表記します。 上記注意書きを追加いたします。
2021.03.25
1刷 043
「POST データを受信する」の1つ目のCODE「confirm.php」の続き 上から4行目
2刷
<form action="complete.php" method="POST">
<form action="./complete.php" method="POST"> 同様に以下の箇所も修正します。 44ページ:「hidden を使ってデータを渡す」のCODE「confirm.php」上から1行目 46ページ:CODE「send.php」下から4行目 47ページ:CODE「confirm.php」下から7行目
2021.03.25
1刷 045
「Chromeのデベロッパーツールを使ってhiddenの中身を確認する」掲載の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.03.29
1刷 046
CODE「complete.php」の❶
2刷
$nameを
$user_nameを
2020.08.21
1刷 046
CODE「complete.php」の上から2行目
2刷
$name = $_POST['user_name'];
$user_name = $_POST['user_name']; 同様に以下の箇所も修正します。 47ページ CODE「confirm.php」上から2行目 CODE「complete.php」上から2行目

2021.03.29更新
2020.08.21
1刷 051
CODE「if.php」下から2行目
2刷
echo '入力した数値が違います';
echo '入力した数値が違います。';
2021.03.29
1刷 052
CODE「time.php」の下の文章 上から3行目
2刷
9章で詳しく扱います)。
11 章で詳しく扱います)。
2021.03.29
1刷 053
MEMO 上から2行目
2刷
date.timezoneの項目を探して
date.timezone=Europe/Berlin と書かれた行を探して
2021.03.29
1刷 053
MEMO 下から1行目
2刷
php.ini の設定を反映させるにはApache を再起動させる必要があります。 上記文章を加えます。
2021.03.29
1刷 054
MEMO 下から2行目
2刷
自身で使わないとしても他人の
自身で使わないとしても他者の
2021.03.29
1刷 055
CODE「condition1.php」7、8行目
2刷
}elseif($score >= 80 && $score< 100){   echo '優秀な点数です';
}elseif($score >= 80 && $score < 100){   echo '優秀な点数です。
2021.03.29
1刷 056
論理演算子の表 !の意味
2刷
否定( ではなかったら)
否定( ではなかったら、TRUE)
2021.04.02
1刷 058
CODE「nest2.php」の上から2.3行目
2刷
~省略~ }else{
~省略~ }elseif($attend===1){

2021.04.02更新
2018.03.28
1刷 063
CODE「validate.php」の上から7行目
2刷
}elseif(mb_strlen($movie) >= 20){
}elseif(mb_strlen($movie) > 20){
2020.08.21
1刷 074
練習①のCODEの見出し
2刷
pratice_for.php
pratice_for1.php
2018.04.17
1刷 076
「現在の年を取得する」の CODE「birth_form.php」の上から1行目
2刷
<select name="year" id="year">
<select name="year">

2021.04.02更新
2018.10.04
1刷 079
第6章 扉
2刷
Chapter3
Chapter6
2021.04.02
1刷 082
1つ目の「CODE」の見出し
2刷
: array_assoc1.php
array_assoc1.php
2021.04.02
1刷 082
1つ目のCODEの下から1行目
2刷
var_dump( );
var_dump($array);
2021.04.02
1刷 082
CODE「array_assoc2.php」の2行目
2刷
echo $array['name '];
echo $array['name'];

nameのあとのスペースは不要です。
2018.03.28
1刷 086
本文 上から1行目
2刷
$arrays[2] は$arrays の中に格納され「2」と名付けられた配列を表しています❷。
$arrays[1] は$arrays の中に格納され「1」と名付けられた配列を表しています❷。
2021.04.02
1刷 087
「HTML でテーブルを組む」のCODE「array_nijigen2.php」の続き 上から1行目
2刷
<tr><td>鈴木</td><th>テニス</th><th>sample@sample.com</th></tr>
<tr><td>鈴木</td><td>テニス</td><td>sample@sample.com</td></tr>
2021.04.02
1刷 087
2刷
2021.04.02
1刷 091
「コードを読んで流れを把握する」のCODE「checkbox_receive.php」下から4行目
2刷
</ul> <p>あなたの好きな色は<?php echo implode('と',$colors);?>です。</p> </body> </html>
</ul> </body> </html>>
2021.04.02
1刷 096
テーブルの図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.02
1刷 097
表「データ型の種類」の下の文章 上から2行目
2刷
varchar は PHP のstring に近い意味があります。
VARCHAR は PHP のstring に近い意味があります。 ・98ページ見出しの下 男性の吹き出し内の「varchar 」も「VARCHAR」に修正
2021.04.02
1刷 097
2つ目の表、インデックスの説明の上から1行目
2刷
設定した倍
設定した場合
2018.06.13
1刷 098
1つ目の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.02
1刷 099
本ページの「SQL 文の構造を確認する」に掲載しているコード
2刷
INSERT INTO `sample`.`user` (`id`, `name`, `age`, `email`) VALUES (NULL, '鈴木太郎', '26', ' sample1@sample1.com '); INSERT INTO sample.user (id, name, age, email) VALUES (NULL, '鈴木太郎', '26', 'sample@sample.com'); INSERT INTO user (id, name, age, email) VALUES (NULL, '中村花子', '45', ' sample2@sample2.com ');
INSERT INTO `sample`.`user` (`id`, `name`, `age`, `email`) VALUES (NULL, '鈴木太郎', 26, ' sample1@sample1.com '); INSERT INTO sample.user (id, name, age, email) VALUES (NULL, '鈴木太郎', 26, 'sample@sample.com'); INSERT INTO user (id, name, age, email) VALUES (NULL, '中村花子', 45, ' sample2@sample2.com '); ※26、45の後ろのシングルクォーテーションを削除します。
2021.04.02
1刷 099
「「SQL」のタブをクリックして下のような画面を出します。すると、以下のように表示されます。」の下の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.27
1刷 100
「SQL 文の構造を確認する」の続きに掲載しているコード
2刷
INSERT INTO user (id, name, age, email) VALUES (NULL, '佐藤次郎', '67', ' sample3@sample3.com '); INSERT INTO user (id, name, age, email) VALUES (NULL, '山本京子', '38', ' sample4@sample4.com ');
INSERT INTO user (id, name, age, email) VALUES (NULL, '佐藤次郎', 67, 'sample3@sample3.com'); INSERT INTO user (id, name, age, email) VALUES (NULL, '山本京子', 38, 'sample4@sample4.com'); ※67、38の後ろのシングルクォーテーションを削除します。
2021.04.02
1刷 102
CODE「sample.sql」3行目
2刷
`user` varchar(50) NOT NULL,
`name` varchar(50) NOT NULL,
2021.04.05
1刷 103
CODE「sample.sql」の続き 1行目
2刷
`age` INT(3) NOT NULL,
`age` int(3) NOT NULL,
2021.04.05
1刷 104
CODE「connect.php」の上から8~10行目
2刷
$sql = ""; $stmt = $dbh->prepare($sql); $stmt->execute();
削除

接続だけを確認する場合、以上3行は不要でした。エラーが出るので削除(またはコメントアウト)してお試しください。
2018.04.13
1刷 104
本文 上から2行目
2刷
POD
PDO
2018.05.14
1刷 105
「PHP とSQL でデータベースを操作する」本文1行目
2刷
さて、$sql に先ほど学習したSQL 文を格納して、、PHP からデータベースの操作が可能なことを確認しましょう。
さて、$sql という変数をつくり、先ほど学習したSQL 文を格納して、PHP からデータベースの操作が可能なことを確認しましょう。
2021.04.05
1刷 105
CODE「insert1.php」3行目
2刷
sample5@sample5.com')";
sample5@sample5.com ')";

「.com 」の後ろの空白を削除します。
2021.04.05
1刷 105
「PHP とSQL でデータベースを操作する」本文下から3行目
2刷
http://localhost/practice/7/connect.phpにアクセスすると
http://localhost/practice/7/insert1.phpにアクセスすると
2021.04.05
1刷 106
CODE「insert2.php」上から10行目
2刷
$sql = "INSERT INTO user (name, age) VALUE (:name, :age)";
$sql = "INSERT INTO user (name, age) VALUES (:name, :age)";
2021.04.05
1刷 107
CODE「insert2.php」の下の本文 下から3行目
2刷
9章で
11章で
2018.10.15
1刷 111
「SELECTで使用するコード一覧」のLIKEの例の項目
2刷
WHERE カラム名 LIKE '% 文字列%
WHERE カラム名 LIKE '% 文字列%'

2つ目の「%」の後ろにシングルクォーテーションを追加します。
2021.04.05
1刷 112
「1.送信ページを作る」の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.05
1刷 113
本文 下から2行目
2刷
7 章の5 で作成したselect2.php を修正してresearch_receive.php を作りましょう。
7 章の5 で作成したselect2.php を修正してsearch_receive.php を作りましょう。
2021.04.05
1刷 113
「送信ページを作る」の2つ目の見出し
2刷
現在の年を取得する
データベース接続用のコードを用意する
2018.05.14
1刷 114
「送信されたデータを取得する」で掲載しているコード 
2刷

「?>」を削除します。
2021.04.05
1刷 114
「プリペアドステートメント」の冒頭の文章3行
2刷
次は「LIKE」を使ったSQL 文を追加していきましょう。「LIKE」を使えば「~を含む」という ようなあいまい検索ができるようになります。次のコードのようになります。 ※上記文章に差し替えます。
2021.04.05
1刷 114
「送信されたデータを取得する」のCODEのファイル名
2刷
search_send.php
search_receive.php
2018.04.12
1刷 115
1つ目のCODE「search_receive.php」1~3行目
2刷
<?php $data = []; try{
$password = ''; $data = []; try{
2021.04.05
1刷 121
送信ページを作るの図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.03.24
1刷 126
CODE「pic_receive.php」下から7行目
2刷
echo '<a href="./sample8-3_send.php">戻る</a>';
echo '<a href="pic_send.php">戻る</a>';
2021.04.05
1刷 128
CODE「pic_receive.php」の❸
2刷
ドット以降の画像名を取得
拡張子名を取得
2021.04.05
1刷 131
「club テーブルを作成する」本文下から3行目
2刷
以下のように適当なデータを3~4件入れておいてください。
以下のように任意のデータを3~4件入れておいてください。
2021.04.05
1刷 132
「user テーブルにカラムを追加する」の続き 本文下から2行目
2刷
その後、適当に会員ごとのクラブIDを2や3に変更しておいてください。
その後、会員ごとのクラブIDを2や3に変更しておいてください。
2021.04.05
1刷 134
「テーブルを使って出力する」本文1行目
2刷
<table>タグを使って$dataの中身を出力するコードを追加しましょう。
<table>タグを使って$rowの中身を出力するコードを追加しましょう。
2021.04.05
1刷 134
CODE「member_profile.php」の❷
2刷
検索フォームもmethodをPOSTに設定する
検索フォームもmethodをGETに設定する
2021.04.05
1刷 135
「存在しないID に対する処理を組む」本文下から3行目
2刷
「else:」「endif;」という記述ができます❷。
「else:」「endif;」という記述ができます❷❸。
2021.04.05
1刷 138
「ATTENTION」の下から2行目
2刷
9章で
11章で
2020.08.21
1刷 138
「COLUMN画像アップロードとWeb サーバ」内の図 一時的なフォルダの下の文章
2刷
通常は「xampp¥tmp」 画像データは プログラム終了時に解除
通常は「xampp¥tmp」 画像データは プログラム終了時に削除
2021.04.05
1刷 138
COLUMN「画像アップロードとWeb サーバ」下から4行目
2刷
XAMMPではフォームからの送信時に
Xamppではフォームからの送信時に
2021.04.05
1刷 144
表「繰り返しを表現する構文」の「*」の例
2刷
「pl」
「pol」

アスタリスクは0文字以上の任意の文字のため
2019.02.21
1刷 146
練習①、②のCODEの見出し
2刷
practice8-1.php practice8-2.php
practice9-1.php practice9-2.php ②の問題文の「practice8-2.php」も「practice9-2.php」に訂正します。
2020.08.21
1刷 148
CODE「phone_number.php」の続き 下から2行目の注釈
2刷
位置を「var_dump($result3);」の後ろに修正。  また❶を❷に修正します。
2021.04.05
1刷 155
「検索しやすいよう文字列を整える」のCODE「violation.php」下から6行目
2刷
if($flag > 0){ echo '禁止ワードは含まれています。'; }else{ echo '問題のない文字列です。'; }
if($flag === 0){ echo '禁止ワードは含まれていません。'; }else{ echo '禁止ワードが含まれています。'; }
2021.04.12
1刷 158
COLUMN「マニュアルの読み方」下から4行目
2刷
真偽値である「TRUE」や「1FALSE」が返ってきたりすることもあります。
真偽値である「TRUE」や「FALSE」が返ってきたりすることもあります。

2021.4.12更新
2018.04.17
1刷 160
本文「上記2 カ所の設定を以下のように修正します。」の下のCODE「php.ini」の上から3行目
2刷
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

「-t」はToやCcなどヘッダーに含まれる相手すべてに送信するという意味があります。メール送信の命令に対してこちらのexeファイルが実行されることになります。
2020.08.21
1刷 160
本文下から3行目
2刷
パスに「"C:\xampp\mailtodisk\mailtodisk.exe"」を設定します。
パスに「"\"C:\xampp\sendmail\sendmail.exe\" -t"」を設定します。
2020.08.21
1刷 161
MEMO内のCODE「php.ini」
2刷
;sendmail_path = "¥"C:¥xampp¥mailtodisk¥mailtodisk.exe"
;sendmail_path = "C:¥xampp¥mailtodisk¥mailtodisk.exe"
2021.04.12
1刷 162
「メールを送信する」本文上から5行目
2刷
送信を試す場合は、送信先はご自身の実アドレスを使用してください。以降もメール送信を含むコードにおける送信先は全て実アドレスに置き換える必要があります。 上記文章を追加します。
2021.04.12
1刷 175
「フォームを準備してPOST データを受信する」CODE「contact.php」の上から5行目と下から5行目 
2刷
上から5行目:$inquery = $_POST['inquery']; 下から5行目:<p><textarea name="inquery"></textarea></p>
上から5行目:$inquery = $_POST['inquiry']; 下から5行目:<p><textarea name="inquiry"></textarea></p> ※inqueryをinquiryに修正します。

以下の箇所に掲載しているCODE「contact.php」内の「inquery」も「inquiry」に訂正します。
・176ページ
「メールアドレスのバリデーション機能を作る」
上から1行目:$inquery = $_POST['inquery'];

・177ページ
「確認メールを送信する」
上から3行目:$inquery =<< 上から6行目:{$inquery}
上から9行目:if(mb_send_mail($email, $subject, $inquery, $headers) === FALSE){

・178ページ
「エラーや結果を表示する」
上から6行目:<p><textarea name="inquery"></textarea></p>

・179ページ
「コードを呼んで流れを把握する」
上から3行目:$inquery = $_POST['inquery'];
上から15行目:$inquery =<< 上から18行目:{$inquery}
上から21行目:if(mb_send_mail($email, $subject, $inquery, $headers) === FALSE){

・180ページ
「コードを呼んで流れを把握する」の続き
上から2行目:<p><textarea name="inquery"></textarea></p>
2020.08.21
1刷 184
本文上から2行目
2刷
html_escape がどんな役割かを記述する前に、独自関数を使おうとしているのですから。
html_escapeの定義がそれを使用するコードより後に記述されています。
2021.04.12
1刷 184
図の下の本文 上から2行目
2刷
これにより、人が理解できる言語から機会が理解できる言語へと変換されます。
これにより、人が理解できる言語から機械が理解できる言語へと変換されます。
2018.06.13
1刷 187
「グローバル変数とローカル変数」上から2行目
2刷
以下のコードを書いてください。
以下のコードをご確認ください。
2021.04.12
1刷 187
「グローバル変数とローカル変数」下から1行目
2刷
helloMessage($word) により「太郎」という文字列が関数へ渡されます。
hello_message($word) により「太郎」という文字列が関数へ渡されます。
2021.04.12
1刷 193
「require_once( ) とinclude_once( )」のCODE「board.php」上から2行目
2刷
require_once('./functions.php');
require_once('functions.php'); 以下に掲載しているのCODE「board.php」内の同コードも同じく修正します。 ・194ページ 「board.php の処理の流れを作る」に掲載。1行目のコード。 ・198ページ 「コードを読んで流れを把握する」の続きに掲載。2行目のコード。
2021.04.12
1刷 194
「バリデーションとデータ挿入」のCODE「board.php」の上から1行目
2刷
$dbh = getDbConnect();
$dbh = get_db_connect();
2018.11.06
1刷 195
「出力用のデザイン部分を組む」CODE「view.php」の下から2行目
2刷
<td><?php ech0 $row['created'];?></td>
<td><?php echo $row['created'];?></td>
2018.10.12
1刷 196
CODE「view.php」の下の文章 上から3行目
2刷
html_escape( ) を使用しましょう。
ただし、$row['created'] はフォームからの入力値ではなく、date( ) 関数で生成した値なのでエスケープの必要はありません。 「html_escape( ) を使用しましょう。」の後ろに上記文章を追加します。
2021.04.12
1刷 198
「コードを読んで流れを把握する」CODE「functions.php」下から9行目
2刷
function select_comments($dbh) { $sql = "SELECT name, comment, created FROM board";
function select_comments($dbh) { $data = []; $sql = "SELECT name, comment, created FROM board";
2021.04.12
1刷 199
「コードを読んで流れを把握する」CODE「view.php」上から10行目
2刷
<td><?php echo html_escape($row['created']);?></td>
<td><?php echo $row['created'];?></td>
2021.04.12
1刷 203
「クッキーにデータを保存する」 CODE「cookie_check.php」の下の文章 2行目
2刷
クッキーデータは以下のように表示されるはずです。
クッキーデータは以下のように表示されるはずです(環境により、表示される文字が異なる場合があります)。
2021.04.14
1刷 205
「セッションに値を保存する」CODE「session_set.php」上から4~5行目
2刷
$_ SESSION ['cart']['desk_01'] = 3; $_ SESSION ['cart']['chair_07'] = 5;
$_SESSION['cart']['desk_01'] = 3; $_SESSION['cart']['chair_07'] = 5; ※ $_とSESSIONの間とSESSION['cart']の間のスペースを削除します。

2021.04.14更新
2018.04.25
1刷 207
「結果:アクセス後デベロッパーツールより表示」の図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.14
1刷 207
「セッションデータを出力する」CODE「session_check.php」上から2.3行目
2刷
$profile = $_SESSION ['profile']; $cart = $_SESSION ['cart'];
$profile = $_SESSION['profile']; $cart = $_SESSION['cart'];

$_SESSIONの後ろのスペースを削除します。

208ページ
「上書きと削除」に掲載しているコードの上から2.3行目の
$_SESSIONの後ろのスペースも同様に削除します。
2021.04.14
1刷 208
「セッション全体を削除する」CODE「session_delete.php」下から5行目
2刷
if (isset($_COOKIE[$session_name]) === TRUE) {
if (isset($_COOKIE[$session_name])){

スペースと「=== TRUE」を削除します。

以下のコードも同様に修正します。
・211ページ
「HTML で商品一覧画面を作る」CODE「shop.php」の④の注釈がついているコード
・212ページ
CODE「shop.php」の続き 上から1行目
・215ページ
「カート削除後すぐに元のページへ戻る」CODE「delete.php」上から5行目
・216ページ
「コードを読んで流れを把握する」CODE「shop.php」の続き
 2箇所の「カートに追加済みか判定」の赤枠内の各1行目
・241ページ
「ログアウトとリダイレクト」のCODE「logout.php」下から5行目
2021.04.14
1刷 210
「03 実習 ショッピングカートを作る」の下の男性の吹き出し
2刷
Part2 の最終課題だね。
Chapter12 の最終課題だね。
2021.04.14
1刷 213
「カートのデータを取得し表示する」CODE「cart.php」下から9行目
2刷
<?php for($i = 1; $i <10; $i++):?>
<?php for($i = 1; $i < 10; $i++):?>

「<」と「10」の間にスペースを入れます。
以下のコードも同様に修正します。

・218ページ
「コードを読んで流れを把握する」CODE「cart.php」
「変更ボタンのフォーム」の赤枠内 上から3行目
2021.04.14
1刷 226
CODE「signup.php」の上から3~4行目
2刷
require_once('./functions/db_helper.php'); require_once('./functions/extra_helper.php');
require_once('./helpers/db_helper.php'); require_once('./helpers/extra_helper.php'); 以下も同様に訂正します。すべて上から3~4行目のコードです。 P.230 CODE「signup.php」 P.233 CODE「login.php」 P.236 CODE「login.php」 P239 CODE「member.php」 P.242 CODE「member.php」

P.222の案内通りだとfunctionsではなくhelpersが正しいです。
2020.08.21
1刷 227
「メールアドレスの重複を調べる関数」CODE「db_helper.php」上から2行目
2刷
$sql = "SELECT COUNT(id) FROM members where email = :email";
$sql = "SELECT COUNT(id) FROM members WHERE email = :email";
2021.04.16
1刷 227
「ビューファイルを用意する」のCODE「signup_view.php」の下から5行目
2刷
</table>
削除

</table>は不要です。サンプルが正しいものとなります。
2018.06.14
1刷 228
「入力データを挿入する関数を作る」CODE「db_helper.php」上から4行目
2刷
$sql = "INSERT INTO members (name, email, password, created) VALUE (:name,
$sql = "INSERT INTO members (name, email, password, created) VALUES (:name,
2021.04.16
1刷 229
「データを挿入する」のCODE「signup.php」下から1行目
2刷
include_once('./views/signup_view.php');
include_once('views/signup_view.php'); ※「./」を削除します。

以下のコードも同様に「./」を削除します。
・231ページ
「コードを読んで流れを把握する」のCODE「signup.php」の続き 1行目
・234ページ
「コントローラであるlogin.php を用意する」のCODE「login.php」の続き 下から1行目
・236ページ
「ログイン機能を装備する」のCODE「login.php」の続き 下から1行目
・237ページ
「コードを読んで流れを把握する」のCODE「login.php」の続き 下から1行目
・239ページ
「コントローラであるmember.php を用意する」のCODE「member.php」の下から1行目
・240ページ
「自作関数を使用する」のCODE「member.php」 下から1行目
・242ページ
「コードを読んで流れを把握する」のCODE「member.php」下から1行目
2021.04.15
1刷 229
本文 下から1行目
2刷
あえて間違えてバリデーションが効いているかも試してみるとよいです。
あえてメール欄にメールアドレスでないものを入力するなどしてバリデーションが効いているかも試してみるとよいです。
2021.04.16
1刷 229
下から4行目「signup.php にアクセスして1件入力してみてください。」の下のsignup.phpの図
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.28
1刷 231
「MEMO もっと知りたい! 会員登録の仕組み」の「・会員のPCデータや活動状況を記録する」下から3行目
2刷
ログイン認証を作っていくことが大事になります。
ログイン認証を作っていくことが大事です。
2021.04.16
1刷 234
「ビューファイルを用意する」のCODE「login_view.php」上から9行目~13行目
2刷
<form action="" method="POST"> <p>メールアドレス:<input type="text" name="email"> <?php echo htmlEscape($errs['email']); ?></p> <p>パスワード:<input type="password" name="password"> <?php echo htmlEscape($errs['password']); ?></p>
<form action="login.php" method="POST"> <p>メールアドレス:<input type="text" name="email"> <?php echo html_escape($errs['email']); ?></p> <p>パスワード:<input type="password" name="password"> <?php echo html_escape($errs['password']); ?></p>

オブジェクトのメソッドはキャメルケース(htmlEscape)となるのが一般的ですが、この場合、関数なのでスネークケース(html_escape)となります。
2021.04.21
1刷 240
「全会員データを取得する関数を用意する」のCODE「b_helper.php」上から2行目
2刷
function select_members($dbh) { $sql = "SELECT name FROM members";
function select_members($dbh) { $data = []; $sql = "SELECT name FROM members";

$data = [];を追加します。
2021.04.21
1刷 245
「CSRF(クロスサイトリクエストフォージェリ)対策 送信ページ 」のCODE「send_token.php」
2刷

(画像クリックで拡大)

(画像クリックで拡大)

注釈❷と❸を追加し、青枠部分の「./」を削除します。
2021.04.21
1刷 247
「バリデーションのエラー文にも配慮が必要」下から2行目
2刷
例えば、Yahoo! Japan ではログイン認証をメールアドレスの確認、パスワードの確認と2 段階でチェックするようになりました。
上記文章を削除します。
2021.04.21
1刷 256
下から1つ目の見出し
2刷
http://wpdocs.osdn.jp/ プラグインの作成
https://wpdocs.osdn.jp/ プラグインの作成
2021.04.21
1刷 269
「ひとまず使ってみる」下から3行目
2刷
本書の学習が終わっていれば、オンラインチューターでは、応用編からスタートできます。オブジェクト指向を扱っていますので、行き詰まったらご相談ください。
上記文章を削除します。
2021.04.21
1刷 275
「あどがき」3つ目の段落 1行目
2刷
しかし、プログラミングの教育はまだ聡明期です。
しかし、プログラミングの教育はまだ黎明期です。
2021.04.21
1刷 280
奥付 クレジット部分
2刷
イラスト  くにともゆかり

イラストレータの名前が抜けていました。お詫び申し上げます。
2018.02.27