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

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


形式:
書籍
発売日:
ISBN:
9784798153377
定価:
2,618(本体2,380円+税10%)
仕様:
B5変・280ページ
カテゴリ:
Webプログラミング
キーワード:
#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 エラーの対処法

付属データはこちら

会員特典はこちら

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。
この商品の「よくある質問」はありません。

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

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

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

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

書籍の種類:

書籍の刷数:

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

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

最終更新日:2023年06月20日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
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も加えます ------------------------------------------- [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」下から9行目 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 '優秀な点数です。

$scoreと<の間に半角スペースを入れ、
「優秀な点数です」の末尾に「。」を追加します。
2021.03.29
1刷 056
CODE「condition2.php」2行目のコメント
3刷
②1-100までの数値がランダムに代入される
②0-100までの数値がランダムに代入される
2023.06.20
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刷
Chapter03
Chapter06
2021.04.02
1刷 082
1つ目のCODEの見出し
2刷
: array_assoc1.php
array_assoc1.php
2021.04.02
1刷 082
1つ目のCODEの最下行
2刷
var_dump( );
var_dump($array);
2021.04.02
1刷 082
2つ目の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 文の構造を確認する」に掲載している3つのコード
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
2刷

(画像クリックで拡大)

(画像クリックで拡大)
2021.04.27
1刷 100
図の下に掲載しているコード
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刷 105
CODE「insert1.php」
3刷
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO user (id, name, age, email) VALUES (NULL, '田中三郎', '28', ' sample5@sample5.com')";
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO user (id, name, age, email) VALUES (NULL, '田中三郎', '28', ' sample5@sample5.com')"; $stmt = $dbh->prepare($sql); $stmt->execute();

最後の2行を追加します。
2023.06.20
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
「送信されたデータを取得する」のCODE
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
図の上の段落 下から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内の図 「一時的なフォルダ」の下の文章
2刷
通常は「xampp¥tmp」 画像データは プログラム終了時に解除
通常は「xampp¥tmp」 画像データは プログラム終了時に削除
2021.04.05
1刷 138
COLUMN 下から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($result2);      ❶この書き方には対応させていない
var_dump($result3);      ❷この書き方には対応させていない 引出線の位置をコードの最下行に修正。  また❶を❷に修正します。
2021.04.05
1刷 155
CODE「violation.php」下から6~2行目
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
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つ目のCODE「contact.php」
1行目:$inquery = $_POST['inquery'];

・177ページ 上のCODE
3行目:$inquery =<<
6行目:{$inquery}
9行目:if(mb_send_mail($email, $subject, $inquery, $headers) === FALSE){

・178ページ 上のCODE
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ページのCODE
2行目:<p><textarea name="inquery"></textarea></p>
2020.08.21
1刷 184
本文2行目
2刷
html_escape がどんな役割かを記述する前に、独自関数を使おうとしているのですから。
html_escapeの定義がそれを使用するコードより後に記述されています。
2021.04.12
1刷 184
図の下の段落1~2行目
2刷
これにより、人が理解できる言語から機会が理解できる言語へと変換されます。
これにより、人が理解できる言語から機械が理解できる言語へと変換されます。
2018.06.13
1刷 187
本文2行目
2刷
以下のコードを書いてください。
以下のコードをご確認ください。
2021.04.12
1刷 187
本文 最下行
2刷
helloMessage($word) により「太郎」という文字列が関数へ渡されます。
hello_message($word) により「太郎」という文字列が関数へ渡されます。
2021.04.12
1刷 190
CODE「functions.php」1行目
3刷
function get_db_Connect() {
functions get_db_connect() {
2023.06.20
1刷 193
CODE「board.php」2行目
2刷
require_once('./functions.php');
require_once('functions.php'); 以下に掲載しているのCODE「board.php」内の同コードも同じく修正します。 ・194ページ 1つ目のコード1行目 ・198ページ 2つ目のコード 2行目
2021.04.12
1刷 194
2つ目の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>

「ech0」を「echo」に修正。
2018.10.12
1刷 196
コード下の段落3行目
2刷
html_escape( ) を使用しましょう。
ただし、$row['created'] はフォームからの入力値ではなく、date( ) 関数で生成した値なのでエスケープの必要はありません。 「html_escape( ) を使用しましょう。」の後ろに上記文章を追加します。
2021.04.12
1刷 196
「MEMO」3行目
3刷
改行コードがに変換されます。
改行タグに変換されます。
2023.06.20
1刷 198
1つ目のコード 下から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」の下の段落1~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ページ
CODE「shop.php」の❹の注釈がついているコード
・212ページ
上のコード1行目
・215ページ
CODE「delete.php」5行目
・216ページ
2箇所の「カートに追加済みか判定」の赤枠内の各1行目
・241ページ
CODE「logout.php」下から5行目
2021.04.14
1刷 210
見出し下の男性の吹き出し
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ページ
「変更ボタンのフォーム」の赤枠内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」 P.239 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」
3刷

(画像クリックで拡大)

(画像クリックで拡大)

※コードは画像化しています
2023.06.20
1刷 227
本文1行目
3刷
デザインは極力排除してシンプルなHTML で構成しました。
デザインは極力排除してシンプルなHTML で構成しました。 $errs はPOST の場合にのみ変数が初期化されるので、echo の前にisset() で変数がセットされているか確認しています。

文章を追加します。
2023.06.20
1刷 227
CODE「signup_view.php」の下から5行目
2刷
</table>
削除

</table>は不要です。サンプルが正しいものとなります。

※同じ部分に3刷で修正が入りました。最新の正誤情報もご覧ください。
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ページ
コード1行目
・234ページ
1つ目のコード最下行
・236ページ
1つ目のコード最下行
・237ページ
コード最下行
・239ページ
CODE「member.php」の下から1行目
・240ページ
「自作関数を使用する」のCODE「member.php」最下行
・242ページ
CODE「member.php」最下行
2021.04.15
1刷 229
本文 最下行
2刷
あえて間違えてバリデーションが効いているかも試してみるとよいです。
あえてメール欄にメールアドレスでないものを入力するなどしてバリデーションが効いているかも試してみるとよいです。

この2刷での修正によって、該当箇所は230ページに移動しました。
2021.04.16
1刷 229
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「db_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
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

感想・レビュー

鉄骨構造 さん

2019-04-21

なんとなく雰囲気は分かった。とても分かりやすい本だったと思う。

さぼてん さん

2020-02-19

恥ずかしながら実務から入ったのでやっぱ入門から読まなきゃだめだよな〜と思って読みました。わかりやすかったです。でもまじで初めての人には難しいと思います。ただ一つ疑問だったのがechoにhtml書いたら見にくくなるのはわかりますが、結局html側にphp書くのとなんら変わらないのではと思いました。どちらも見にくいと思うのですが、どうやって住み分けしてるんでしょう。宣言してるだけマシなのかな。まだ私が知らない何かがあるのか?一人で作業するのと複数人で作業するのとじゃ思考が全然違くておもろい。