PHP 2日目
POST の場合
<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>
<?php $name = $_POST['your_name']; $age = $_POST['your_age']; ?> <body> <p>あなたのお名前は <?php echo $name; ?> です。</p> <p>あなたの年齢は <?php echo $age; ?> 歳です。</p> <?php echo "<p>あなたのお名前は {$name} です。</p>"; echo "<p>あなたの年齢は {$age} です。</p>"; ?> </body>
GET の場合
<h1>フォームを動かす</h1> <form action="form_receive_get.php" method="get"> <p>お名前:<input type="text" name="your_name"></p> <p>ご年齢:<input type="text" name="your_age"></p> <input type="submit"> </form>
<?php $name = $_GET['your_name']; $age = $_GET['your_age']; ?> <body> <p>あなたのお名前は <?php echo $name; ?> です</p> <p>あなたの年齢は <?php echo $age; ?> 歳です。</p> <?php echo "<p>あなたのお名前は {$name} です。</p>"; echo "<p>あなたの年齢は {$age} です。</p>"; ?> </body>
フォームに入れられたタグを無効化
<p>あなたのお名前は <?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8'); ?> です</p> <p>あなたの年齢は <?php echo htmlspecialchars($age,ENT_QUOTES,'UTF-8'); ?> 歳です。</p>
<p>あなたのお名前は <a href="#">いたずら</a> です</p> <p>あなたの年齢は <a href="#">いたずら</a> 歳です。</p>
<?php /*$test = 2; var_dump(isset($test)); exit;*/ // isset 値が入っているかいないか、見てくれる関数 if(isset($_POST['your_name'])!=true){ header('Location:form.php'); exit; // form.php にリダイレクト } if(!isset($_POST['your_name'])||!isset($_POST['your_age'])){ header('Location:form-01.php'); exit; } if(isset($_POST['your_name'])===true){ header('Location:form-01.php'); exit; } ?>
処理用のPHPファイルに直接アクセスされた場合にブロックする記述
( isset は、値が有るか無いか チェックしてくれる関数 )
<?php if(!isset($_GET['your_age']) || !isset($_GET['your_age'])){ header('Location:from.php'); } $name = $_GET['your_name']; $age = $_GET['your_age']; ?>
form の内容を表示
nl2br()
で、改行が有効になる。
<form action="check.php" method="post"> <table> <tbody> <tr> <th>お名前: </th> <td><?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr> <th>Eメール: </th> <td><?php echo htmlspecialchars($email,ENT_QUOTES,'UTF-8'); ?></td> </tr> <tr> <th>お問合せ内容: </th> <td><?php echo nl2br(htmlspecialchars($message,ENT_QUOTES,'UTF-8')); ?></td> </tr> </tbody> </table> <input type="submit" value=" 以上でよければ送信 "> </form>
htmlspecialchars($str,ENT_QUOTES,'UTF-8');
の記述を短くする
// この記述で function h($str){ return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); } // これを <?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8'); ?> <?php echo htmlspecialchars($age,ENT_QUOTES,'UTF-8'); ?> // こう省略できる <?php echo h($name); ?> <?php echo h($age); ?>