PHPのテスト(02) メールフォーム
<form> <p> <label for="name">お名前: </label> <input type="text" name="name" id="name"> </p> <p> <label for="email">Eメール: </label> <input type="text" name="email" id="email"> </p> <p> <label for="opinion">ご意見: </label> <textarea name="opinion" id="opinion"></textarea> </p> <input type="submit" value=" 送信 "> </form>
上記フォームから
(HTMLファイルから部分的に抜粋しているものとみなしてください)
confirm.php へデータ送信された時、その内容を confirm.php に表示したい。
指示に従い、コードを記述せよ。
<?php if(!isset($_POST['']) || !isset($_POST['email']) || !isset($_POST['opinion'])) { header('Location:./form.php'); exit; } // 【問1】ここに POST送信されたデータを、任意に作成した変数に代入するコードを記述せよ ?> <table> <tbody> <tr> <th>お名前: </th> <td> <?php //【問2】ここに問1で作った変数を利用し、XSS対策を施した【名前】を表示せよ ?> </td> </tr> <tr> <th>Eメール: </th> <td> <?php //【問3】ここに問1で作った変数を利用し、XSS対策を施した【Eメール】を表示せよ ?> </td> </tr> <tr> <th>お問合せ内容: </th> <td> <?php //【問4】ここに問1で作った変数を利用し、XSS対策を施した【ご意見】を表示せよ ?> </td> </tr> </tbody> </table>
【問1】上記コード内の【問1】の場所に、POST送信されたデータを、任意に作成した変数に代入するコードを記述せよ。
以下に記述してみよう。
【問2】ここに問1で作った変数を利用し、XSS対策を施した【お名前】を表示せよ
【問3】ここに問1で作った変数を利用し、XSS対策を施した【Eメール】を表示せよ
【問4】ここに問1で作った変数を利用し、XSS対策を施し、さらにフォームで入力された改行が反映される形で記述すること
【答え】
【問1】 $name = $_POST['name']; $email = $_POST['email']; $opinion = $_POST['opinion']; 【問2】 <?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8'); ?> 【問3】 <?php echo htmlspecialchars($age,ENT_QUOTES,'UTF-8'); ?> 【問4】 <?php echo nl2br(htmlspecialchars($opinion,ENT_QUOTES,'UTF-8')); ?>
XSS、 htmlspecialchars、ENT_QUOTES など「???」と思ったら
PHP: htmlspecialchars - Manual