-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 回答