我是PHP的新手,并且已经整合了一个将输入值相乘的表单。但是,当我尝试验证某人是否未输入任何值以返回错误消息时,它会显示该消息。我的代码如下。感谢您是否也可以提出改进建议。
<?php
$counter = 0;
if(isset($_POST["submit"])) {
$start = $_POST["start"];
$end = $_POST["end"];
$multiply = $_POST["multiplication"];
// if($_POST["start"] == "" && $_POST["end"] == "" && $_POST["multiplication"] == "") {
// print "Please enter some values";
// }
if(!isset($_POST["start"], $_POST["end"], $_POST["multiplication"])) {
print "Please enter some values";
}
// for($start;$start<$end;$start++) {
// $counter = $counter +1;
// $multiplication = $counter * $multiply;
// print "$counter <br />";
// print "$counter multiplied by $multiply = $multiplication <br />";
// }
}
?>
<html>
<head>
<title>Sample Multiplication</title>
</head>
<body>
<form name="multiply" method="post" action="multiplication_sample.php">
<input type="text" name="start" value="<?php if(isset($_POST["start"])) { print $start; } ?>">
<input type="text" name="end" value="<?php if(isset($_POST["end"])) { print $end; } ?>">
<input type="text" name="multiplication" value="<?php if(isset($_POST["multiplication"])) { print $multiply; } ?>">
<input type="submit" name="submit" value="submit">
</form>
<?php
if(isset($_POST["submit"])) {
for($start;$start<$end;$start++) {
$counter = $counter + 1;
$multiplication = $counter * $multiply;
print "$counter multiplied by $multiply = $multiplication <br />";
}
}
?>
</body>
</html>
答案 0 :(得分:7)
我认为isset
会确保变量不是NULL
,但是“空白”与null不同。如果您提交带有空白值的表单,则该变量仍处于设置状态,它只是空的。
答案 1 :(得分:2)
提交表单后,输入字段的内容将发送到服务器。
如果这些输入字段为空,则服务器为每个输入获取一个空字符串 - 但它得到了一些东西;因此,$_POST["start"], $_POST["end"], $_POST["multiplication"]
项已设置 - 即使它们只包含空字符串。
您可以查看:
if ($_POST["start"] === '')
if (trim($_POST["start"]) === '')
empty
:if (empty($_POST["start"]))
答案 2 :(得分:0)
如果字段未定义,则代码会在<html>
标记出现之前在html中打印您的消息。大多数浏览器不会显示它或在意外的地方显示它。
您应该将消息显示移动到用户可以看到的html中的某个位置。
正如其他人指出的那样,除了第一次调用页面外,字段的值仍为空值但仍然存在(因此isset
将返回TRUE
)
答案 3 :(得分:0)
我希望,我理解你是对的。它是
if(!isset($_POST["start"], $_POST["end"], $_POST["multiplication"])) {
print "Please enter some values";
}
效果不如预期?看来,假设一个空字符串意味着什么都没有设置,什么是不正确的。
$x = "";
isset($x); // true
改为使用empty()
或$_POST['start'] == ''
。