2016-11-22 48 views
0

我在这个网站上看到很多类似的问题,但我还没有找到我的代码的解决方案。我确实使用if(isset($ _ POST ['submit'])){}和if语句来配合它来试图阻止我的脚本插入空的表单字段数据,但它还没有工作。只是一张纸条;我意识到我的代码中存在安全漏洞。我只是试图保持它简单,所以它会更容易为大家帮帮我:)下面是我有:MySQL和PHP代码允许空的表单字段数据

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

我也想说,如果命名& & &名电子邮件&不空这样的:

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

无线提交后,这没有做任何事情。有解决方案吗?我完全错了吗?大声笑

在此先感谢您的帮助!

+0

为什么你不需要输入字段? 此外表格标记丢失? – Mitch

+0

''你已经完成 – Irvin

+0

验证客户端的输入字段 – user3040610

回答

0

你怎么能指望,如果你将其插入到数据库后进行验证,以不插空的数据?

首先验证数据,并在数据为空时显示错误,并且只有在验证成功时才将其插入数据库。

+1

这实际上非常有帮助!我最终创建了另一个,如果在空字段检查结束时进行检查,以确保没有任何字段为空,并且没有任何字段连接到数据库。似乎到目前为止工作很好。谢谢!! – artwired

0

我使用strlen

if (strlen($_POST['name']) > 0 and strlen($_POST['email']) > 0){ 
    //do stuff 
} 

if (strlen($_POST['name']) < 1){ 
    //do other stuff 
} 
+0

以及为什么它更好然后是空的? – 2oppin

+0

我遇到空白不匹配的情况。我不记得确切的情况。我只是不喜欢这个想法,因为var被设置,它只是设置为无。它可能是相同的使用空的,我刚刚发现更多的成功与strlen – bart2puck

+0

考虑这一点:strlen(0) ,我在说空虚不isset。 – 2oppin