サニタイズについて教えて下さい。
PHPで問い合わせフォームを作成しましたが、サニタイズされているかがわかりません。
以下は、submit後のphpファイルですが、サニタイズされていなければ、どこにどのようなコードを記述すれば良いのでしょうか?
また、サニタイズはhtmlsprcialcharsの他になにかあるのでしょうか?
function myEcho($errorBool, $value) {
if($errorBool) {
echo'<FONT COLOR="#cc3333">',$value,'</FONT><br/>';;
}
else
{
echo $value;
}
}
// list用?
function myListEcho($errorBool, $value) {
if($errorBool) {
echo'お問い合せ内容をお選びください<FONT COLOR="#cc3333"> ※必ず入力してください。</FONT>';;
}
else
{
echo $value;
}
}
// 名前のチェック
$name=$_POST['name'];
$nameError = false;
if($name=='')
{
$nameError = true;
$name = '※必ず入力してください。';;
}
// E-mailのチェック
$mail=$_POST['mail'];
$mailError = false;
$mail2=$_POST['mail2'];
$mail2Error = false;
if (!preg_match(
'/^[a-z0-9][a-z0-9_\.\-]*@[a-z0-9][a-z0-9_\.\-]+[a-z]$/i',
$mail)) {
$mailError = true;
$mail='※正しいメールアドレスを指定してください。';
}elseif($mail!==$mail2) {
$mailError = true;
$mail='※確認用メールアドレスと一致していません。';
}
// 確認用チェック
if($mail2=='')
{
$mail2Error = true;
$mail2='※必ず入力してください。';
}
// お問い合わせ内容確認?
$list=$_POST['list'];
$listError = false;
if($list=='お問い合せ内容をお選びください')
{
$listError = true;
}
// 内容
$content=$_POST['content'];
$contentError = false;
if($content=='')
{
$contentError = true;
$content='※必ず入力してください。';;
}
?>
<?php
if($nameError || $mailError || $mail2Error || $listError || $contentError)
{
echo'<p align="center"><FONT COLOR="#cc3333">入力内容に誤りがあります。※印の項目は必ずご記入ください。</FONT></p>';;
}
else{
echo'<p class="text4">以下の内容で送信しますか?</p>';;
}
?>
<table class="table margin01" width="592" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="190" align="left" bgcolor="#FFF09D">お名前<span class="tabletext1"></span></td>
<td>
<?php
myEcho($nameError,$name);;
?>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFF09D">メールアドレス<span class="tabletext1"></span></td>
<td>
<?php
myEcho($mailError,$mail);;
?>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFF09D">メールアドレス(確認)<span class="tabletext1"></span></td>
<td>
<?php
myEcho($mail2Error,$mail2);;
?>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFF09D">お問い合せ内容<span class="tabletext1"></span></td>
<td>
<?php
myListEcho($listError,$list);;
?>
</td>
</tr>
<tr>
<td align="left" bgcolor="#FFF09D">内容<span class="tabletext1"></span></td>
<td>
<?php
myEcho($contentError,$content);;
?>
</td>
</tr>
</table>
<?php
if($nameError || $mailError || $mail2Error || $listError || $contentError)
{
echo'<form>';
echo'<p align="center" class="margin01"><input type="button" value="戻る" onclick="history.back()"</p>';
echo'</form>';
}
else
{
echo'<form method="post"action="thanks.php">';
echo'<input type="hidden" name="name" value="'.$name.'">';
echo'<input type="hidden" name="mail" value="'.$mail.'">';
echo'<input type="hidden" name="mail2" value="'.$mail2.'">';
echo'<input type="hidden" name="list" value="'.$list.'">';
echo'<input type="hidden" name="content" value="'.$content.'">';
echo'<p align="center" class="margin01"><input type="button"onclick="history.back()"value="戻る">';
echo'<input type="submit"value="OK"></p>';
echo'</form>';
}
?>
お礼
ヒントありがとうございました、配列で実現できました。 valueで持ってきたものを添字にして、キーと値を格納する方法で実現できました。
補足
お返事ありがとうございます。 配列ですが、全く考えても見ませんでした…。 どのように書くと効率がよさそうでしょうか。 大変お手数おかけしますが、ご教授いただけますとありがたいです。