5月6日 授業内容

エンコードで探しに行く
エンコード(英: encode)、符号化(ふごうか)とは、アナログ信号やデジタルデータに特定の方法で、後に元の(あるいは類似の)信号またはデータに戻せるような変換を加えることである。

デコードで結果を出す
デコード 符号化(エンコード)されたデータを元の状態に戻す(復元、復号)すること。


P81 $_GET   検索結果を残したい時はget(getは検索以外では使われない)
P84 説明

ENT_QUOTES(P199) '(シングルクォーテーションを入力した場合に)HTMLに変換してくれる

postは入力したデータを見せない
出力されるデータは1回分しか使われない

ユーザーとの対話 - Webデザインの勉強 1月20日開講クラス フェリカテクニカルアカデミー
$_GET
f:id:paris1204:20160506194258p:plain

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>GETで送信</title>
</head>
<body>
<form action="get.php" method="get">
<p>お名前 <input type="text" name="your_name"></p>
<p><input type="submit" value="送信"></p>
</form>
</body>
</html>

f:id:paris1204:20160506194328p:plain

<?php
$yname = $_GET['your_name'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>GETで取得</title>
</head>
<body>
<p>こんにちは、<?php echo $yname; ?>さん。</p>
</body>
</html>


$_POST
f:id:paris1204:20160506200157p:plain

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>POSTで送信</title>
</head>
<body>
<form action="post.php" method="post">
<p>お名前 <input type="text" name="your_name" required placeholder="山田 太郎" autofocus></p><!--requiredは入力されてない状態で送信ボタンを押すと表示される。placeholderは例の表示。autofocusは周りを強調する-->

<p>メールアドレス <input type="email" name="your_email" required placeholder="xxx@xxx.com"></p>
<p><input type="submit" value="送信"></p>
</form>
</body>
</html>


f:id:paris1204:20160506200205p:plain

<?php
$yname = $_POST['your_name'];
var_dump($yname);
$yemail = $_POST['your_email'];
var_dump($yemail);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>POSTで取得</title>
</head>
<body>
<p>こんにちは、<?php echo htmlspecialchars($yname ,ENT_QUOTES); ?>さん。</p><!--//最後に出力するものにhtmlspecialcharsはかける-->
<p>あなたのメールアドレスは<?php echo htmlspecialchars($yemail ,ENT_QUOTES); ?>ですね?</p>
</body>
</html>




htmlspecialchars・・・xss(クロスサイトスクリプティング)にさらされる状態をガードする機能。プログラムが打たれたときに作動しないように入力されたものを文字列に変換する機能。P86
PHP: htmlspecialchars - Manual
htmlspecialcharsはエスケープであり、サニタイジングとは呼ばないこと

エスケープ処理とサニタイジング処理の違い
detail.chiebukuro.yahoo.co.jp





入力された値の変数と型
d.hatena.ne.jp
sum
f:id:paris1204:20160506200715p:plain

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>変数と型</title>
</head>
<body>
<form action="result.php" method="post">
<p>数字1 <input type="text" name="val1"></p>
<p>数字2 <input type="text" name="val2"></p>
<p><input type="submit" value="結果"></p>
</form>
</body>
</html>

f:id:paris1204:20160506200747p:plain

<?php
$val1 =intval($_POST['val1']);//intvalは入力されたものを整数化する。文字と小数点以下を省く
$val2 =intval($_POST['val2']);
$result=$val1 + $val2;
$sum = $val1 . ' + ' . $val2 . ' = ' . $result;
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>変数と型</title>
</head>
<body>
<h1><?php echo htmlspecialchars($sum,ENT_QUOTES,'UTF-8'); ?></h1>
</body>
</html>



inch_cm
f:id:paris1204:20160506201158p:plain

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>inchをcmに変換</title>
</head>
<body>
<form action="inch_output.php" method="post">
<p>インチの半角数字を入力してください。</p>
<p><input type="text" name="inch_unit"></p>
<p><input type="submit" value="変換"></p>
</form>
</body>
</html>


f:id:paris1204:20160506201248p:plain

<?php
if(!isset($_POST['inch_unit']))//値が入力されていない場合(フォームを表示)
 {header( 'Location:inch_input.php' );
 exit;}
 else {
$inch = $_POST[ 'inch_unit' ];
$inch = floatval( $inch );  // 文字列から数値へ変換(細かい値まで取れる)
$cm   = 2.54 * $inch;  // インチからセンチへの変換
$result = '結果 ' . $inch . ' inch = ' . $cm . ' cm';
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>inchをcmに変換</title>
</head>
<body>
<h1><?php echo $result; ?></h1>
</body>
</html>