わかりやすいと大好評のHead Firstシリーズに、新たな仲間が登場。本書では、Webアプリケーション開発者、Web管理者にとって必須の知識、テクニックを、基礎からやさしくわかりやすく解説します。さらにPHPとMySQLを使って実際に手を動かしながらWebアプリケーションを開発していきます。セキュリティや正規表現など高度なトピックもカバー。すべてのサンプルコードを日本語化し、巻末に書き下ろしの付録「PHP & MySQL日本語対応」を収録するなど、日本語対応もばっちりです。関西弁のQ&Aなど衝撃的かつ画期的な試みも多数あり、とにかく「楽しめる」一冊です。
Head First PHP & MySQL
―頭とからだで覚えるWebアプリケーション開発の基本
Lynn Beighley, Michael Morrison 著、佐藤 嘉一 訳
- TOPICS
- Head First , Programming , Web , HTML/CSS , PHP
- 発行年月日
- 2010年03月
- PRINT LENGTH
- 672
- ISBN
- 978-4-87311-444-6
- 原書
- Head First PHP & MySQL
- FORMAT
関連ファイル
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
1刷正誤表
Head First PHP & MySQL1刷正誤表
2010年7月31日更新
|
目次
序章 この本を読むのにふさわしい人は? みなさんが思っていることはわかっています メタ認知:自分の思考について考える 脳を服従させるために「みなさん」ができること まず最初に読んでください テクニカルレビューチーム 謝辞 1章 静的なページに命を吹き込む HTMLは静的で退屈です PHPは Webページに命を吹き込んでくれます フォームにより全ストーリーを得られる フォームは HTMLでできています HTMLフォームは問題を抱えています HTMLはクライアント上で動作します PHPはサーバ上で動作します PHPスクリプトはサーバで動作します PHPを使ってフォームのデータにアクセスする PHPスクリプトはサーバ上にいなければならないのです! サーバが PHPをHTMLに変えます コーディング上の PHP規則 完璧な変数名を見つける $_POSTはフォームのデータを保持する特別な変数です $_POSTはフォームのデータをスクリプトに運んでくれます PHPでメッセージ本文を作成する 単なるテキストもフォーマットできます…ちょっとだけ 改行には二重引用符の文字列が必要です オーウェンに飛ばすメールメッセージを組み立てる 変数はメールの要素や部品を格納しています PHPでメールメッセージを送る オーウェンにメールが来始めました 2章 MySQLとつなげる オーウェンの PHPフォームはちゃんと動きますが、ちゃんとしすぎです… MySQLはデータの格納に優れています オーウェンには MySQLデータベースが必要です MySQLのデータベースとテーブルを作る INSERT文の動作 テーブルのデータを見るには SELECTを使う PHPにウンザリ SQLの処理をやらせる PHPによりデータはオーウェンの Webフォーム上を渡り歩く PHPからデータベースに接続する PHPスクリプトでデータを挿入する データベースとお話しする PHPの関数を使う $_POSTがフォームのデータを供給します オーウェンはデータを選別する必要が出てきました オーウェンのファング探しはやっと軌道に乗りました 3章 データベースを作ってそれを使う エルビスストアーを本格的に開店します 清野君にはアプリケーションが必要です 清野君のアプリケーション設計を視覚化する 何事もテーブルから始まる MySQLサーバにコンタクトを取る 清野君のメール用データベースを作る さっきのデータベースの中にテーブルを作る データを定義する必要があります MySQLのデータ型たちを一堂に会しましょう 問い合わせ文でテーブルを作る 使う(use)前にデータベースを USEする DESCRIBEでテーブル構造を明らかにする 清野君はデータ格納準備完了です メール追加用のスクリプトを作る 清野君のアプリケーションにはもう 1つ必要です メール送信用スクリプトにおけるボルトとナット 最初にすべきこと、データを捕まえる mysqli_fetch_array()で問い合わせ結果を取ってくる WHILE(しばらく)の間ループする whileでデータをループする メールが来ました…清野君から! 時には出て行く人も DELETEでデータを取り除く WHEREを使って特定のデータをDELETEする 間違って削除してしまうというリスクを最小化する 4章 現実的で実用的なアプリケーション 清野君はいらついている顧客を作り出してしまいました 清野君を…清野君から守る ちゃんとしたフォームデータを要求する メール送信用画面の妥当性検証の背後にある論理 IFを使って判断を下せます 真偽値のテスト IFは等価性以外もチェックします PHP関数で変数の妥当性を検証する 複数の条件を論理積と論理環でテストする フォームのユーザにフィードバックが必要です 必要に応じて PHPから出たり入ったりする フラグを用いて重複のコードをなくす HTMLフォームは一度だけコーディングする 自分自身を参照するフォーム スクリプトでフォームの actionを指す フォームが「提出」されたかどうかをチェックする まだムカついているユーザがいます テーブル行は一意に識別できるべきです 主キーは一意性を強要する チェックボックスから顧客 IDへ foreachにより配列をループする 5章 ファイルに格納されたデータを使う 仮想ギタリストはコンペ好きです 証拠は写真の中にある アプリケーションにイメージを格納する必要があります ギターウォーズにイメージファイルアップロードを計画する ハイスコアデータベースは ALTERしなければいけません ユーザからイメージをもらうにはどうすればよい? データベースにイメージファイル名をぶち込む アップロードされたファイルの名前を見分ける アップロードしたファイルはどこへ行った? アップロードされたイメージファイル用に家を作る 共有データは共有しなければならない 共有スクリプトデータは requireする require_onceは「挿入」と考える 順序がハイスコアのすべて ギターウォーズのトップに勝者の栄誉を与える HTMLとCSSでトップスコアをフォーマットする 小さなイメージだけを許可する ファイルの妥当性検証により、アプリはもっと強固になります 管理用ページを計画する 管理用ページにスコア削除リンクを付ける スクリプト同士でコミュニケーションをとることができます GETとPOSTについて GETとPOSTとハイスコアの削除と 6章 アプリケーションにセキュリティを与える 音楽が死んだ日 うじゃうじゃいる大群をセキュリティイで監禁する ギターウォーズの管理者用ページを守る HTTP認証にはヘッダが必要です ヘッダを丸裸にする PHPでヘッダをコントロールする ヘッダによる認証 認証用スクリプトを作る ギターウォーズエピソード II:ハイスコアクローンの攻撃 足し算による引き算 セキュリティには人間が要ります ギターウォーズを検査するための計画 ALTERで承認の置き場所を作る 未承認のスコアには価値がない 100万点ハック すべて検査済み…? 彼女は正確には一体何をしたのか? コメントで MySQLをごまかす スコア追加用フォームは SQLを注入されたのです SQL注入からデータを守る (パラメタ付きの)安全な INSERT フォームの妥当性検証にはやり過ぎということはありません 7章 個人向けの Webアプリを作る 正反対が魅力的とよく言われます ミスマッチサイトは個人の情報がすべてです ミスマッチサイトにはログインが必要です ログイン用のデータベースを準備する ログイン・インタフェースを作る パスワードを SHA()で暗号化する パスワードを比較する HTTP認証でユーザとしてログインする 新しいユーザをサインアップするためのフォーム クッキーの中にあるものは? PHPでクッキーを使う ログインのフローを再考する クッキー強化版ログイン ログアウトとはクッキーを削除することを意味します セッションはクライアントに依存しません セッションデータを追跡する ミスマッチサイトをセッションで刷新する セッションを使ってログアウトする セッションへの進化を完了させる ユーザは嬉しく思っていません セッションは短命です… …でもクッキーなら永遠に続きます! セッション+クッキー=すごいログイン永続性 7.5章 ダブったコードをなくす テンプレートでミスマッチサイトを作り直す テンプレートを使ってミスマッチサイトを再構築する ミスマッチサイトがまた完成しました…しかもはるかによい構成で 8章 データをコントロールし、世界をコントロールする 完全なミスマッチにする ミスマッチさせるにはデータがすべてです スキーマでデータベースをモデル化する 複数のテーブルを結び付ける 外部キーの動作 テーブルは行と行でマッチします 1行が複数行に対応する 多対多で行をマッチさせる ミスマッチのアンケートを作る データベースにレスポンスを入れる データでフォームを駆動する ミスマッチ用のアンケートフォームを作る 正規化に向けてちょっともがく 正規化するならアトムを考える 正規化されたデータベースへの 3ステップ ミスマッチのデータベースを変更する ミスマッチサイトは本当に正規化されたのでしょうか? 問い合わせ文の中の問い合わせ文の中の問い合わせ文の中の … みんなテーブルをつなぎましょう ドットで結ぶ 内部結合でまだたくさんのことができます テーブルやカラムに愛称をつける 結合で救出する ミスマッチを成功に導く 5つのステップ ユーザの「ミスマッチ性」を比較する 必要なものは forループです 9章 文字列とカスタム関数 割のいい危険な仕事は見つけにくいものです いまの検索だとエラーに対するゆとりが全くありません SQL問い合わせ文は LIKEを使って柔軟にできます 文字列を単語単位に爆破( explode)する implode()は部分文字列から文字列を作ります 検索文字列の前処理 不要な検索文字を置き換える 問い合わせ文にはちゃんとした検索語が必要です 空でない要素を新しい配列にコピーする 時には文字列の一部しか必要ないこともあります 部分文字列はどちらの端からでも取り出せる 複数の問い合わせ文で結果をソートできます 関数でコードを再利用する カスタム関数で問い合わせ文を作る カスタム関数はどこまでカスタムか? SWITCHは IFよりずっと多くの判断をします build_query()にソート機能を加える 結果をページに割り付けることができます LIMITで必要な行だけ持ってくる LIMITでページリンクをコントロールする ページ割り付けデータを追跡する ページ割り付け用の変数をセットアップする 問い合わせ文を書き直して結果をページ割り付けする ページ案内用のリンクを作る すべてを合わせて検索用スクリプトを完成させる 完成版検索用スクリプト、続き… 10章 正規表現 リスキージョブサイトから履歴書(レジュメ)を送付できるようにする データがどうあるべきかを決める 電話番号のパターンを定式化する 正規表現でパターンにマッチさせる メタ文字を使ってパターンを作る 文字のクラスでパターンを改良する preg_match()でパターンをチェックする 電話番号データを標準化する 不要な文字を捨てる PHPを使ってドメインをチェックする 11章 シンジケーションと Webサービス オーウェンはファングについての言葉が欲しいのです UFOによる誘拐データを人々にプッシュする RSSは Webコンテンツを人々にプッシュしてくれます RSSというのは実は XMLです データベースからニュースリーダへ RSSを視覚化する どうすればニュース即配信が可能となるか? RSSフィードを動的に作る RSSフィードへのリンク 百万の言葉より一枚のビデオを以て語らしめる Webコンテンツを他のサイトから引っ張ってくる YouTubeビデオとシンジケーションする YouTubeビデオリクエストを作る オーウェンは RESTリクエストを組み立てる準備ができました YouTubeは XMLで話します YouTube XMLレスポンスを分解する XMLのビデオデータを視覚化する オブジェクトで XMLデータにアクセスする XML要素から PHPオブジェクトへ XMLデータをオブジェクトで掘り起こす 名前空間なしではダメです! ファング目撃情報上昇中 ビデオを見やすく配置する ビデオデータを表示用に配置する 付録i 残飯 本書の内容を PHP4とMySQL関数に後方互換で対応させる 付録ii 開発環境をセットアップする PHP開発環境を作る 自分の持ち物を調べる Webサーバがありますか? PHPがありますか?バージョンは? MySQLがありますか?バージョンは? サーバをセットアップする Windowsで VertrigoServを起動する ApacheとPHPの動作を確認する MySQLの動作を確認する Macに XAMPPをインストールする Macで XAMPPを起動する ApacheとPHPの動作を確認する 付録iii PHP & MySQL日本語対応 PHP日本語スクリプトを作る UTF-8のファイルを作る MySQL 文字コードセットを確認する 文字コードセットを UTF-8だらけにする 日本語データを入力してみる MySQLターミナルで日本語を入力する場合の注意事項 SELECT問い合わせ文でカラムがずれます