---
# System prepended metadata

title: 【MC-Innovation-Lab】PHP1回目

---

# 【MC-Innovation-Lab】PHP1回目
## 初期準備
XAMPP又はMAMPのダウンロードとインストール
PHPの授業からはXAMPPというアプリケーションを利用します。

＊「Apache Server」と「MySQL Server」の横に緑色のランプがついたら、サーバーの起動完了です。

### 授業資料のダウンロードと解凍
Zipファイルですので解凍してください。

本日使う授業フォルダphp01に入っているもの。
```
001hensu.php
get_confirm.php
get.php
index.php
input.php
phpinfo.php
post_confirm.php
post.php
qa.php
read.php
write.php
dataフォルダ
sampleフォルダ
```
### php01フォルダをMAMPのhtdocs階層に移動させてください。
先ほどCドライブにダウンロードしたXAMMPの中にhtdocsというフォルダがあります。
ここに授業資料の「php01」フォルダを移動してください！

## セクション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型
```
$name = '中野';
$last_name = '憲一';
echo $name;
echo $name + $last_name;
echo $name . $last_name;

```

```
$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と一緒です）

## セクション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 ファイル操作
### 書き込み
#### 1. write.phpからファイルを開いて取得した時間を書き込む

```
// 時間取得
$date = date("Y/m/d H:i:s");

// ファイルを読み込む
$file = fopen("./data/data.txt","a");

// ファイルに書き込む
fwrite($file,$date."\n");

// ファイルを閉じる
fclose($file);
```

### 読み込み
#### 1. read.phpからファイルを開いて書き込まれたデータを取り出す

```
// ファイルを変数に格納
$filename = 'data/data.txt';

// fopenでファイルを開く（'r'は読み込みモードで開く）
$fp = fopen($filename, 'r');
 
// whileで行末までループ処理
while (!feof($fp)) {
 
    // fgetsでファイルを読み込み、変数に格納
    $txt = fgets($fp);
   
    // ファイルを読み込んだ変数を出力
    echo $txt.'<br>';
   
}
 
// fcloseでファイルを閉じる
fclose($fp);

```