php - MySQL 和 PHP 代码允许空表单字段数据

标签 php mysql forms

我在这个网站上看到了很多类似的问题,但我还没有找到适合我的代码的解决方案。我确实使用了 if(isset($_POST['submit'])) {} 和 if 语句来尝试阻止我的脚本插入空表单字段数据,但它还没有起作用。只是一个注释;我知道我的代码中存在安全缺陷。我只是想保持简单,这样每个人都可以更轻松地帮助我:)这就是我所拥有的:

 <body>

    <?php

    if (isset($_POST['submit'])) {

    $dbc = mysqli_connect('localhost', 'username', 'password', 'bcd_email_app')
    or die('Error connecting to MySQL server');

    $query = "INSERT INTO email_subscribers (name, username, email)" .
    "VALUES ('$name', '$username', '$email')";

    mysqli_query($dbc, $query)
    or die('Error querying database');

    echo 'Thanks for subscribing '. $username .'!!<br />';
    echo '<a href="index.php">Go Back</a>';

    mysqli_close($dbc);

    $name = $_POST['name'];
    $username = $_POST['username'];
    $email = $_POST['email'];

    $output_form = false;

    //checking that all form fields have been filled out and if not displaying the form with sticky data
    if (empty($name) && (empty($username) && (empty($email)))) {
        echo 'Please enter your information for all fields. <br />';
        $output_form = true;
    }
    if (empty($name) && (!empty($username) && (!empty($email)))) {
        echo 'Please enter your name. <br />';
        $output_form = true;
    }
    if (!empty($name) && (empty($username) && (!empty($email)))) {
        echo 'Please enter your username. <br />';
        $output_form = true;
    }
    if (!empty($name) && (!empty($username) && (empty($email)))) {
        echo 'Please enter your email address. <br />';
        $output_form = true;
    }
    if (empty($name) && (empty($username) && (!empty($email)))) {
        echo 'Please enter your name and username. <br />';
        $output_form = true;
    }
    if (empty($name) && (!empty($username) && (empty($email)))) {
        echo 'Please enter your name and email address. <br />';
        $output_form = true;
    }
    if (!empty($name) && (empty($username) && (empty($email)))) {
        echo 'Please enter your username and email. <br />';
        $output_form = true;
    }
} else {
    $output_form = true;
}
if ($output_form) {

    ?>

在此处形成标记

</body>

我还尝试说 name && username && email 是否不为空,如下所示:

if (isset($_POST['submit'])) && (!empty($_POST['name'])) && (!empty($_POST['username'])) && (!empty($_POST['email']))) {...}

随着帖子提交,这没有做任何事情。有解决办法吗?我这样做完全错了吗?哈哈

预先感谢您的帮助!

最佳答案

如果将数据插入数据库后进行验证,如何期望不插入空数据?

首先验证数据,如果数据为空则显示错误,只有验证成功后才将其插入数据库。

关于php - MySQL 和 PHP 代码允许空表单字段数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40735787/

相关文章:

php - Laravel 更新模型,具有唯一的属性验证规则

php - 管理多个共享重叠函数和类的代码库

mysql - 无法截断在 Codeigniter 中的外键约束中引用的表

mysql - 无法添加外键约束

php - MySQL 多插入? INSERT 失败后的 MySQL 数据库完整性

javascript - 我的网页中有两个具有相同代码的表单,但第二个表单不起作用

javascript - 如何启用禁用的文本字段?

php - 关于 Prepared Statements 的几个问题

python - 提交表单时HttpResponse不会显示 `post`信息

php - 为 "chat history"的每个用户 ID 选择仅一个结果