鈴木 憲治 著
安藤 建一 著
山田 直明 著
山本 義之 著
浅野 仁 著
櫻井 雄大 著
PHP初級者が中級者にレベルアップするための実践的なプログラミングレシピ集『PHP逆引きレシピ』の改訂第2版です。第2版では、最新のPHP(5.4/5.5)に対応したほか、レシピ全体の大幅な見直しを行い、データベースやテスト関連のレシピ拡充など、さらに内容充実・より便利になりました。
サンプルプログラムのスマートフォン対応も行っています。実践で即役立つテクニックと開発ノウハウ、つまづきやすい・ハマりやすいポイントを徹底解説した“PHPユーザー必携の一冊”です。
第1章 準備
1.1 サーバー環境
001 サーバーのPHP情報を知りたい
002 php.iniとは?
003 文字エンコードを統一したい
004 日本語関連の設定をしたい
1.2 開発環境
005 PHPマニュアルを使いたい
006 開発環境を作りたい
007 XAMPPをインストールしたい
008 MAMPをインストールしたい
009 WindowsにNetBeansをインストールしたい
010 Mac OS XにNetBeansをインストールしたい
1.3 本番環境
011 レンタルサーバーのPHPを設定したい
012 本番環境でのエラー出力の設定方法は?
第2章 PHPの基本構文
2.1 変数
013 変数と文字列を出力したい
014 echo <<<END、$変数 = <<<ENDって何ですか?
015 変数がセットされているかどうか調べたい
016 変数の型を調べたい
017 (int)、(string) って何ですか?
018 null って何ですか?
019 =& って何ですか?
020 環境変数の情報を取得するには?
2.2 定数
021 定数を使用するには?
022 定義済みの定数を知りたい
2.3 条件分岐
023 条件で処理を分岐するには?
024 switch文の使い方を知りたい
025 「条件式 ? 式1 : 式2」って何ですか?
026 2つの値を比較するには?
027 ==と===、!=と!==の違いは?
028 &&、||、! って何ですか?
2.4 繰り返し処理
029 PHPの繰り返し構文を知りたい
030 繰り返し処理の途中でループを抜けたい
031 繰り返し処理の途中でスキップしたい
2.5 関数
032 関数を定義したい
033 デフォルト引数値を指定したい
034 関数の引数に付いた& って何ですか?
035 引数の数が変わる関数を定義したい
036 変数のスコープを知りたい
037 静的変数とは?
038 関数が定義済みかどうか調べたい
039 関数から複数の値を受け取りたい
040 無名関数って何ですか?
2.6 ファイルのインクルード
041 他のファイルを取り込んで利用したい
2.7 エラー処理
042 エラーレベルを設定したい
043 エラーメッセージを送信したい
044 ユーザーエラーを発生させたい
第3章 PHPの基本テクニック
3.1 文字列
045 文字列の一部分を取り出したい
046 特定の文字列が含まれているか調べたい
047 文字列を置き換えたい
048 正規表現によるパターンマッチをしたい
049 正規表現による複雑な文字列の置き換えをしたい
050 文字列を繰り返し表示したい
051 アルファベットを小文字から大文字に変換したい
052 アルファベットを大文字から小文字に変換したい
053 全角英数字を半角に変換したい
054 半角英数字を全角に変換したい
055 カナ文字を全角かなや半角カナに変換したい
056 文字列の前後の空白を削除したい
057 文字列の長さを調べたい
058 文字エンコードを変換したい
059 ハッシュ値を求めたい
060 ランダムな文字列を生成したい
061 ユニークなIDを作成したい
3.2 数値
062 数値の丸め(四捨五入)、切り上げ、切り捨てをしたい
063 数値を3桁ごとにカンマ区切りしたい
064 数値を必ず小数点以下まで表示させたい
065 乱数を生成したい
3.3 日付時刻
066 日付や時刻の一部を取り出して使いたい
067 日付の表示形式を変えたり、日付の加減算をしたい
068 現在のタイムスタンプを取得したい
069 日付をタイムスタンプに変換したい
070 文字列表現の日付をタイムスタンプに変換したい
071 日付が正しいかどうかチェックしたい
072 指定した日付の曜日を求めたい
073 月末日を求めたい
074 締め日を求めたい
075 「第3月曜日」を求めたい
076 指定した日付の年度を求めたい
077 西暦を和暦にしたい
078 生年月日から現在の年齢を求めたい
079 カレンダーを表示したい
080 日付セレクトメニューを表示したい
3.4 配列
081 配列を使いたい
082 配列の内容をデバッグ表示したい
083 配列を結合したい
084 配列を並べ替えたい
085 配列を逆順にしたい
086 連想配列を値で並べ替えたい
087 連想配列を添え字で並べ替えたい
088 配列の先頭に値を追加したい
089 配列の末尾に値を追加したい
090 配列の指定箇所に値を追加したい
091 配列の先頭を取り除きたい
092 配列の末尾を取り除きたい
093 配列の指定範囲を取り除きたい
094 配列の指定範囲を置き換えたい
095 配列の一部を取り出したい
096 配列の中から条件に合うデータのみを抜き出した配列を作りたい
097 配列に値が存在するか調べたい
098 配列の値を一度に複数の変数へセットしたい
099 配列のすべての要素を一括処理したい
100 配列を連結して1つの文字列にしたい
101 カンマやスペース区切りの文字列を分割して配列にしたい
3.5 PHPの設定
102 PHPの設定を調べたい
103 PHPの設定を一時的に変更したい
3.6 ベンチマーク
104 ベンチマークを取得したい
105 関数の平均実行時間を測定したい
3.7 コマンドライン
106 コマンドラインから実行したい
第4章 ファイルとディレクトリ
4.1 ファイル
107 ファイルを扱う処理の流れは?
108 日別のログファイルを作成したい
109 一時ファイルにデータを書き込みたい
110 fopen()関数を使わずにファイルにデータを書き込みたい
111 ファイルのデータを取得したい
112 ファイルから指定バイト数ずつ取得したい
113 ファイルのデータをまとめて取得したい
114 ファイルを使ってアクセスカウンタを作成したい
115 ファイルの最終更新時刻を取得したい
116 ファイルのサイズを取得したい
117 ファイルの拡張子を取得したい
118 パス名からファイル名を取得したい
119 ファイルが存在するか調べたい
120 ファイルが読み取り可能か調べたい
121 ファイルが書き込み可能か調べたい
122 ファイルをコピーしたい
123 ファイルを削除したい
124 ファイルの種類を判定したい
4.2 ディレクトリ
125 ディレクトリを作成したい
126 パス名からディレクトリ名を取得したい
127 絶対パス名を取得したい
128 ディレクトリが使用可能な容量を取得したい
129 ディレクトリを削除したい
130 ディレクトリ内のディレクトリやファイル名を取得したい
131 ディレクトリ内の画像を一覧表示したい
4.3 PDFファイル
132 PDFファイルを生成したい
133 PDFにリンク文字列を書き込みたい
134 PDFに表を書き込みたい
135 PDFに直線を書き込みたい
136 PDFに画像を挿入したい
137 テキストファイルをPDFに変換したい
138 既存のPDFファイルを元にPDFファイルを生成したい
4.4 CSVファイル
139 CSVファイルを読み込みたい
140 CSVファイルを出力したい
4.5 画像ファイル
141 画像を作成したい
142 画像をファイルとして保存したい
143 既存ファイルから画像を生成したい
144 画像のサムネイルを生成したい
145 画像にテキストを追加したい
146 画像に点を描き込みたい
147 画像のサイズを取得したい
4.6 グラフ
148 グラフを生成したい
149 折れ線グラフを生成したい
150 棒グラフを生成したい
151 円グラフを生成したい
152 組織図を生成したい
第5章 クラスとオブジェクト
5.1 クラスの基礎
153 クラスとは?
154 クラスを使いたい
155 「$this」や「->」とは何ですか?
156 コンストラクタとは?
157 クラスの継承とは?
5.2 クラスの活用
158 静的メソッド、静的プロパティって何ですか?
159 オートロードって何ですか?
160 「self::」「parent::」「static::」とは何ですか?
161 クラス内で定数を使用したい
162 マジックメソッドって何ですか?
163 オブジェクトを保存したい
164 タイプヒンティングとは何ですか?
165 抽象クラスとは何ですか?
166 インターフェイスとは何ですか?
5.3 名前空間
167 名前空間とは何ですか?
168 名前空間の記述を短くしたい
5.4 例外処理
169 例外処理とは何ですか?
170 複数の例外を分けて処理したい
171 通常のエラーを例外で処理したい
5.5 SPL
172 SPL って何ですか?
173 オブジェクトを配列のように扱いたい
174 イテレータって何ですか?
第6章 ライブラリ
6.1 PEARの使い方
175 PEARを使いたい
176 PEARをアップグレードしたい
6.2 Composerの使い方
177 Composer って何ですか?
178 Composerをインストールしたい
179 Composerでパッケージを管理したい
6.3 Smartyの使い方
180 Smartyを使いたい
181 テンプレートを分割したい
182 フィルタを使いたい
183 繰り返し処理したい
184 条件分岐したい
185 スーパーグローバル変数を取得したい
186 メールアドレスの難読化でスパム対策したい
6.4 フレームワーク
187 フレームワークって何ですか?
第7章 Webプログラミング
7.1 フォームの基礎
188 フォームを使いたい
189 テキストボックスを使いたい
190 テキストエリアを使いたい
191 パスワードボックスを使いたい
192 セレクトメニューを使いたい
193 ラジオボタンを使いたい
194 チェックボックスを使いたい
195 隠しフィールドを使いたい
196 ファイル名入力ボックスを使いたい
197 ボタンを使いたい
198 HTMLで必須入力のチェックをしたい
199 日付フィールドを使いたい
200 テキストボックスにプレースホルダを表示させたい
201 テキストボックスに入力候補を表示させたい
7.2 フォームの実際
202 複数選択可能なセレクトメニューやチェックボックスの値を受け取りたい
203 日付入力のためのフォームを生成したい
204 データ入力時のみデータを処理するには?
205 特定の文字列を含むかどうかチェックしたい
206 文字数や桁数をチェックしたい
207 数値かどうかをチェックしたい
208 金額にカンマを付けたい
209 ファイルの拡張子をチェックしたい
210 メールアドレスの形式をチェックしたい
211 配列からラジオボタンを生成したい
212 データベースからセレクトメニューを生成したい
213 簡単なログインフォームを作成したい
214 メール送信フォームを作成したい
215 magic_quotes_gpcがOnでもOffでも動作するようにしたい
7.3 入力データの加工
216 タグを取り除きたい
217 複数の検索キーワードで検索したい
218 複数選択されたデータを検索したい
219 「YYYY/MM/DD」形式の日付を利用したい
220 パスワードをハッシュ化したい
7.4 データ出力時の処理
221 安全にブラウザで値を表示したい
222 URLの一部に日本語を利用したい
223 改行タグを改行文字の前に挿入したい
7.5 Cookie
224 データをCookieに保存したい
225 Cookieのデータを読み取りたい
7.6 セッション
226 セッションを使いたい
227 セッション名を取得/設定したい
228 セッションIDを取得したい
229 セッション変数を使いたい
230 セッション変数を破棄したい
231 セッションCookieのパラメータを設定したい
232 セッションを破棄したい
7.7 ファイルアップロード
233 複数の画像ファイルをアップロードしたい
234 ファイルをダウンロードさせたい
7.8 メール処理
235 添付ファイル付きのメールを送りたい
7.9 ネットワーク
236 IPアドレスからホスト名、ホスト名からIPアドレスを取得したい
7.10 HTTPヘッダー
237 HTTPヘッダーを送信したい
238 別のページに飛ばしたい
239 キャッシュを無効にしたい
7.11 Web API
240 JSON形式のデータを返すWeb APIを作りたい
241 RSSやXML文書を解析したい
242 JSON形式のデータを返すWeb APIを利用したい
7.12 その他
243 URLの構成要素を解析したい
244 処理を一時停止したい
第8章 データベース
8.1 phpMyAdmin
245 phpMyAdminを使いたい
246 データベースを作成したい
247 データベースユーザーを作成したい
248 テーブルを作成したい
249 カラムを変更したい
250 カラムを追加したい
251 カラムを削除したい
252 レコードを挿入したい
253 レコードを表示したい
254 レコードの編集をしたい
255 レコードを削除したい
256 テーブルを削除したい
257 データベースを削除したい
258 データベースユーザーを削除したい
259 SQL文を実行したい
8.2 データベース(PDO)
260 データベースに接続したい
261 複数のレコードを取得したい
262 1行だけレコードを取得したい
263 データベースに登録済みかどうかチェックしたい
264 レコードをオブジェクトとして取得したい
265 新規レコードを作成したい
266 イメージデータを格納したい
267 レコードを更新したい
268 レコードを削除したい
269 クエリ結果のメモリを解放したい
270 テーブルを作成したい
第9章 自動テスト
9.1 ユニットテスト
271 ユニットテストとは何ですか?
272 PHPUnitを使いたい
273 複数のテストデータを提供しまとめてテストしたい
274 フィクスチャとは何ですか?
275 プライベートメソッドをテストしたい
276 データベースをテストしたい
277 テストカバー率を知りたい
9.2 ブラウザテスト
278 Seleniumでブラウザテストをしたい
第10章 セキュリティ
10.1 セキュリティ対策の基本
279 セキュリティ対策の基本を知りたい
280 入力値の検証方法を知りたい
281 文字列を比較する場合の注意点を知りたい
282 正規表現の注意点を知りたい
10.2 PHPの設定
283 セーフモードとは?
284 より安全なphp.ini設定を知りたい
10.3 セキュリティ対策
285 パラメータ改竄とは?
286 XSSとは?
287 XSS対策をしたい
288 XSS対策についてさらに詳しく知りたい
289 CSRFとは?
290 クリックジャッキングとは?
291 nullバイト攻撃とは?
292 SQLインジェクションとは?
293 OSコマンドインジェクションとは?
294 ディレクトリトラバーサルとは?
295 インクルード攻撃とは?
296 ファイルアップロードの注意点を知りたい
297 evalインジェクションとは?
298 メールヘッダーインジェクションとは?
299 Cookieを安全に利用したい
300 セッションハイジャック対策をしたい
301 セッション固定化攻撃を防ぎたい
302 SSL利用時にセッションを安全に利用したい
303 キャッシュからの情報漏洩とは何ですか?
304 Ajaxのセキュリティについて知りたい
305 JSONのセキュリティについて知りたい
第11章 トラブルシューティング
11.1 エラー表示など
306 エラーが表示された場合は?
307 ステップ実行でデバッグしたい
308 ページが真っ白で何も表示されない
309 大量のNoticeエラーが表示される
310 「Warning: Cannot modify header information ...」エラーが表示される
311 特定の処理においてエラーを抑制したい
11.2 文字化け
312 日本語のWebページが文字化けする
313 フォームから送信された値が文字化けしたり表示されない
314 フォームから送信された「申込」が「申¥込」になる
315 日時だけが文字化けする
COLUMN
「¥w」「¥d」「¥s」などの定義済み文字クラスの注意
call-time pass-by-reference 機能について
Eclipse PDT とPleiades
HTML5 から<input>タグに新しく追加された入力タイプ
HTML5 でのフォームの新属性のブラウザの対応状況
HTML5 で強化された入力ルールを指定するさまざまな属性
ini_get ( ) 関数、ini_get_all ( ) 関数を使ったテクニック
MAMP のphp コマンドをターミナルから使えるようにパスを通す
MAMP のセキュリティ
mbstring で使う文字エンコード名
mbstring とは?
MVC の定義におけるモデルとフレームワークのActive Record
MySQL での自動型変換
MySQL のroot ユーザーのパスワード設定
MySQL の照合順序
MySQL への接続API
Notice エラー
PHP におけるオブジェクト指向
PHP の終了タグ
require、include、require_once、include_once の違い
SmartyのXSS 対策について
Strict エラーやDeprecated エラーが出力されてしまう
switch 文の比較
Windows でのchm ファイル
XAMPP のphp コマンドをコマンドプロンプトから使えるようにパスを通す
XAMPP のセキュリティ
暗号論的擬似乱数生成器
インクルードファイルの流出
エスケープシーケンス、特殊文字とは?
大きなデータをデータベースに格納する場合のPHP とMySQL の設定
おすすめのSFTP クライアント
言語構造とは?
条件の数値はハードコードせず変数に追い出す
スーパーグローバル変数
脆弱性情報の収集
どのバージョンのPHP を使うべき?
パーミッション
配列と連想配列そして配列のキー
ファイルのアップロード処理に関するphp.ini の設定項目
プリペアドステートメント
文字列比較で気をつけるべきこと
ユーザーからの入力をもとにDDL を動的に生成することの危険性
例外処理の必要性
レンタルサーバーでのphpMyAdmin の起動
レンタルサーバーでのデータベース作成
レンタルサーバーでのデータベース削除
ローカル環境でのメール送信処理の開発テスト
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 117 NOTE囲みの最後に次の段落を追加 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 118 1つ目コード囲み |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 118 2つ目のコード囲み |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 136 網掛けのコメント部分3行目 |
2刷 | 未 |
|
2013.10.24 | ||||||
1刷 | 184 NOTE最終行 |
2刷 | 未 |
|
2014.11.18 | ||||||
1刷 | 262 ページの最後にNOTEを追加 |
3刷 | 未 |
|
2016.04.26 | ||||||
1刷 | 342 リストの4行目 |
3刷 | 未 |
|
2016.04.26 | ||||||
1刷 | 342 リストの12行目 |
3刷 | 未 |
|
2016.04.26 | ||||||
1刷 | 416 本文下から3行目 |
2刷 | 未 |
|
2014.11.18 | ||||||
1刷 | 451 最後のリスト |
2刷 | 未 |
|
2014.11.18 | ||||||
1刷 | 468 条件式 |
2刷 | 未 |
|
2015.01.16 | ||||||
1刷 | 505 本文の最後に次の段落を追加 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 536 本文の最後に次の段落を追加 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 554 下のリスト 2行目 |
3刷 | 未 |
|
2016.04.26 | ||||||
1刷 | 556 リスト 4~7行目 |
3刷 | 未 |
|
2016.04.26 | ||||||
1刷 | 606 本文の最後に次の段落を追加 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 687 上部のリスト囲み、上から7行目 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 689 本文の最後(コラム囲みの上)に次の段落を追加 |
2刷 | 未 |
|
2014.01.28 | ||||||
1刷 | 790 下の2つのリスト |
2刷 | 未 |
|
2014.11.18 |
まゆ さん
2016-02-05
「読んだ本」じゃないけど。半年前に買ってずっとよく見てる本。おそらく初心者の上くらいの人にちょうどいい感じ。それ以降でもいいけど、それ以降の人はもうちょっとって思う。私もう初心者じゃないんだ!カレンダー表示のところで、こんなパッケージを使うと便利ですよって言ってるけど、パッケージを使わずに作るパターンの参考コードも見たいんです。途中で行き詰ったときに開くと時既に遅しですもん。でも逆引きとしては結構いいと思うので、今度は関数辞典みたいなのになったので、よくあるエラーと解決方法一覧がわかりやすいのが欲しい。
おっくん さん
本と言うか、関数リファレンスみたいなモンですけど、まあ辞書とか大辞典的なものかなと。 コレがないと円滑に作業できない。ネットで検索する手間が省けます。