# 【A講座】Webプログラミング講座7回目 ## 初期準備 MAMPのダウンロードとインストール PHPの授業からはMAMPというアプリケーションを利用します。 以下のリンク先ページよりMAMPのwindows版3.3.1をダウンロードしてください。ページ下部にあります。 https://www.mamp.info/en/downloads/older-versions/ #### 1. ダウンロードが完了したらインストーラーを起動して下さい。 #### 2. MAMP PROとInstall Apple Bonjourのチェックを外す(不要なので) #### 3. I accept the agreementを選択してNext #### 4. 以降は指示に従ってNEXTを選択しインストールを完了させる。 #### 5. ダウンロードできたらインストールを完了させる。 #### 6. インストールした MAMP を開いて「Start Servers」を押し起動 *「Apache Server」と「MySQL Server」の横に緑色のランプがついたら、サーバーの起動完了です。 参考記事 https://codeforfun.jp/how-to-install-mamp-windows-and-mac/#MAMPWindows WindowsでMySQLが時の対処法 https://codeforfun.jp/mamp-mysql-not-starting-solutioin/ ### 授業資料のダウンロードと解凍 Teams上にアップロードした資料をシンクライアント上にダウンロードしてください。 Zipファイルですので解凍してください。 本日使う授業フォルダ07_phpに入っているもの。 ``` sample qa.php post.php post_confirm.php phpinfo.php input.php index.php get.php get_confirm.php 003kansu.php 002hairetsu.php 001hensu.php ``` ### 07_phpフォルダをMAMPのhtdocs階層に移動させてください。 先ほどCドライブにダウンロードしたMAMPの中にhtdocsというフォルダがあります。 ここに授業資料の「07_php」フォルダを移動してください! windows向け補足記事 ダウンロードから起動までの手順 https://codeforfun.jp/how-to-install-mamp-windows-and-mac/#MAMPWindows MySQLが起動しない場合の対処法 https://codeforfun.jp/mamp-mysql-not-starting-solutioin/ ## セクション1 PHP基礎構文 ### 1-1 PHPファイルとタグ #### 1. test.phpファイルを作成 #### 2. PHP開始タグと終了タグを記述 ``` <?php ←開始タグ //ここに処理を書いていきます ?>←終了タグ ``` #### 3. タグの中に以下の処理を記述 `echo 'hello world';` #### 4. MAMPを起動してlocalhost:8888/test.phpを開くと実行結果が確認できる ### 1-2 基本構文(変数) #### 1. 001hensu.phpを開き開始タグ終了タグを準備 #### 2. int型とString型 ``` $int_age = 10; // 数値型(int型) $str_age = "10"; // 文字列型(String型) echo $int_age; echo '<br>'; echo $str_age; ``` ``` $sato_age = 30; $yamada_age = "25"; $total_age = $sato_age + $yamada_age; var_dump($total_age); echo $total_age; echo "<br>"; ``` ``` //結合演算子 $total_age = $sato_age . $yamada_age; ``` ``` // 簡単なおみくじ // rand(min,max) $num = rand(1,2); // おみくじ if ( $num == 1 ) { echo "アタリ"; }else{ echo "ハズレ"; } ``` #### 3. 制御構文(if文、for文はjsと一緒です) ### 1-3 基本構文(関数) #### 1. 003kansu.phpを開き開始タグ終了タグを準備 #### 2. PHP組み込み関数 ``` // 変数・配列等の中身を確認する関数 var_dump(変数); $ary = array("渋谷", "新宿", "池袋"); var_dump($ary); ``` ``` // 日付・時間取得 date関数  date("Y年m月j日 H時i分s秒"); echo date("Y年m月d日 H時i分s秒"); echo "<br>"; echo date("Y/m/d"); echo "<br>"; echo date("H/i/s"); echo "<br>"; ``` ``` // 文字列の長さ表示 $length = strlen("abcde"); echo $length; echo "<br>"; ``` [PHP組み込み関数良く使うやつ一覧](https://qiita.com/Tocyuki/items/282d49d2ae6e7eb96eca) ## セクション2 フォーム操作 ### 2-1 GET通信 #### 1. getで送信するにはmethodとactionの設定 get.phpを開いてformの中身を確認 ``` <form action="get_confirm.php" method="get"> お名前: <input type="text" name="name"> EMAIL: <input type="text" name="mail"> <input type="submit" value="送信"> </form> ``` #### 2. 受け取り方  get_confirm.phpのPHPタグ中で以下の書き方で受け取る ``` // フォームから送られてきたデータを取得し変数に代入 $name = $_GET["name"]; $mail = $_GET["mail"]; ``` #### 3. 表示 get_confirm.phpのHTMLの中で以下の書き方で表示 ``` <li> お名前:<?= $name ?> </li> <li> Mail:<?= $mail ?> </li> <?php echo $name ?> or <?= $name ?> ``` ### 2-2 POST通信 #### 1. postで送信するにはmethodとactionの設定 post.phpを開いてformの中身を確認 ``` <form action="post_confirm.php" method="post"> お名前: <input type="text" name="name"> EMAIL: <input type="text" name="mail"> <input type="submit" value="送信"> </form> ``` #### 2. 受け取り方 post_confirm.phpのPHPタグ中で以下の書き方で受け取る ``` // フォームから送られてきたデータを取得し変数に代入 $name = $_POST["name"]; $mail = $_POST["mail"]; ``` #### 3. 表示 post_confirm.phpのHTMLの中で以下の書き方で表示 ``` <li> お名前:<?= $name ?> </li> <li> Mail:<?= $mail ?> </li> <?php echo $name ?> or <?= $name ?> ``` ### 2-3 XSS:クロスサイトスクリプティング #### 1. 実演postのformに以下をコピペして送信 `<script>alert("ok");</script>` #### 2. 意図しないscriptを埋め込まれる危険性があるので対策 `htmlspecialchars(変数,ENT_QUOTES);` *GETやPOSTで受け取ったデータをechoする時は必ず行う #### 3. 良く使うので自分で関数化 ``` // XSS対策関数 function h($value){ return htmlspecialchars($value,ENT_QUOTES); } ``` 呼び出し方 `<?php echo h(変数); ?>` ## セクション3 データベースとは ### 3-1 まずはphpMyAdminとMySQLの場所を知る #### 1. MAMPを起動 #### 2. WebStartボタンから起動トップページを表示 #### 3. ページの真ん中MySQLのタブからphpMyAdminのリンクをクリック #### 4. 起動した画面がMySQLを管理するphpMyAdminの画面が表示されます。 ### 3-2 データベースを作ってみよう #### 1. データベースタブをクリック #### 2. データベースを作成から以下の名前で作成 ``` データベース名:gs_db 照合順序:utf8_unicode_ci ``` #### 3. 作成ボタンをクリック 左側にgs_dbというデータベースができていると思います。 現在は空っぽです。 ### 3-3 テーブルを作成してみよう データベースの中にデータ管理用の表としてテーブルを作成します。 今回はアンケートシステムのDBとしてテーブルを構築します。 #### 1. テーブルを作成に以下の設定で作成 ``` テーブル名:gs_an_table カラム数:5 ``` #### 2. カラムを作成していく ``` id: int(12) AUTO_INCREMENT PRIMARY KEY name: var_char(64) email: var_char(128) naiyou: text indate: datetime ``` #### 3. 実行してみる ## セクション4 データベース操作(SQL) MySQLではデータベース言語SQLというものを使って操作します。 大きく次の4つの操作になります。登録・表示(取得)・更新・削除 *SQL文ではシングルコーテーション! *phpMyAdminのSQLタブから入力してクエリを実行してみる。 ### 4-1 INSERT(データ登録) #### 1. 書式 ``` INSERT INTO テーブル名(カラム1,カラム2,カラム3・・・) VALUES (値1,値2,値3・・・); ``` #### 2. データ登録SQLを書いてみよう ``` INSERT INTO gs_an_table(id,name,email,naiyou,indate) VALUES (NULL,'テスト太郎','test1@test.jp','test',sysdate()); ``` #### 3. 3~4個ほどデータを追加してみよう ### 4-2 SELECT(データ取得) #### 1. 書式 ``` SELECT 表示するカラム FROM テーブル名; ``` #### 2. データ取得の基本バリエーション ``` SELECT * FROM gs_an_table; --全カラム指定取得 SELECT name FROM gs_an_table; --単一カラム指定取得 SELECT name,email FROM gs_an_table; --複数カラム指定取得 SELECT * FROM gs_an_table WHERE name='テスト太郎'; --WHEREを使った特定データの取得 ``` #### 3. 条件付き検索取得 ``` --演算子を使った検索 SELECT * FROM テーブル名 WHERE id = 1; SELECT * FROM テーブル名 WHERE id >= 3; --AND,ORで検索条件を複数指定 SELECT * FROM テーブル名 WHERE id = 1 OR id = 2; SELECT * FROM テーブル名 WHERE id = 1 AND id = 2; --曖昧検索 SELECT * FROM テーブル名 WHERE indate LIKE '2021-06%'; SELECT * FROM テーブル名 WHERE email LIKE '%@gmail.com'; SELECT * FROM テーブル名 WHERE email LIKE '%@%'; ``` #### 4. ソート取得と制限取得 ``` --ソート 書式:SELECT * FROM テーブル名 ORDER BY ソート対象カラム ソートルール; SELECT * FROM テーブル名 ORDER BY id DESC; --降順 SELECT * FROM テーブル名 ORDER BY id ASC; --昇順 --取得数制限 書式:SELECT * FROM テーブル名 LIMIT ***; SELECT * FROM テーブル名 LIMIT 5; --最大5件取得 SELECT * FROM テーブル名 LIMIT 3,5; --3番目のデータから最大5件取得 ```