Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真
PHPとは PHP(PHP Hypertext Preprocesser) 動的ページ生成 オープンソース サーバサイドスクリプト言語 『ポストCGI』と呼ばれている
サーバーサイドの言語 CGIだけで無く様々な言語が存在 CGI(Perl) JSP/サーブレット ASP(ASP.NET) PHP Zope(Python) Ruby Cold Fusion CGIだけで無く様々な言語が存在
PHPの特徴 ①埋め込み型言語 ・静的なHTMLに“<?php~?>”コードを埋める ・HTMLの親和性が高い ・直感的なコーディング ~プログラム~ ?> プログラムソース
PHPの特徴 ②スクリプト言語 ・インタープリタ(逐次翻訳)形式のスクリプト言語 ・パフォーマンス的に高い(コンパイル語比較) ・Zend Engineの採用(PHP4以降)
PHPの特徴 ③Perlとの類似性 ④豊富な関数群 ・一つのクローズドな言語体系 ・言語仕様がCやPerlと類似 ・オブジェクト指向対応 (ポストCGIといわれる所以) ・配列関数カテゴリのみで60種類以上 ・簡単にロジックを組み立てることが可能
PHPの導入 ・PHPを実行するのに必要なもの ・導入方法は以下を参照 ・Apache(Webサービス) http://mikilab.doshisha.ac.jp/dia/research/report/2005/0813/006/report2005/0813006.html
PHPを書こう 1.テキストディタを起動(メモ帳,秀丸・・・etc) 2.以下のソースを記述 <?php print(“Hello World”); ?> 3.ファイル名「[自分の名前].php」で保存 4.「test.php」を 「\\miyazaki\webcomi\」にコピー 5.ブラウザで「http://172.20.11.89/[].php」アクセス
実行画面
HTMLにPHPを埋め込む ① ② <?php print(“Hello World”); ?> print “Hello World”; <B> <?php print(“Hello World”); ?> </B> ②
HTMLにPHPを埋め込む ① ②
変数を使う ・特にデータ型を指定する必要が無い <?php $data1 = “Hello”; $data2 = 7; print($data1.”<BR>”.$data.”<BR>”); print($data2); ?>
配列を使う ・配列に代入・・・「月~木」がweek[0]~[3]へ格納 同じ意味 $week[] = “月”;$week[] = “火”;
連想配列(ハッシュ)を使う ・番号の変わりにキー(文字列)を付けて格納 $member[“name”] = “HIROYASU”; 変数名 代入する値 Example) $member[“name”] = “HIROYASU”; print($member[“name”]);
連想配列(ハッシュ)を使う ・array()を用いたデータ格納 ・多次元配列も利用可能 $data = array( “family_name” => “HIROYASU”, “first_name” => “TOMOYUKI”, “job” => “Teacher” ) ・多次元配列も利用可能
主な演算子 ・算術演算子「+,-,*,/,%」 ・比較演算子「==,!=,<,>」など ・加算子,減算子「++,--」 $answer = 5+1; //$answer に6が格納される ・比較演算子「==,!=,<,>」など 比較演算子で説明 ・加算子,減算子「++,--」 $counter++; //$counterに1が足される
条件分岐を使う ・if(条件式){処理内容} ・if(条件式){処理内容}else{} ・if(条件式){処理内容}elseif(条件式){} $username = “user”; If($user==“user”){ print(“You are Collect user”); } “TRUE”を返す
繰り返しを使う ・for(初期値;条件式;増減式){処理内容} ・while(条件式){処理内容} ・while(条件式): 処理内容・・・ for($i = 0;$i < 10; $i++){print(“Hello”);} ・while(条件式){処理内容} while($i < 10){ print(“Hello”); $i++; } ・while(条件式): 処理内容・・・ endwhile;
配列の一括処理 ・foreach($配列 as $変数){処理内容} 「$配列」のサイズ数だけ繰り返し, 「$変数」を一回ごとに返す. その時の「$キー」と「$変数」 を一回ごとに返す.
配列の一括処理の例 <?php $member=array(“name”=>”HIROYASU”, “job”=>”Teacher”); foreach($member as $key=>$value ){ print “$key :$value”; print “<BR>”;} ?>
その他使えるもの ・switch($判定用変数){ case “値1”: 処理1; break; default: 処理3; } ・break , continue などなど コーディングは,CやPerlに似ている
問題1 ・自己紹介をしてください 【項目】 ・苗字 ・名前 ・性別 ・期生 ・住所 【制約】 ・HTML形式で表示(わかりやすく) 【項目】 ・苗字 ・名前 ・性別 ・期生 ・住所 【制約】 ・HTML形式で表示(わかりやすく) ・連想配列と繰り返し処理を利用
問題1(解答例) <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> </head> <?php $introduction = array("苗字"=>"宮崎","名前"=>"真", "性別"=>"男", "期生"=>"8","住所"=>"大阪府枚方市"); print("自己紹介をします<br>"); foreach($introduction as $key => $val){ print($key.":".$val."<br>"); } ?>
問題1(解答例) <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> </head> <?php $introduction = array("苗字"=>"宮崎","名前"=>"真", "性別"=>"男", "期生"=>"8","住所"=>"大阪府枚方市"); print("自己紹介をします<br>"); foreach($introduction as $key => $val){ print($key.":".$val."<br>"); } ?>
サーバークライアント処理 ① リクエスト ② クライアント ③ HTML サーバー 入力された値を元に, サーバ側で処理をする
フォームを使う 1.名前を入力 2.ボタンを押す 3.view.phpを呼び出し <FORM name=“form1” method=“post” action=“view.php”> 名前:<BR> <INPUT type=“text” name=“onamae”> <BR> <INPUT type=“submit” value=“送 信”> </FORM>
送信データを取り出す ・$_POST[キー]で送信されたデータを抽出 view.php データ送信 <?php print $_POST[“onamae].”さん、こんにちは!”; ?> データ送信
問題2 ・ユーザ認証ページを作って下さい 【項目】 ・ユーザ名前 ・パスワード 【制約】 ・form1.htmlを利用 【項目】 ・ユーザ名前 ・パスワード 【制約】 ・form1.htmlを利用 ・ユーザ名前とパスワードのデータは phpファイル上で記述してよい
問題3(応用問題) ・今日は自分が生まれてから何日目?? 【制約】 ・form1.htmlを利用 ・今日の日付は指定入力してよい ・自分の誕生日を入力(例)1981-9-8 ・$返り値=explode(“-” , $文字列) 文字列を“-”区切りで配列変換 ・結果は数字で答える