すぐに美味しいサンプル&テクニック PHP逆引きレシピ 第2版(鈴木 憲治 安藤 建一 山田 直明 山本 義之 浅野 仁 櫻井 雄大)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. すぐに美味しいサンプル&テクニック PHP逆引きレシピ 第2版

すぐに美味しいサンプル&テクニック PHP逆引きレシピ 第2版







形式:
書籍
発売日:
ISBN:
9784798119878
定価:
3,080(本体2,800円+税10%)
仕様:
A5・896ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
シリーズ:
逆引きレシピ

最新PHPに対応 さらにレシピを拡充し、より便利に

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 の起動
レンタルサーバーでのデータベース作成
レンタルサーバーでのデータベース削除
ローカル環境でのメール送信処理の開発テスト

本書は付属データの提供はございません。

お問い合わせ

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

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

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

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

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

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

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

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

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

書籍の種類:

書籍の刷数:

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

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

最終更新日:2016年04月26日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 117
NOTE囲みの最後に次の段落を追加
2刷
ただし、chdir()関数でカレントディレクトリは変更可能ですので、読み込んだライブラリなどにより変更されている可能性があります。

追加情報
2014.01.28
1刷 118
1つ目コード囲み
2刷
require_once realpath(__DIR__) . '/foo.php';
require_once __DIR__ . '/foo.php';
2014.01.28
1刷 118
2つ目のコード囲み
2刷
require_once realpath(__DIR__) . '/../bar/bar.php';
require_once __DIR__ . '/../bar/bar.php';
2014.01.28
1刷 136
網掛けのコメント部分3行目
2刷
// す。\d{4}$は
// す。\d{4}\zは
2013.10.24
1刷 184
NOTE最終行
2刷
システムを使います。
システム(ただし、Windowsを除く)を使います。
2014.11.18
1刷 262
ページの最後にNOTEを追加
3刷
【NOTE】in_array()関数、array_search()関数での自動型変換
 in_array()関数、array_search()関数での値の比較は、第3引数にtrueを指定しない場合は「==」演算子によるものです。つまり、違う型の値を調べる場合、自動的に型変換が起こるので注意してください。型が一致するかも含めて比較する場合は、第3引数にtrueを指定します。型変換については、レシピ027、レシピ281を参照してください。

追加情報
2016.04.26
1刷 342
リストの4行目
3刷
// TCPDF、FPDIをインクルードします(パスを適切に設定してください)。
// サイトの設定ファイルを読み込みます☆レシピ302☆。 require_once '../../../../conf/site_conf.php';
// TCPDF、FPDIをインクルードします(パスを適切に設定してください)。
2016.04.26
1刷 342
リストの12行目
3刷
$url = 'http://' . $_SERVER['HTTP_HOST'] . '/php-recipe/04/03/kison-pdf.pdf';
$url = BASE_URL . '04/03/kison-pdf.pdf';
2016.04.26
1刷 416
本文下から3行目
2刷
MyClass
NSClass
2014.11.18
1刷 451
最後のリスト
2刷
require realpath(__DIR__) . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/autoload.php';
2014.11.18
1刷 468
条件式
2刷
{if is_array($value))}
{if is_array($value)}

閉じ丸括弧を1つ削除
2015.01.16
1刷 505
本文の最後に次の段落を追加
2刷
 ここでは紙面の都合で省略していますが、必要に応じてCSRF対策[レシピ289]も追加してください。

追加情報
2014.01.28
1刷 536
本文の最後に次の段落を追加
2刷
 ここでは紙面の都合で省略していますが、必要に応じてCSRF対策[レシピ289]も追加してください。

追加情報
2014.01.28
1刷 554
下のリスト 2行目
3刷
// h()関数☆レシピ221☆を読み込みます☆レシピ041☆。
// サイトの設定ファイルを読み込みます☆レシピ302☆。 require_once '../../../../conf/site_conf.php';
// h()関数☆レシピ221☆を読み込みます☆レシピ041☆。
2016.04.26
1刷 556
リスト 4~7行目
3刷
$dirname = dirname($_SERVER['SCRIPT_NAME']); $dirname = ($dirname == DIRECTORY_SEPARATOR) ? '' : $dirname; $uri = 'http://' . $_SERVER['SERVER_NAME'] . $dirname . '/mailform.php';
$uri = BASE_URL . '07/02/mailform.php';
2016.04.26
1刷 606
本文の最後に次の段落を追加
2刷
 ここでは紙面の都合で省略していますが、必要に応じてCSRF対策[レシピ289]も追加してください。

追加情報
2014.01.28
1刷 687
上部のリスト囲み、上から7行目
2刷
<form method="post" action="pdo_insert_image_upload.php" enctype="multipart/
<form method="post" action="pdo_insert_image_upload.php" enctype="multipart/[改行マーク]

改行マーク抜け
2014.01.28
1刷 689
本文の最後(コラム囲みの上)に次の段落を追加
2刷
 ここでは紙面の都合で省略していますが、必要に応じてCSRF対策[レシピ289]も追加してください。

追加情報
2014.01.28
1刷 790
下の2つのリスト
2刷
mysqli_real_escape_string($_POST['id']), mysqli_real_escape_string($_POST['password']));
mysqli_real_escape_string($link, $_POST['id']), mysqli_real_escape_string($link, $_POST['password']));

両方のリストに同じコードがあります。
2014.11.18

感想・レビュー

まゆ さん

2016-02-05

「読んだ本」じゃないけど。半年前に買ってずっとよく見てる本。おそらく初心者の上くらいの人にちょうどいい感じ。それ以降でもいいけど、それ以降の人はもうちょっとって思う。私もう初心者じゃないんだ!カレンダー表示のところで、こんなパッケージを使うと便利ですよって言ってるけど、パッケージを使わずに作るパターンの参考コードも見たいんです。途中で行き詰ったときに開くと時既に遅しですもん。でも逆引きとしては結構いいと思うので、今度は関数辞典みたいなのになったので、よくあるエラーと解決方法一覧がわかりやすいのが欲しい。

おっくん さん

本と言うか、関数リファレンスみたいなモンですけど、まあ辞書とか大辞典的なものかなと。 コレがないと円滑に作業できない。ネットで検索する手間が省けます。