くろひょうのwebデザインのお勉強帳

フェリカテクニカルアカデミー web制作科の受講生です。授業の要点、復習でつまづいた点などを記録し、レベルアップに励みます。

クリエイターになるための、お勉強の記録帳

[PHP]入力フォーム①

HTMLの<form>で取得したデータをサーバーに送り、PHPで処理することができる。

流れ

ユーザー:①HTMLフォームに書き込み、送信

       ↓

サーバー:②メモリで受け取る

     ③Apacheで処理

     ④PHPが結果を返す  ※処理後、メモリからデータは消える

       ↓

     ⑤結果をHTMLでユーザーに返す

 

フォーム1−1

f:id:pleasure10501:20150607184045p:plain

form1.html

<body>
<p>以下を記入して、「送信する」を押して下さい。</p>
<form action="form1.php" method="post">
<p>お名前:<input type="text" name="namae" ></p>
<p>ご年齢:<input type="text" name="age" >才</p>
<p><input type="submit" value="送信する"></p>
</form>
</body>

 

action:データの送り先のファイル名やURL。ここではform1.php

method  : 送信方式。postかget

name属性:データの送り先(ここではform1.php)で変数処理をするための値

 

 

form1.php

form1.htmlからデータを受信し、処理をする。
受信は自動的に行うので、私たちは処理内容を書いていく必要がある。

<?php
$name = $_POST['namae'];   
$age = $_POST['age'];

echo $name;
echo $age;

 

処理の流れ

①form1.htmlのお名前欄に入力された値は、$_POST['namae']という変数で、
年齢欄に入力された値は$_POST['age']という変数で受け取る

※$_POST['']で受け取りたいものと同じname属性を[' ']に入れる  
      ↓
$_POST['namae'] の変数の値を 変数nameに代入
$_POST['age']      の変数の値を 変数ageに代入

 

②変数nameをブラウザに表示
 変数ageをブラウザに表示

 

表示結果
f:id:pleasure10501:20150607185916p:plain

 

フォーム1−2

表示結果を「あなたは〜〜です」となるようにする

form1.php

f:id:pleasure10501:20150607191323p:plain

<?php
$name = $_POST['name'];            →→
$age = $_POST['age'];

echo '<p>あなたのお名前は'.$name.'です。</p>';
echo '<p>あなたの年齢は'.$age.'才です。</p>';

_________________

下は全く同じ結果になる

echo '<p>あなたのお名前は'.$name.'です。</p>';
echo "<p>あなたのお名前は{$name}です。</p>";

文字列のときは上の書き方がよい。

 

 

フォーム1−3  HTML構造の中にPHPを組み込むこともできる

form1.php

<?php
$name = $_POST['name'];
$age = $_POST['age'];
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>form1</title>
<link rel="stylesheet" href="style.css">
</head>

<body>
<h1>フォーム1</h1>
<?php
echo '<p>あなたのお名前は'.$name.'です。</p>';
echo '<p>あなたの年齢は'.$age.'才です。</p>';
?>
</body>
</html>

 

[重要】 入力フォームに悪意のプログラム等を書き込まれるのを防ぐhtmlspecialchars関数

この状態の入力フォームはタグも書き込むことができる状態

 

f:id:pleasure10501:20150607201540p:plain  →   f:id:pleasure10501:20150607201635p:plain

 

スクリプトや悪意のプログラムを実行させ、破壊することもできてしまう。

これを防ぐ為にhtmlspecialchars関数を使用する。

 

echo htmlspecialchars(変数名, ENT_QUOTES,'文字コード');

 

効果: < & = " ' 等を実体参照文字に置き換えて、タグとして認識しなくなる。
    アンカーリンクやスクリプトを実行しないようにする

 

PHPを以下のように書き換える

f:id:pleasure10501:20150607202942p:plain

表示結果

f:id:pleasure10501:20150607203000p:plain