如何检查用户文本框是否有效?

时间:2018-01-26 01:50:11

标签: php forms

我正在尝试创建一个PHP表单并检查文本框是否为空。我的代码:

<form method="post"> 
  Name: <input type="text" name="name">
  <span class="error">* <?php echo $nameErr;?></span>

//check user that fill in blank
if (empty($_POST["name"])) {
   $nameErr = "Name is required";
   }

这是检查用户填空的有效方法吗? 如果用户键入“0”,系统将显示错误消息。

有没有人有更有效的方式?

3 个答案:

答案 0 :(得分:0)

问题是以下值被认为是&#34; empty() &#34;:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)

因此,在验证变量实际包含数据时,除了empty()之外,您还需要检查 isset()

if (empty($_POST["name"]) || !isset($_POST["name"])) {
  $nameErr = "Name is required";
}

希望这有帮助! :)

答案 1 :(得分:0)

你可以使用trim()删除开头或结尾的空格,这样它也会删除一个空格

if (empty(trim($_POST["name"]))) {
  $nameErr = "Name is required";
}

或(以避免&#34; 0&#34;问题)

if (trim($_POST["name"]) !== "") {
  $nameErr = "Name is required";
}

答案 2 :(得分:0)

  

如果用户键入“0”,系统将显示错误消息

使用filter_var(),更准确地说FILTER_VALIDATE_INT

见内部评论:

$input = 0; // is an integer and will not echo

if(filter_var($input, FILTER_VALIDATE_INT) === false){
  echo "The input is not an integer";
}

$input = "0"; // is an integer and will not echo

if(filter_var($input, FILTER_VALIDATE_INT) === false){
  echo "The input is not an integer";
}

$input = "text"; // is NOT an integer and will echo

if(filter_var($input, FILTER_VALIDATE_INT) === false){
  echo "The input is not an integer";
}

$input = "text123"; // is NOT an integer and will echo

if(filter_var($input, FILTER_VALIDATE_INT) === false){
  echo "The input is not an integer";
}

至于你:

  

这是检查用户填空的有效方法吗?

  • empty()在这里运作良好,因为isset()对于广播/复选框更有效。

看看以下内容以及两者之间的差异: