我正在使用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未设置,它也会显示无效数据。我如何才能使错误消息仅在值中包含无效字符时显示?
答案 0 :(得分:0)
您需要检查POST是否确实发生过。现在你的代码无条件运行:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
.... do your stuff here ...
}