140129訓練

投稿者: | 2014年1月29日

今日からPHPの訓練。

PHPとは

動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語。
通常のHTMLではユーザーの指示に対応した反応が出来ない。
サーバーサイドの言語。
コンパイルが不要。

ローカルサーバの設置

XAMPPを使ってローカルサーバを立てます。

まずはXAMPPをダウンロード。訓練所のPCはWINDOWSなのでWINDOWS向けを使う。
訓練所は回線が弱いので昨日のうちにインストーラはみんなに配られた。
ひたすらNEXT押してればインストール先はデフォルトでCドライブのルートになってるはず。多分。きっと。

入れたらXAMPPのコントロールパネルを立ち上げてApacheとMySQLをスタートさせる。

ブラウザでhttp://localhost/で起動確認。
xampp_hello

セキュリティの状態を修正する

コントロールパネルのApacheのAdmin→左のナビゲーションからセキュリティ
大体要注意になってるので、
http://localhost/security/xamppsecurity.phpへのリンクが貼ってあるので、ここに飛んで基本言われるがままにROOTのパスワードとXAMPPのディレクトリ制御 (.htaccess)のユーザとパスワードを設定して、MySQL(念のためApacheも)を再起動して再度セキュリティのページを確認。安全になっていればOK。

PHP設定ファイルの編集

xampp/php/php.iniを編集する。
上から下に変更。(行数はバージョンによって違うので割愛)

error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

error_reporting=E_ALL & ~E_NOTICE

;default_charset = “UTF-8”

default_charset = “UTF-8”

date.timezone=Europe/Berlin

date.timezone=Asia/Tokyo

;mbstring.language = Japanese

mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP

mbstring.internal_encoding = UTF-8

;mbstring.http_input = auto

mbstring.http_input = auto

;mbstring.http_output = SJIS

mbstring.http_output = pass

;mbstring.encoding_translation = Off

mbstring.encoding_translation = Off

設定が終わったら保存してコントロールパネルからApacheを再起動(Stop→Start)してAdmin→左のナビゲーションからphpinfo()→設定値が反映されているか項目をチェック(default_charsetなど)

PHPとJavaの(大きな)違い

変数の頭は$をつける
ex.$str
単語の区切りにアンダースコア記法を使うことも多い
ex.$str_name

文字列の連結は+ではなくドット(.)

文字列をくくる時はダブルクォーテーション(”)ではなくシングルクォーテーション(’)
※ダブルクォーテーションが使えない訳ではない

比較演算子(===)がある
phpは型が厳密じゃないので、型も含めた比較の時は===を使う

初めてのPHPスクリプト

phpinfoを作ってみる

をテキストエディタで書いて、xampp/htdocs内にphpinfo.phpで保存。
※web用のドキュメントはhtdocsに置く
ブラウザでhttp://localhost/phpinfo.phpを叩いて確認。
phpの情報が出ていればOK。
?>で閉じるのは以降に(主にHTMLで書かれた)コードが無い場合は非推奨なので閉じない。

余談

sublime textを使っている場合はデフォルトではphpの入力補完がないので、
Shift+Ctrl+P→「Package Control:Install Package(instくらいで引っ掛かる)」→Phpcsをインストールするとよい

あと日本語のインライン入力がしたいと思うのでIME Surportもインストールしておく。
お前の話よく分かんねーよ!って方は参考サイトをどうぞ

最強エディタSublimeTextに開発環境変えました
Windows版「Sublime text 2」で日本語をインライン入力する方法

キャッシュの制御をファイルに全然書いてないとブラウザキャッシュで変更が反映されないことがやたら起きうるので1クリックでブラウザキャッシュを消せるClear Cacheを入れておくとよい(Chromeの場合)。
Chromeウェブストアで検索するとある。ない場合は検索結果から適当にクリックして関連アイテムタブから探せばある(はず)。
ツールバーに表示されるようになるのでそれをワンクリックするだけでキャッシュが消せる。

実際はやってないけど備忘録。
訓練上は必要ないけど使う機会はあるはずなので。
XAMPPのエイリアス設定

phpファイルにhtml書いてみる

ありがちな「こんにちは」の出力

混ざってるのでちゃんと?>で閉じてあげること。
echoで文字列の出力をする。
printも文字列の出力をする。
今回の場合はprintの方が適切だと思ふ。

変数を使って計算してみる

実行結果

3
2

掛け算は閉じない書き方にしたけど気持ち悪いので基本的には閉じましょう・・・

クォーテーションの違い

ダブルクォーテーションには変数を展開(解釈)する機能がある。
自動的に値が置き換わる。

実行結果

とりあえずUnity(http://pg-box.jp/)
とりあえずUnity({$url})

{}で変数をくくる必要は必ずしもあるわけではないが、思わぬ間違いを生まないように区切りとして入れている。
作法として。
またそういう事情があるので文字列などを書く場合は基本的にシングルを使う。
※追記
重要な事が抜けていました。
ダブルクォートはエスケープシーケンスも解釈するようです。
\n(改行)とか\t(タブ)とか。シングルだとHTMLのbrとか書いてあげないとダメです。ただの文字列として展開されちゃいます。
ルールを決めて状況に応じた使い分けをすると良いと思います。

簡単なフォーム

POSTメソッドでactionに指定したファイル(example2.php)に情報を渡す。
今回はname属性はnameだけなのでnameのテキストボックスに入れた情報をsubmitする。今回は「とりあえず」と入力したことにする。

$_POST

PHPに予め用意されている変数。スーパーグローバル変数。
name属性の値を取り出せる配列。

htmlspecialchars

第一引数:文字列
第二引数:エスケープの内容
第三引数:文字コード
ユーザーからの悪意のある入力(直接コード入力するなどのクロスサイトスクリプティング攻撃)から防御出来る。
今回は第二引数にシングルクォートもダブルクォートも両方共文字列として変換するように指定した。
ちなみにchromeはこれ使わなくてもデフォルトでプロテクトする設定が入っているので弾いてくれるらしい。
firefoxはやってないので不明。
IEはスクリプトを入力すると実行された。

実行結果

こんにちは「とりあえず」さん!

GETでフォームを作ることもできるが普通はPOSTを使う。
GETはクエリを投げられるので、検索フォームなどを作る場合には結果URLなどが残るのでそういった場合は使う。
このサイトのお問い合せはPOST。検索はGET。

日時を取り出す

date関数を使う

何を取り出せるかは公式マニュアルでご確認を。

実行結果

現在日時:2014年01月29日 13:34:01

配列を使ったリスト

array関数を使う。

count

要素数を数える。

後はprintで出力。

Javaと違ってfor文のカウンタ変数iも$がつくので注意。

実行結果(見栄えを再現しています)

7人いるよ
1. 一郎
2. 二郎
3. 三郎
4. 四郎
5. 五郎
6. 六郎
7. 花子

print_r

変数情報の出力。
配列の中身が見たいなど情報が見たい場合に使う。

preでくくると改行などが維持されるので便利。

今日は書いたわー。Javaより緩いのであった。


コメント

Loading Facebook Comments ...

コメントを残す

No Trackbacks.