私はPHPを使用してフォームを検証しようとしています。フォームはユーザーに詳細を入力するように要求し、フォームが検証されるとデータベースのテーブルに入力されます。フォームに名フィールドがあり、入力された値 (必須フィールド) があり、アルファベット文字またはハイフン (-) 文字のみが含まれていることを確認するために、それを検証しようとしています。
これが私がこれまでに持っているものです:
<?php
if (isset($_POST["submit"])) {
$flag = false;
$badchar = "";
$string = $_POST["fname"];
$string = trim($string);
$length = strlen($string);
$strmsg = "";
if ($length == 0) {
$strmsg = '<span class="error"> Please enter your first name</span>';
$flag = true;}
else {
for ($i=0; $i<$length;$i++){
$c = strtolower(substr($string, $i, 1));
if (strpos("abcdefghijklmnopqrstuvwxyz-", $c) == false){
$badchar .=$c;
$flag = true;
}
}
if ($flag) {
$strmsg = '<span class="error"> The field contained the following invalid characters: $badchar</span>';}
}
if (!$flag) {
$strmsg = '<span class="error"> Correct!</span>';}
}
?>
<h1>Customer Information Collection <br /></h1>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo" >
<table>
<tr>
<td><label for="custid">Customer ID (integer value): </label></td>
<td><input type="text" id="custid" name="custid" value="<?php echo $temp ?>" size=11 /><?php echo $msg; ?></td>
</tr>
<tr>
<td><label for="customerfname">Customer First Name: </label></td>
<td><input type="text" id="fname" name="fname" size=50/><?php echo $strmsg; ?></td>
</tr>
私が抱えている問題は、正しい文字列 (John など) を入力しても、「フィールドに次の無効な文字が含まれています: $badchar」というエラーが表示されることです。エラーメッセージの $badchar の代わりに間違った文字が表示されますが、代わりに「フィールドに次の無効な文字が含まれています: $badchar」と表示されます。それを行う方法はありますか?
これらの問題の助けをいただければ幸いです。