WEBデザインの勉強

WEB制作初心者が1から勉強するブログ。

フォーム

前回の記事

mmmmofu.hatenablog.com

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>フォームを動かす</title>
</head>
<body>
  <h1>フォームを動かす</h1>
  <form action="form_receive.php" method="post">
  <p>お名前:<input type="text" name="your_name"></p>
  <p>ご年齢:<input type="text" name="your_age"></p>
  <input type="submit">
  </form>
</body>
</html>

form_receive.php

<?php
$name = $_POST['your_name'];
$age = $_POST['your_age'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>フォーム結果</title>
</head>
<body>
  <p>あなたのお名前は<?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8'); ?>です。</p>
  <p>あなたの年齢は<?php echo htmlspecialchars($age,ENT_QUOTES,'UTF-8'); ?>歳です。</p>

  <?php
  echo "<p>あなたのお名前は{$name}です。</p>";
  echo "<p>あなたの年齢は{$age}歳です。</p>";
  ?>
</body>
</html>

htmlspecialchars();

フォームに入力されたタグを無効化
クロスサイトスクリプティング(悪意のあるスクリプトを注入)対策

上記のファイルでaタグを入力してみた例

f:id:mmmmofu:20160725171657p:plain
上はhtmlspecialchars()をかけてあるのでリンクされていないが、
下は書いていないのでそのまま表示されている

function h($str){
  return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
}
<?php echo h($name); ?>
<?php echo h($age); ?>

関数を定義して(ユーザー定義関数)htmlspecialchars~;を省略することができる

isset()

変数がセットされており、NULLでないかを調べる関数

使い方いろいろ

<?php
if(isset($_POST['your_name'])!=true){
  header('Location:index.php');
  exit;
}
if(!isset($_POST['your_name'])||!isset($_POST['your_age'])){
  header('Location:index.phpp');
  exit;
}
if(isset($_POST['your_name']) === true){
  header('Location:form-01.php');
  exit;
}

header('Location:URL');

リダイレクトする。

exit

プログラムを終了する