PHP表单$ _POST传递数据,但变量偶尔会为空

时间:2017-01-07 19:24:01

标签: php mysql forms post form-submit

我有一个基于这个简单代码的表单。它在999/1000个案例中运行得很好,但昨天我在数据库中有空白行,在电子邮件中有空白变量。它从未发生过。我发现,填写表单的客户端正在填写移动设备,安卓程序,它已正确填充,但随后空白变量来找我。真的不知道问题在哪里,因为每次我测试它都会有效。有什么想法吗?

<form method="post" action="">
Username: <input type="text" name="username" required> 
Email: <input type="email" name="email" required>
<input type="submit">
</form>

表格是这样的:

{{1}}

3 个答案:

答案 0 :(得分:0)

看起来您依赖于可以轻松绕过的客户端验证。

我建议检查$ _POST数组中的用户名和电子邮件密钥是否具有值,然后再将它们插入数据库并发送电子邮件。

例如:

if (isset($_POST['username']) && isset($_POST['email'])) {
  // Insert and send email
}

答案 1 :(得分:0)

并非所有浏览器都会尊重required属性,因此您应该在服务器端验证$ _POST值。

类似的东西:

<?php

include 'dbconn.php';
require 'PHPMailerAutoload.php';

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

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

if(isset($username) && isset($email)){
    $resultSet = $con->query("INSERT INTO `contact` (`username`,`email`) VALUES ('$username','$email')");

    $message='Variable username:'.$username.', variable email: '.$email;   
    $mail = new PHPMailer;
    $mail->CharSet = 'UTF-8';
    $mail->addAddress($to);
    $mail->Subject = 'Subject';
    $mail->msgHTML($message);
    $mail->WordWrap = 50;
    $mail->send();

    }
} else {
    // echo fail response
}
?>

答案 2 :(得分:0)

如果为null,则可以检查它们是否为null,然后不处理它

<?php
include 'dbconn.php';
require 'PHPMailerAutoload.php';
if(isset($_POST['submit'])) {
    $username=$_POST['username'];
    $email=$_POST['email'];
    if(!is_null(trim($email))&& !is_null(trim($username))){
        $resultSet = $con->query("INSERT INTO `contact` (`username`,`email`) VALUES ('$username','$email')");
        $message='Variable username:'.$username.', variable email: '.$email;   
        $mail = new PHPMailer;
        $mail->CharSet = 'UTF-8';
        $mail->addAddress($to);
        $mail->Subject = 'Subject';
        $mail->msgHTML($message);
        $mail->WordWrap = 50;
        $mail->send();
    }
}
?>