有时$ _POST在表单提交后返回空结果

时间:2016-08-08 16:31:10

标签: php html forms post isset

我有一个HTML表单,我使用isset检查是否设置了POST个变量,然后我处理它们(通过电子邮件或Google电子表格发送)。 有时候我收到空的结果,比如变量是空的还是空的,甚至不是空的空格。为什么会这样?我错过了什么吗?

 <?php if(isset($_POST["name"]) && isset($_POST["tel"])){
      $name  = $_POST["name"];
      $phone  = $_POST["phone"];
      $message="Name: $name \nPhone : $phone \n";

      require 'PHPMailer/PHPMailerAutoload.php';

      $mail = new PHPMailer;
      $mail->setFrom('from@mail.com', 'From Name');
      $mail->addAddress('to@gmail.com', 'To Name');
      $mail->Subject  = 'Message Subject';
      $mail->Body     = $message; ?>

 <form enctype="multipart/form-data" action="#" method="post">                     
     <input id="name" type="text" name="name" title="Enter your name" placeholder="Name" required >      
     <input id="phone" type="phone" name="phone" pattern="0(6|5)([-. ]?[0-9]{2}){4}" title="Enter your phone" placeholder="Phone" required >
     <button type="submit" id="submit" name="submit">Send</button>                      
 </form>

P.S。这些字段有时可能包含RTL阿拉伯语条目。我还使用客户端Javascript验证来检查字段是否有效而不是空。我知道客户端验证可能会泛滥,因为它是客户端的,因为浏览器彼此不同,但是,我无法弄清楚空条目仍然从true返回if(isset($_POST[])!当isset($_POST[])字段为空时,这是input的正常行为吗?在我的情况下,检查!empty($_POST[])是否正确且相关?

1 个答案:

答案 0 :(得分:2)

isset()只是检查变量是否设置而不是NULL。

http://php.net/manual/en/function.isset.php

如果设置为空,则isset()返回TRUE。

您需要使用empty()来检查空值。

http://php.net/manual/en/function.empty.php

如果您知道要检查的内容,也可以对值进行严格检查:

if (isset($_POST['name']) && $_POST['name'] !== '')