Isset()函数问题

时间:2013-05-27 22:37:16

标签: php isset

尝试使用test和try方法学习PHP我正在努力学习isset()。 这是我的代码:

<form action="validate.php" method="POST">
  <label title="User Input"> Custom Header Name</label>
  <input type="text" name="user_input">
  <button  type="submit" id="pageName">Submit</button>
</form>

和PHP文件为

<?php
  if(isset($_POST['user_input']))
    {
     echo "Input Is Set";
    } else{
           echo "Not Yet Set";
          }
?>

我是两种情况(空或填充输入)我得到第一条消息“输入已设置”作为结果! 能告诉我为什么会这样吗?

5 个答案:

答案 0 :(得分:2)

这是因为user_input一旦提交表单也会isset,如果没有填写,为了避免错误,只需添加!empty支票

if(isset(($_POST['user_input'])) && (!empty($_POST['user_input'])))

答案 1 :(得分:1)

您可以这样做,而不是isset:

<?php
  if(isset($_POST['user_input']))
    {
    if (!empty($_POST['user_input'])) {
      echo "Input Is Set";
    } else {
      echo "Input is empty!";
    }
  } else{
   echo "Not Yet Set";
  }
?>

更多信息:http://php.net/manual/en/function.empty.php

答案 2 :(得分:0)

您可以尝试类似

的内容
<?php
  if($_POST['user_input'] != '')
    {
     echo "Input Is Set";
    } else{
           echo "Not Yet Set";
          }
?>

或者使用if (!empty($_POST['user_input'])

检查它是否包含任何值。这应该工作

答案 3 :(得分:0)

您检查它是否已设置但是您应该检查它是否为空。

简短版:

<?php
  echo isset($_POST['user_input']) && !empty($_POST['user_input'] ? "Input is set" : "not set";
?>

答案 4 :(得分:0)

我建议您使用strlen()有两个原因:

if (strlen($_POST['user_input']) > 0 && strlen($_POST['user_input']) < 80)
{ ... }
  1. 您可以确定变量不仅仅是设置,而且它确实包含数据
  2. 你应该从POST和GET中限制字符串,以避免长时间注入查询。
  3. 最好是制作自己的安全包装器,并在一个小帮助函数中进行isset检查。