0

尝试通过测试和尝试方法学习 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";
          }
?>

在这两种情况下(空输入或填充输入)我都收到第一条消息“输入已设置”!你能告诉我为什么会这样吗?

4

5 回答 5

2

这是因为如果没有填写表单,也user_input有一次提交,为了避免错误,只需添加一个检查isset!empty

if(isset(($_POST['user_input'])) && (!empty($_POST['user_input'])))
于 2013-05-27T22:39:40.850 回答
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

于 2013-05-27T22:40:46.667 回答
0

我推荐你使用 strlen() 有两个原因:

if (strlen($_POST['user_input']) > 0 && strlen($_POST['user_input']) < 80)
{ ... }
  1. 您可以确定变量不仅被设置,而且它实际上包含数据
  2. 例如,您应该限制 POST 和 GET 中的字符串,以避免长时间注入的查询。

最好是在一个小助手函数中为安全和 isset 检查制作自己的包装器。

于 2013-05-27T22:54:25.430 回答
0

你可以尝试类似的东西

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

否则使用if (!empty($_POST['user_input'])

检查它是否具有任何价值。那应该工作

于 2013-05-27T22:39:34.020 回答
0

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

精简版:

<?php
  echo isset($_POST['user_input']) && !empty($_POST['user_input'] ? "Input is set" : "not set";
?>
于 2013-05-27T22:42:47.693 回答