プロが教えるわが家の防犯対策術!

同一フォーム内PHPへ、フォームをポストした際、
フォーム入力チェックを行い誤りがあれば、
元のフォームに入力したデータを残したいのですがどのようにすればよいでしょうか?

結果によって分岐せずに、フォームに必ず値が残ると言う方法でもかまいません。

//ここから
<form method="post" action ="">
<table>
<tr>
<td><input name="title" size="20"></td>
<td><input type="submit" name="send" value=" 登録 "></td>
</tr>
</table>

</form>

<?php
if(len_check($_POST['title'])>8){
echo "文字数オーバーです。";
//フォームに値を戻す処理。
}else{
echo "入力した文字={$_POST['title']}";
//フォームの値は破棄。
}

function len_check($s){
return strlen(bin2hex($s)) / 2;
}
?>

A 回答 (1件)

長さのチェックをする場合はマルチバイト系の関数を使った方がよいかもしれません。


またバリデート自体はもっと厳密に行った方がいいですが、
最低限htmlspecialcharsはしておいた方がいいです
その際はmb_internal_encoding()の指定をわすれずに

<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<?php
mb_internal_encoding("EUC-JP");
$title=$_REQUEST['title'];
if(mb_strlen($title)>8){
echo "文字数オーバーです。";
$title="";
}
$title=htmlspecialchars($title);

?>
<form>
<input type="text" name="title" size="20" value="<?PHP print $title;?>">
<input type="submit" name="send" value=" 登録 ">
</form>
    • good
    • 0
この回答へのお礼

詳しく教えていただきありがとうございます。
該当方法で解決いたしました。

お礼日時:2011/04/18 22:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!