0

私は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」と表示されます。それを行う方法はありますか?

これらの問題の助けをいただければ幸いです。

4

2 に答える 2

1

あなたの問題は、あなたが行ったことで== falseありstrpos、 として評価される 0 (最初の文字のインデックス) を返すことができるということですfalse。値がブール値の false であり、false と評価される値ではないことを確認する which と交換== falseします。http://php.net/manual/en/function.strpos.php=== falseの「戻り値」セクションを参照してください。

$badchar の値を出力するには、行を次のように変更します。

$strmsg = '<span class="error"> The field contained the following invalid characters: '.$badchar.'</span>';

これにより、変数が文字列に連結されます

于 2013-05-03T16:32:00.563 に答える