空的php没有捕获空字符串

时间:2017-12-30 04:03:03

标签: php

我很困惑如何使用isset和empty,我试图编写一个简单的api,如果param为null,应该有错误说明哪个param丢失并返回错误。

下面我的陈述有什么不对?

$email= isset($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : '';
if(empty($email)) {
    echo 'email cannot be empty!'
}

5 个答案:

答案 0 :(得分:1)

您实际上并不需要同时使用issetempty,因为empty已经这样做了。

  

如果变量不存在,则不会生成警告。这意味着   empty()本质上是!isset($ var)||的简洁等价物$ VAR   == false。

更多详情请点击此处: http://php.net/manual/en/function.empty.php

所以你的代码可以这样看,例如:

if (empty(trim($_POST['email']))) {
    echo "Email cannot be empty!\n";
    // you should add return or raise exception here
    // or even exit
    exit;
}

$email = trim($_POST['email']);

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Your email {$email} is invalid\n";
    // you should add return or raise exception here
    // or even exit
    exit;
}

$email = mysqli_real_escape_string($email);

答案 1 :(得分:0)

我认为您正在尝试检查$email值为null。您应该在if语句中检查$fname

答案 2 :(得分:0)

$email更改为:

$email= isset($_POST['email']) && !empty($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : '';

因此$_POST['email']不包含空值。

答案 3 :(得分:0)

尝试使用下一个代码段

std::string

答案 4 :(得分:0)

尝试此操作以检查所有缺少的字段:

 $required_fields = array('email', 'name', 'password');
$err_msgs=array();
foreach($required_fields as $field) { 
  if(empty( $_POST[$field]) ){
  err_msgs[]= $field . ' cannot be empty!';
    }
  }

  if (!empty($err_msgs)) {
  echo json_decode($err_msgs);
  }

编辑:在阅读Axalix的答案后删除了isset()。