<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8632639320900298058</id><updated>2024-09-25T11:27:09.637+09:00</updated><title type='text'>【文字化け】PHP + MySQL + CakePHP【対策】</title><subtitle type='html'>マジ→）無謀にも2012年1月10日に未経験からPHPを勉強開始。PHP歴1年未満の、よちよちプログラマーからの情報発信！！信じるか信じないかは、あなた次第！！とりあえずPHPの文字化けの解決策を12通り紹介します。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-1155379789826120244</id><published>2012-02-25T09:00:00.000+09:00</published><updated>2012-03-09T00:32:25.862+09:00</updated><title type='text'>CakePHPブログチュートリアル</title><content type='html'>&lt;span style=&quot;color: red;&quot;&gt;&lt;strong&gt;今までどこにもなかった『CakePHPブログチュートリアル』の説明の決定版！！&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------&lt;br /&gt;
ちなみにこの記事は&lt;br /&gt;
&lt;a href=&quot;http://book.cakephp.org/ja/view/876/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB&quot;&gt;http://book.cakephp.org/ja/view/876/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB&lt;/a&gt;&lt;br /&gt;
上記サイト　11 開発例　11.1 CakePHPブログチュートリアル　に沿って、CakePHPの導入例を説明します。&lt;br /&gt;
-------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
＜どこよりもやさしいCakePHPチュートリアルの操作手順書＞&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;1)&amp;nbsp;CakePHPをダウンロード&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
CakePHPをダウンロードして、サーバーにアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;CakePHPのダウンロードをしたサイト　→　&lt;a href=&quot;http://cakephp.jp/&quot;&gt;http://cakephp.jp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;今回はCakePHPの &quot;&lt;span style=&quot;color: red;&quot;&gt;ver.1.3.14安定版&lt;/span&gt;&quot; を使用します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;ダウンロードしたフォルダ名を&quot;&lt;span style=&quot;color: red;&quot;&gt;cakephp&lt;/span&gt;&quot;に変更します。（←本当はフォルダ名は何でもいいです。）&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&quot;&lt;span style=&quot;color: red;&quot;&gt;cakephp&lt;/span&gt;&quot;フォルダをサーバーのドキュメントルート内にFTPソフト等を使用してアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;アップロードすると以下のようなディレクトリ構成になります。&lt;br /&gt;
/cakephp&lt;br /&gt;
/app&lt;br /&gt;
/cake&lt;br /&gt;
/plugins&lt;br /&gt;
/vendors&lt;br /&gt;
.gitignore&lt;br /&gt;
.htaccess&lt;br /&gt;
index.php&lt;br /&gt;
README&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;&lt;strong&gt;2)&amp;nbsp;ブログデータベースの作成&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
MySQL（データベース）にテーブルを作成します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;MySQLがインストールしてあって、さらにデータベースが存在するものとして話を進めます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;『phpMyAdmin』にログインして、データベース内で以下のSQL文を実行することで&quot;&lt;span style=&quot;color: red;&quot;&gt;posts&lt;/span&gt;&quot;テーブルの作成をします。&lt;br /&gt;
CREATE TABLE posts (&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; title VARCHAR(50),&amp;nbsp;&amp;nbsp;&amp;nbsp; body TEXT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; created DATETIME DEFAULT NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; modified DATETIME DEFAULT NULL&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;『phpMyAdmin』にログインして、先ほどと同じデータベース内にて&lt;br /&gt;
以下のSQL文を実行することで&quot;&lt;span style=&quot;color: red;&quot;&gt;posts&lt;/span&gt;&quot;テーブル内にサンプルとなるレコードを3行追加します。&lt;br /&gt;
INSERT INTO posts (title,body,created)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (&#39;タイトル&#39;, &#39;これは、記事の本文です。&#39;, NOW());&lt;br /&gt;
INSERT INTO posts (title,body,created)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (&#39;またタイトル&#39;, &#39;そこに本文が続きます。&#39;, NOW());&lt;br /&gt;
INSERT INTO posts (title,body,created)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (&#39;タイトルの逆襲&#39;, &#39;こりゃ本当に面白そう！うそ。&#39;, NOW());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8; color: black;&quot;&gt;3)&amp;nbsp;Cakeのデータベース設定&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
CakePHP側にMySQL（データベース）への接続情報の設定をします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/config/database.php.default&lt;/span&gt;　のファイルをコピーし、コピーしたファイル名を&quot;&lt;span style=&quot;color: red;&quot;&gt;database.php&lt;/span&gt;&quot;にします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;コピーした&quot;&lt;span style=&quot;color: red;&quot;&gt;database.php&lt;/span&gt;&quot;は同一ディレクトリに配置します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&quot;database.php&quot;のファイルを開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;76～85行目に記述されている$default配列にCakePHPがデータベースに接続する設定が記述されてます。&lt;br /&gt;
host, login, password, databaseにMySQLに接続する設定を記述しす。&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;//&#39;endoding&#39; =&amp;gt; &#39;utf8&#39;&lt;/span&gt;,　となってるのを&quot;//&quot;を削除し　&lt;span style=&quot;color: red;&quot;&gt;&#39;encoding&#39; =&amp;gt; &#39;utf8&#39;&lt;/span&gt;,　にします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://www/.ドメイン名/cakephp/　を開いてみて、下のようなイメージが表示されたら&quot;DB接続&quot;が成功です。&lt;br /&gt;
※上記の一連操作はサーバー側で操作するのではなく、ローカル側で操作したものをアップロードしても大丈夫です。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VeBqQlXdrVao26Q43Eq4svJLYXSHpSayziLL3Co304XaQuKTZFLB3mYdiYgNEsB5tQQuaj8sOkPZ5laJqRmuHQpYclgHRYwfOlhDj20gfDes-qHYUcvf9FW3HLG-U_GG_Y1MT5KDf0I/s1600/PHP%25E6%25A7%258B%25E6%2596%2587_18236_image003.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;351&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VeBqQlXdrVao26Q43Eq4svJLYXSHpSayziLL3Co304XaQuKTZFLB3mYdiYgNEsB5tQQuaj8sOkPZ5laJqRmuHQpYclgHRYwfOlhDj20gfDes-qHYUcvf9FW3HLG-U_GG_Y1MT5KDf0I/s400/PHP%25E6%25A7%258B%25E6%2596%2587_18236_image003.png&quot; width=&quot;400&quot; yda=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;4)&amp;nbsp;追加の設定&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
セキュリティハッシュ用のランダムな文字列を、初期値から任意の文字列に変更をします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/config/core.php&lt;/span&gt;　のファイルを開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;204行目の　Configure::write(&#39;Security.salt&#39;, &#39;任意の文字列&#39;);　を変更します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;209行目の　Configure::write(&#39;Security.cipherSeed&#39;, &#39;任意の文字列&#39;);　を変更します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/tmp&lt;/span&gt;　のディレクトリのパーミッションを書き込みできるように変更します。&lt;br /&gt;
※上記の一連操作はサーバー側で操作するのではなく、ローカル側で操作したものをアップロードしても大丈夫です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;5)&amp;nbsp;mod_rewriteについて&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
画面表示がおかしい場合の対処方法です。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;問題なく表示できたので割愛します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;もし問題が起こったら他の人に助けを求めてください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;6)&amp;nbsp;Postモデルの作成&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
サンプル（投稿記事）の作成とアップロードをします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;post.php&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Post extends AppModel{&lt;br /&gt;
&amp;nbsp;var $name = &#39;Post&#39;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;post.php&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/models&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;7)&amp;nbsp;Postsコントローラの作成&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
コントローラ側のロジックの作成とアップロードをします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class PostsController extends AppController {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var $name = &#39;Posts&#39;;&lt;br /&gt;
　　function index() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;posts&#39;, $this-&amp;gt;Post-&amp;gt;find(&#39;all&#39;));&lt;br /&gt;
　&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/controllers&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;8)&amp;nbsp;Postビューの作成&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
ビューファイルの作成とアップロードと記事の表示をします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;index.ctp&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;h1&amp;gt;ブログの投稿&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Id&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;タイトル&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;作成日&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ここから、$posts配列をループして、投稿記事の情報を表示 --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php foreach ($posts as $post): ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;id&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php echo $html-&amp;gt;link($post[&#39;Post&#39;][&#39;title&#39;], &quot;/posts/view/&quot;.$post[&#39;Post&#39;][&#39;id&#39;]); ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;created&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/views&lt;/span&gt;ディレクトリ内に新たに&lt;span style=&quot;color: red;&quot;&gt;/posts&lt;/span&gt;ディレクトリを作成します。&lt;br /&gt;
※ディレクトリ構成は多分こんな感じになります。&lt;br /&gt;
/app&lt;br /&gt;
/views&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /element&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /errors&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /heopers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /layouts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /pages&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;/posts　←コレを作成&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /scaffolds&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;index.ctp&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/views/posts&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://ドメイン名/cakephp/posts/index　を開くと下記のようなイメージが表示されます。&lt;br /&gt;
※ただし、タイトル部分のリンクをクリックすると、エラーが表示されます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/controllers&lt;/span&gt;ディレクトリ内にある&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class PostsController extends AppController {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var $name = &#39;Posts&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function index() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;posts&#39;, $this-&amp;gt;Post-&amp;gt;find(&#39;all&#39;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;function view($id　= null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;Post-&amp;gt;id = $id;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;post&#39;, $this-&amp;gt;Post-&amp;gt;read());&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;view.ctp&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;h1&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;title&#39;]?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Created: &amp;lt;?php echo $post[&#39;Post&#39;][&#39;created&#39;]?&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;body&#39;]?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;view.ctp&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/views/posts&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://ドメイン名/cakephp/posts/index　再度を開き、タイトル部分のリンクをクリックします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;今度はエラーではなく、下のようなイメージが表示されるようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;9)&amp;nbsp;記事の追加&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
記事の投稿をできるようにします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/controllers&lt;/span&gt;ディレクトリ内にある&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class PostsController extends AppController {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var $name = &#39;Posts&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function index() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;posts&#39;, $this-&amp;gt;Post-&amp;gt;find(&#39;all&#39;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function view($id = null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;Post-&amp;gt;id = $id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;post&#39;, $this-&amp;gt;Post-&amp;gt;read());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; function add() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!empty($this-&amp;gt;data)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($this-&amp;gt;Post-&amp;gt;save($this-&amp;gt;data)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;flash(&#39;記事は保存されました。&#39;,&#39;/posts&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;10)&amp;nbsp;データのバリデーション&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
記事の投稿をできるようにします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;add.ctp&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;h1&amp;gt;記事の追加&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo $form-&amp;gt;create(&#39;Post&#39;);&lt;br /&gt;
echo $form-&amp;gt;input(&#39;タイトル&#39;);&lt;br /&gt;
echo $form-&amp;gt;input(&#39;本文&#39;, array(&#39;rows&#39; =&amp;gt; &#39;3&#39;));&lt;br /&gt;
echo $form-&amp;gt;end(&#39;記事の保存&#39;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;add.ctp&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/views/posts&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;以下の操作は11:投稿記事の削除の作業後に行うと確認できます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://ドメイン名/cakephp/posts/index　再度を開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;画面左上に新たに表示された&quot;記事の追加&quot;というリンクをクリックします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://www/.ドメイン名/cakephp/posts/add　を開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;/app/modelsディレクトリ内の&quot;&lt;span style=&quot;color: red;&quot;&gt;post.php&lt;/span&gt;&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Post extends AppModel {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var $name = &#39;Post&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;var $validate = array(&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;titile&#39; =&amp;gt; array(&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;rule&#39; =&amp;gt; array(&#39;minLength&#39;, 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;body&#39; =&amp;gt; array(&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;rule&#39; =&amp;gt; array(&#39;minLength&#39;, 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;11)&amp;nbsp;投稿記事の削除&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
記事の削除をできるようにします。&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/controllers&lt;/span&gt;ディレクトリ内にある&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class PostsController extends AppController {&lt;br /&gt;
&amp;nbsp;var $name = &#39;Posts&#39;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function index() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;posts&#39;, $this-&amp;gt;Post-&amp;gt;find(&#39;all&#39;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function view($id = null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;Post-&amp;gt;id = $id;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;set(&#39;post&#39;, $this-&amp;gt;Post-&amp;gt;read());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; function add() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!empty($this-&amp;gt;data)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($this-&amp;gt;Post-&amp;gt;save($this-&amp;gt;data)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;flash(&#39;記事は保存されました。&#39;,&#39;/posts&#39;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; function delete($id) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;Post-&amp;gt;del($id);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;flash(&#39;id:&#39;.$id.&#39;の記事は削除されました。&#39;, &#39;/posts&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
・&amp;nbsp;/app/views/postsディレクトリ内の&quot;index.ctp&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;h1&amp;gt;ブログの投稿&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;p&amp;gt;&amp;lt;?php echo $html-&amp;gt;link(&#39;記事の追加&#39;, &#39;/posts/add&#39;); ?&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Id&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;タイトル&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;th&amp;gt;操作&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;作成日&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ここから、$posts配列をループして、投稿記事の情報を表示 --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php foreach ($posts as $post): ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;id&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php echo $html-&amp;gt;link($post[&#39;Post&#39;][&#39;title&#39;], &quot;/posts/view/&quot;.$post[&#39;Post&#39;][&#39;id&#39;]); ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php echo $html-&amp;gt;link(&#39;削除&#39;, &quot;/posts/delete/{$post[&#39;Post&#39;][&#39;id&#39;]}&quot;, null, &#39;削除しますか？&#39;); ?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;created&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://ドメイン名/cakephp/posts/index　再度を開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;操作の削除のリンクをクリックします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;&lt;strong&gt;12)&amp;nbsp;投稿記事の編集&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
記事の編集をできるようにします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/controllers&lt;/span&gt;ディレクトリ内にある&quot;&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;&quot;ファイルを下記のソースを追記します。&lt;br /&gt;
※追記する位置はコレまでの&lt;span style=&quot;color: red;&quot;&gt;posts_controller.php&lt;/span&gt;への追記手順を参照してください。&lt;br /&gt;
※頭を使わないと覚えないから、作業の意味がない。&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;function edit($id = null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;Post-&amp;gt;id = $id;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (empty($this-&amp;gt;data)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;data = $this-&amp;gt;Post-&amp;gt;read();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($this-&amp;gt;Post-&amp;gt;save($this-&amp;gt;data[&#39;Post&#39;])){&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;flash(&#39;その記事は既に投稿されています。&#39;,&#39;/posts&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;下記のソースを記述した&quot;&lt;span style=&quot;color: red;&quot;&gt;edit.ctp&lt;/span&gt;&quot;というファイルを作成します。&lt;br /&gt;
&amp;lt;h1&amp;gt;記事の編集&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo $form-&amp;gt;create(&#39;Post&#39;, array(&#39;action&#39; =&amp;gt; &#39;edit&#39;));&lt;br /&gt;
echo $form-&amp;gt;input(&#39;タイトル&#39;);&lt;br /&gt;
echo $form-&amp;gt;input(&#39;本文&#39;, array(&#39;rows&#39; =&amp;gt; &#39;3&#39;));&lt;br /&gt;
echo $form-&amp;gt;input(&#39;id&#39;, array(&#39;type&#39;=&amp;gt;&#39;hidden&#39;));&lt;br /&gt;
echo $form-&amp;gt;end(&#39;記事の保存&#39;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;作成した&quot;&lt;span style=&quot;color: red;&quot;&gt;edit.ctp&lt;/span&gt;&quot;ファイルを&lt;span style=&quot;color: red;&quot;&gt;/app/views/posts&lt;/span&gt;ディレクトリ内にアップロードします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;/app/views/posts&lt;/span&gt;ディレクトリ内の&quot;&lt;span style=&quot;color: red;&quot;&gt;index.ctp&lt;/span&gt;&quot;ファイルを下記のソースに変更（追記）します。&lt;br /&gt;
&amp;lt;h1&amp;gt;ブログの投稿&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;?php echo $html-&amp;gt;link(&#39;記事の追加&#39;, &#39;/posts/add&#39;); ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Id&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;タイトル&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;操作&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;作成日&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ここから、$posts配列をループして、投稿記事の情報を表示 --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php foreach ($posts as $post): ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;id&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $html-&amp;gt;link($post[&#39;Post&#39;][&#39;title&#39;], &quot;/posts/view/&quot;.$post[&#39;Post&#39;][&#39;id&#39;]); ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $html-&amp;gt;link(&#39;削除&#39;, &quot;/posts/delete/{$post[&#39;Post&#39;][&#39;id&#39;]}&quot;, null, &#39;削除しますか？&#39;); ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt; &amp;lt;?php echo $html-&amp;gt;link(&#39;編集&#39;, &quot;/posts/edit/&quot;.$post[&#39;Post&#39;][&#39;id&#39;]); ?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;?php echo $post[&#39;Post&#39;][&#39;created&#39;]; ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;http://ドメイン名/cakephp/posts/index　再度を開きます。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;操作項目の&quot;編集&quot;のリンクをクリックすると下のようなイメージ画面に遷移します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;13)&amp;nbsp;ルーティング（Routes）&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
ルートの設定をデフォルトからユーザー設定に変更します。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;飛ばします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;ルートの設定が必要だと思ったら、勉強します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background-color: #9fc5e8;&quot;&gt;14)&amp;nbsp;まとめ&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
やったことのおさらいをします。&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;CakePHPをダウンロードしてアップロード&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;MySQLにテーブルの作成&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;database.phpにデータベース接続情報の設定&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;core.phpのセキュリティ部分の記述のデフォルト値の変更&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;/app/tmpディレクトリのパーミッションの変更&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;新規、変更、削除、表示といった基本機能の割り振りを記述したposts_controller.phpの作成&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;トップページとなるindex.ctpの作成&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;操作で遷移する画面　view.ctp　add.ctp　edit.ctp　の作成&lt;br /&gt;
&lt;br /&gt;
・&amp;nbsp;モデル　post.php　の作成&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上です。&lt;br /&gt;
&lt;br /&gt;
プログラムをはじめて45日目の初心者が作成したマニュアルですが&lt;br /&gt;
初心者は初心者の気持ちがわかる！！&lt;br /&gt;
きっとかゆいところに手が届いたはずです。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/1155379789826120244/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/03/cakephp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/1155379789826120244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/1155379789826120244'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/03/cakephp.html' title='CakePHPブログチュートリアル'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VeBqQlXdrVao26Q43Eq4svJLYXSHpSayziLL3Co304XaQuKTZFLB3mYdiYgNEsB5tQQuaj8sOkPZ5laJqRmuHQpYclgHRYwfOlhDj20gfDes-qHYUcvf9FW3HLG-U_GG_Y1MT5KDf0I/s72-c/PHP%25E6%25A7%258B%25E6%2596%2587_18236_image003.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-5657935679282877182</id><published>2012-02-19T10:13:00.000+09:00</published><updated>2012-02-19T10:13:01.204+09:00</updated><title type='text'>CSVファイルに上書きすると文字化け　(´・ω・｀)ｼｮﾎﾞｰﾝ</title><content type='html'>既存のCSVファイルにデータを上書きする場合。&lt;br /&gt;
&lt;br /&gt;
HTML側から文字コードをEUC-JPで設定していても、&lt;br /&gt;
書き込む側のCSVファイルの文字コードがSJISだったりすると、&lt;br /&gt;
どちらの文字コードが優先されるか。&lt;br /&gt;
&lt;br /&gt;
当然、CSVファイル側の文字コード。&lt;br /&gt;
&lt;br /&gt;
HTML側からはEUC-JPの情報で渡すが&lt;br /&gt;
CSVファイル側ではそれをSJISで出力するため&lt;br /&gt;
文字化けが起こる。&lt;br /&gt;
&lt;br /&gt;
この場合はHTML側から出力する文字コードをCSVファイルと合わせるか&lt;br /&gt;
CSVファイルの文字コードをHTML側から出力する文字コードに合わせる。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/5657935679282877182/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/csv.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/5657935679282877182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/5657935679282877182'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/csv.html' title='CSVファイルに上書きすると文字化け　(´・ω・｀)ｼｮﾎﾞｰﾝ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-807810367266744217</id><published>2012-02-19T10:10:00.000+09:00</published><updated>2012-02-19T10:10:52.855+09:00</updated><title type='text'>mb_internal_encoding()関数</title><content type='html'>PHP内部の文字コードの設定をする。&lt;br /&gt;
mb_language(&quot;ja&quot;);&lt;br /&gt;
mb_internal_encoding(&quot;eucJP-win&quot;);&lt;br /&gt;
&lt;br /&gt;
mb_language()はメールの時に必要っぽいので、&lt;br /&gt;
メール送信などの機能がないのでれば不要かも。&lt;br /&gt;
でも念のため。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/807810367266744217/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbinternalencoding.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/807810367266744217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/807810367266744217'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbinternalencoding.html' title='mb_internal_encoding()関数'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-2712824480256901775</id><published>2012-02-19T10:09:00.000+09:00</published><updated>2012-02-19T10:09:27.887+09:00</updated><title type='text'>magic_quotes_gpcの設定がON</title><content type='html'>get_magic_quotes_gpc()関数を使って&lt;br /&gt;
magic_quotes_gpcの設定がONの場合、&lt;br /&gt;
入力フォームの情報（配列）に対して以下のようなエスケープ処理が施される。&lt;br /&gt;
「&quot; → ¥&quot;」「&#39; → \&#39;」「¥ → ¥¥」&lt;br /&gt;
&lt;br /&gt;
stripslashes()関数でバックスラッシュを取り除く。&lt;br /&gt;
&lt;br /&gt;
さらにhtmlspecialchars()関数によってHTML特殊文字は以下のように処理される。&lt;br /&gt;
「&amp;amp; → &amp;amp;amp;」「&quot; → &amp;amp;quot;」「&#39; → &amp;amp;#039;」「&amp;lt; → &amp;amp;lt;」「&amp;gt; → &amp;amp;gt;」&lt;br /&gt;
このことを加味して&lt;br /&gt;
入力フォームの文字には危険が潜んでいるので&lt;br /&gt;
エスケープ処理を施す。&lt;br /&gt;
&lt;br /&gt;
以下、POST型とGET型の記述。&lt;br /&gt;
&lt;br /&gt;
if ($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) {&lt;br /&gt;
&amp;nbsp; foreach($_POST as $key =&amp;gt; $value) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (get_magic_quotes_gpc()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $value = stripslashes($value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; $value = htmlspecialchars($value);&lt;br /&gt;
&amp;nbsp; $_POST[$key] = $value;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
if ($_SERVER[&quot;QUERY_STRING&quot;] != &quot;&quot;) {&lt;br /&gt;
&amp;nbsp; foreach($_GET as $key =&amp;gt; $value) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (get_magic_quotes_gpc()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $value = stripslashes($value);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; $value = htmlspecialchars($value);&lt;br /&gt;
&amp;nbsp; $_GET[$key] = $value;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
※magic_quotes_gpcはPHP 5.3.0で非推奨になったので設定はOFFが推奨。&lt;br /&gt;
※htmlspecialchars()によって逆に文字列が崩れてしまい、ログインフォームやDB接続などがうまくいかなくなることもあるので、状況に応じてカットする。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/2712824480256901775/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/magicquotesgpcon.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2712824480256901775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2712824480256901775'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/magicquotesgpcon.html' title='magic_quotes_gpcの設定がON'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-2934938943001693364</id><published>2012-02-19T10:01:00.001+09:00</published><updated>2012-02-19T10:12:00.818+09:00</updated><title type='text'>accept-charsetは未完全</title><content type='html'>HTMLの入力フォームの内容をSubmitボタンで送信する時、&lt;br /&gt;
フォームを設置しているページの文字コードと&lt;br /&gt;
情報を送信する先の文字コードが違う場合&lt;br /&gt;
form内に&lt;br /&gt;
accept-charset=&quot;&quot;&lt;br /&gt;
を追記する。&lt;br /&gt;
・・・ただし、&lt;br /&gt;
致命的なことにIEが認識しないなどの欠陥があるので、&lt;br /&gt;
根本的な解決策としては使用できない。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ふざけるなっ！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ごもっと。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そこで複数のサイトでは&lt;br /&gt;
Javascriptのonclickを用いてなんとか解決している。&lt;br /&gt;
&lt;br /&gt;
入力フォームの設置ページと&lt;br /&gt;
入力情報の送信先の文字コードが違う場合&lt;br /&gt;
&lt;br /&gt;
HTMLの記述&lt;br /&gt;
&amp;lt;form method=&quot;POST&quot; action=&quot;&amp;lt;?php echo $_SERVER[&quot;PHP_SELF&quot;] ?&amp;gt;&quot; accept-charset=&quot;utf-8&quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;dummy&quot; value=&quot;&amp;amp;#65533;&quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- 上記 value=&quot;&amp;amp;#65533;&quot;　はUTF-8　の場合 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- EUC-JPの場合はvalue=&quot;&amp;amp;#xFDFE;&quot;　にする --&amp;gt;&lt;br /&gt;
&amp;lt;!-- もしくはサブミット部に下記のようなjavascriptを施して回避する方法もあり --&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;submit&quot; onClick=&quot;buff=document.charset;&lt;br /&gt;
document.charset=&#39;UTF-8&#39;;document.form[0].submit();&lt;br /&gt;
document.charset=buff;&quot;&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/2934938943001693364/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/accept-charset.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2934938943001693364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2934938943001693364'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/accept-charset.html' title='accept-charsetは未完全'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-6896996924184680190</id><published>2012-02-19T09:48:00.000+09:00</published><updated>2012-02-19T09:48:27.829+09:00</updated><title type='text'>mb_detect_order　で文字コードの検出順を指定！！</title><content type='html'>文字コードの検出順を指定する。&lt;br /&gt;
デフォルトの&quot;auto&quot;での検出順は&lt;br /&gt;
ASCII→ JIS→ UTF-8→ EUC-JP→ SJIS&lt;br /&gt;
になるが、最初のASCIIが曲者、というか邪魔者。&lt;br /&gt;
&lt;br /&gt;
とりあえず、&lt;br /&gt;
必ず文字コードの検出する順番はこちらで設定する。&lt;br /&gt;
以下の検出順が割とオススメ。&lt;br /&gt;
&lt;br /&gt;
mb_detect_order (&quot;eucJP-win, UTF-8, SJIS-win, jis&quot;);</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/6896996924184680190/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbdetectorder.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/6896996924184680190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/6896996924184680190'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbdetectorder.html' title='mb_detect_order　で文字コードの検出順を指定！！'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-1617128548976100790</id><published>2012-02-19T09:45:00.000+09:00</published><updated>2012-02-19T09:45:54.814+09:00</updated><title type='text'>PDO::MYSQL_ATTR_INIT_COMMAND</title><content type='html'>PDOを使ったDB接続の場合&lt;br /&gt;
$conn = new PDO(&quot;$dbtype:dbname=$dbname;host=$sv&quot;, $user, $pass,&lt;br /&gt;
&amp;nbsp; array(PDO::MYSQL_ATTR_INIT_COMMAND=&amp;gt;&quot;SET CHARACTER SET `utf8`&quot;)&lt;br /&gt;
);</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/1617128548976100790/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/pdomysqlattrinitcommand.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/1617128548976100790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/1617128548976100790'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/pdomysqlattrinitcommand.html' title='PDO::MYSQL_ATTR_INIT_COMMAND'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-7916216533264076158</id><published>2012-02-19T09:40:00.000+09:00</published><updated>2012-02-19T09:40:11.764+09:00</updated><title type='text'>mbstring.internal_encoding</title><content type='html'>php.iniの設定とPHPのスクリプトファイルの文字コードを一致させる。&lt;br /&gt;
&lt;br /&gt;
php.ini内のmbstringの項目内にある&lt;br /&gt;
「mbstring.internal_encoding」の文字コードの設定と&lt;br /&gt;
PHPのスクリプトファイルの文字コードを比較。&lt;br /&gt;
&lt;br /&gt;
差異があった場合は、文字コードを統一する。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/7916216533264076158/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbstringinternalencoding.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/7916216533264076158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/7916216533264076158'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbstringinternalencoding.html' title='mbstring.internal_encoding'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-8620533267531381225</id><published>2012-02-19T09:37:00.000+09:00</published><updated>2012-02-19T09:37:52.173+09:00</updated><title type='text'>skip-character-set-client-handshake</title><content type='html'>クライアントの文字コード設定を強制的にサーバー側と統一する。&lt;br /&gt;
my.ini中の[mysqld]セクションに記述&lt;br /&gt;
default-character-set = utf8&lt;br /&gt;
skip-character-set-client-handshake&lt;br /&gt;
&lt;br /&gt;
※mysql4.1.15 or 5.0.13以降&lt;br /&gt;
※SQLインジェクションへの脆弱性から使用しない方がいい</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/8620533267531381225/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/skip-character-set-client-handshake.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/8620533267531381225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/8620533267531381225'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/skip-character-set-client-handshake.html' title='skip-character-set-client-handshake'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-3657869486719695574</id><published>2012-02-18T01:42:00.001+09:00</published><updated>2012-02-19T10:14:51.393+09:00</updated><title type='text'>SET NAMES　での文字化け対策</title><content type='html'>データ接続の直後に記述をする。&lt;br /&gt;
クライアント側から送信される文字コードの指定（設定）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mysql_query(&quot;SET NAMES eucJP-win&quot;, $conn);&lt;br /&gt;
&lt;br /&gt;
※PEAR::DBの場合&lt;br /&gt;
$conn-&amp;gt;query(&#39;SET NAMES eucJP-win;&#39;);&lt;br /&gt;
&lt;br /&gt;
※PDOの場合&lt;br /&gt;
$stmt = $conn-&amp;gt;query(&quot;SET NAMES eucJP-win;&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ただし&lt;br /&gt;
このSET NAMES&lt;br /&gt;
SQLインジェクションへの脆弱性から使用しない方がいいとの&lt;br /&gt;
もっぱらの噂。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/3657869486719695574/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/set-names.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/3657869486719695574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/3657869486719695574'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/set-names.html' title='SET NAMES　での文字化け対策'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-5390412048815520043</id><published>2012-02-18T01:40:00.002+09:00</published><updated>2012-02-19T10:17:52.894+09:00</updated><title type='text'>mysql_set_charset()関数</title><content type='html'>MySQLのクライアント側の文字コードまで設定します。&lt;br /&gt;
UTF8部分にはMySQL側の文字コードを指定する。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mysql_set_charset ($conn, &quot;UTF8&quot;);&lt;br /&gt;
&lt;br /&gt;
これは便利。&lt;br /&gt;
というか、これでほぼ解決！！&lt;br /&gt;
&lt;br /&gt;
ちなみに&quot;UTF-8&quot;はハイフンを省略して&quot;UTF8&quot;で記述しないと認識しない。&lt;br /&gt;
※mysql5.0.7以降、PHP5.2.3以降&lt;br /&gt;
※PDOで使えない</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/5390412048815520043/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mysqlsetcharset.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/5390412048815520043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/5390412048815520043'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mysqlsetcharset.html' title='mysql_set_charset()関数'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-8797357961450477436</id><published>2012-02-18T01:38:00.000+09:00</published><updated>2012-02-18T01:38:41.769+09:00</updated><title type='text'>HTML　メタ情報に文字コード</title><content type='html'>メタ情報に文字コードの指定をします。&lt;br /&gt;
具体的にはhttp-equiv属性をhead要素の中に記述します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
出力したい文字コードがecu-JP-winだとすると&lt;br /&gt;
HTMLのヘッダー部の記述としてのサンプルは以下の通りです。&lt;br /&gt;
&amp;lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=eucJP-win&quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ただしレンタルサーバーなど、&lt;br /&gt;
HTTPのヘッダーが固定されてる場合はPHPから設定します。&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
header(&quot;Content-type: text/html; charset=eucJP-win&quot;);</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/8797357961450477436/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/html.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/8797357961450477436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/8797357961450477436'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/html.html' title='HTML　メタ情報に文字コード'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-6417787686024922425</id><published>2012-02-18T01:34:00.001+09:00</published><updated>2012-02-19T10:16:01.535+09:00</updated><title type='text'>mb_convert_encoding()関数で解決！！</title><content type='html'>文字コードの変換を行います。&lt;br /&gt;
&lt;br /&gt;
下記サンプルはeucJP-winからUTF-8に変換。&lt;br /&gt;
&lt;br /&gt;
$string = mb_convert_encoding($string, &quot;UTF8&quot;, &quot;eucJP-win&quot;);</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/6417787686024922425/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbconvertencoding.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/6417787686024922425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/6417787686024922425'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/mbconvertencoding.html' title='mb_convert_encoding()関数で解決！！'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8632639320900298058.post-2901541571138224460</id><published>2012-02-18T01:29:00.000+09:00</published><updated>2012-02-18T01:29:41.904+09:00</updated><title type='text'>PHP　文字化けの原因</title><content type='html'>PHPとMySQLを扱うに当たって、文字化けという不幸、不運に出くわすことがあると思います。&lt;br /&gt;
単純でありながら奥が深い文字化け。&lt;br /&gt;
海外ではmojibakeというらしいですが&lt;br /&gt;
とにかくマルチバイトの文字コードを扱う日本人にとって&lt;br /&gt;
文字化けは切っても切り離せないものです。&lt;br /&gt;
&lt;br /&gt;
しかし、今の日本は&lt;br /&gt;
文字化けごときで立ち止まっている暇はないのです。&lt;br /&gt;
他のアジア圏の国々との競争に勝ち残っていかないといけません。&lt;br /&gt;
&lt;br /&gt;
つまり、日本語のマルチバイトによる&lt;br /&gt;
文字化けでつまづいて&lt;br /&gt;
ITサービスの品質低下を招いている場合ではないのです。&lt;br /&gt;
&lt;br /&gt;
さー、力を出し合って&lt;br /&gt;
日本の底力、発揮していきましょう！！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
とゆーわけで本題。&lt;br /&gt;
最近、・・・というか2012年から始めたプログラマーという職業。&lt;br /&gt;
孤独だけど高いハードルが待っていそうです。&lt;br /&gt;
プログラムの『プ』の字もしらない&lt;br /&gt;
ペーペーの自分がやっていけるか不安ですが&lt;br /&gt;
とりあえず、勉強していくうえで&lt;br /&gt;
文字化けは避けて通れそうにないので&lt;br /&gt;
まとめてみました。&lt;br /&gt;
&lt;br /&gt;
間違いや不備があったら申し訳ありません。&lt;br /&gt;
完全に勘違いや知識不足によるもでです。&lt;br /&gt;
先に、お詫び申し上げます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
【PHPの文字化けの原因】&lt;br /&gt;
1．サーバー(MySQL、PHPソースコードなど)、クライアント（WEBブラウザなど）、&lt;br /&gt;
　　　外部ファイル（CSVなど）の文字コードの不一致&lt;br /&gt;
2．文字コードの変換に失敗&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PHPの文字化けなんて簡単！&lt;br /&gt;
すぐ解決しちゃう！&lt;br /&gt;
&lt;br /&gt;
そんな心強い存在になりたいです。</content><link rel='replies' type='application/atom+xml' href='http://php-mojibake.blogspot.com/feeds/2901541571138224460/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/php.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2901541571138224460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8632639320900298058/posts/default/2901541571138224460'/><link rel='alternate' type='text/html' href='http://php-mojibake.blogspot.com/2012/02/php.html' title='PHP　文字化けの原因'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>