我正在尝试创建一个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”,系统将显示错误消息。
有没有人有更有效的方式?
答案 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()
对于广播/复选框更有效。看看以下内容以及两者之间的差异: