-1

入力されたすべてのデータが数値であることを確認するために preg_replace 関数を使用しています。

次のようになります。

$name = $_POST['name'];
if( isset( $name ) ) $name = stripslashes( strip_tags( $name ) );
$name = preg_replace('/[^0-9]/', '', $name);
if (isset($name)){
if(!preg_match('/^[0-9]+$/', $name)){
    echo '<br>Invalid data';
} else {
$stmt = $db->prepare("INSERT INTO categories(post_topic) VALUES(:name)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
}
}

しかし、ページが最初にロードされると、$name が設定されていなくても、無効なデータが既に表示されます。値に無効な文字が含まれている場合にのみエラーメッセージが表示されるようにするにはどうすればよいですか?

4

1 に答える 1

0

POST が実際に発生したかどうかを確認する必要があります。現在、コードは無条件に実行されます:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    .... do your stuff here ...
}
于 2013-10-17T18:49:03.107 に答える