今日からPHPの訓練。
目次
PHPとは
動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語。
通常のHTMLではユーザーの指示に対応した反応が出来ない。
サーバーサイドの言語。
コンパイルが不要。
ローカルサーバの設置
XAMPPを使ってローカルサーバを立てます。
まずはXAMPPをダウンロード。訓練所のPCはWINDOWSなのでWINDOWS向けを使う。
訓練所は回線が弱いので昨日のうちにインストーラはみんなに配られた。
ひたすらNEXT押してればインストール先はデフォルトでCドライブのルートになってるはず。多分。きっと。
入れたらXAMPPのコントロールパネルを立ち上げてApacheとMySQLをスタートさせる。
セキュリティの状態を修正する
コントロールパネルの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を作ってみる
1 2 |
<?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書いてみる
ありがちな「こんにちは」の出力
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>html</title> </head> <body> <?php echo 'こんにちは'; print('こんにちは'); ?> </body> </html> |
混ざってるのでちゃんと?>で閉じてあげること。
echoで文字列の出力をする。
printも文字列の出力をする。
今回の場合はprintの方が適切だと思ふ。
変数を使って計算してみる
8 9 10 11 12 13 |
<?php $x = 1; $y = 2; print(($x + $y).'<br />'); print $x * $y; ?> |
実行結果
3 2
掛け算は閉じない書き方にしたけど気持ち悪いので基本的には閉じましょう・・・
クォーテーションの違い
ダブルクォーテーションには変数を展開(解釈)する機能がある。
自動的に値が置き換わる。
1 2 3 4 5 6 |
<?php $url = 'http://pg-box.jp/'; $url1 = "とりあえずUnity({$url})"; $url2 = 'とりあえずUnity({$url})'; print($url1.'<br />'); print($url2); |
実行結果
とりあえずUnity(http://pg-box.jp/) とりあえずUnity({$url})
{}で変数をくくる必要は必ずしもあるわけではないが、思わぬ間違いを生まないように区切りとして入れている。
作法として。
またそういう事情があるので文字列などを書く場合は基本的にシングルを使う。
※追記
重要な事が抜けていました。
ダブルクォートはエスケープシーケンスも解釈するようです。
\n(改行)とか\t(タブ)とか。シングルだとHTMLのbrとか書いてあげないとダメです。ただの文字列として展開されちゃいます。
ルールを決めて状況に応じた使い分けをすると良いと思います。
簡単なフォーム
8 9 10 11 12 13 14 |
<form method="POST" action="example2.php"> <div> <label for="name">名前:</label> <input type="text" name="name"> </div> <input type="submit" value="送信" /> </form> |
POSTメソッドでactionに指定したファイル(example2.php)に情報を渡す。
今回はname属性はnameだけなのでnameのテキストボックスに入れた情報をsubmitする。今回は「とりあえず」と入力したことにする。
8 9 10 |
こんにちは 「<?php print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?>」 さん! |
$_POST
PHPに予め用意されている変数。スーパーグローバル変数。
name属性の値を取り出せる配列。
htmlspecialchars
第一引数:文字列
第二引数:エスケープの内容
第三引数:文字コード
ユーザーからの悪意のある入力(直接コード入力するなどのクロスサイトスクリプティング攻撃)から防御出来る。
今回は第二引数にシングルクォートもダブルクォートも両方共文字列として変換するように指定した。
ちなみにchromeはこれ使わなくてもデフォルトでプロテクトする設定が入っているので弾いてくれるらしい。
firefoxはやってないので不明。
IEはスクリプトを入力すると実行された。
実行結果
こんにちは「とりあえず」さん!
GETでフォームを作ることもできるが普通はPOSTを使う。
GETはクエリを投げられるので、検索フォームなどを作る場合には結果URLなどが残るのでそういった場合は使う。
このサイトのお問い合せはPOST。検索はGET。
日時を取り出す
date関数を使う
8 |
<?php print('現在日時:'.date('Y年m月d日 H:i:s')); ?> |
何を取り出せるかは公式マニュアルでご確認を。
実行結果
現在日時:2014年01月29日 13:34:01
配列を使ったリスト
array関数を使う。
1 |
<?php $name = array('一郎','二郎','三郎','四郎','五郎','六郎','花子'); ?> |
count
要素数を数える。
11 |
<?php print(count($name)); ?>人いるよ |
後はprintで出力。
12 13 14 15 16 17 18 |
<ol> <?php for ($i=0; $i < count($data); $i++) { print('<li>'.$name[$i].'</li>'); } ?> </ol> |
Javaと違ってfor文のカウンタ変数iも$がつくので注意。
実行結果(見栄えを再現しています)
7人いるよ 1. 一郎 2. 二郎 3. 三郎 4. 四郎 5. 五郎 6. 六郎 7. 花子
print_r
変数情報の出力。
配列の中身が見たいなど情報が見たい場合に使う。
1 2 3 |
<pre> <?php print_r($name); ?> </pre> |
preでくくると改行などが維持されるので便利。
今日は書いたわー。Javaより緩いのであった。
コメント
No Trackbacks.