首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么!isset似乎不起作用?

为什么!isset似乎不起作用?
EN

Stack Overflow用户
提问于 2011-04-11 06:04:40
回答 4查看 3.4K关注 0票数 1

我是PHP世界的新手,我已经组装了一个表单,它可以将输入的值相乘。但是,当我尝试验证某人是否没有输入任何值以返回错误消息时,它确实显示了该消息。下面是我的代码。如果你也能提出改进建议,我将不胜感激。

代码语言:javascript
复制
<?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>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-11 06:07:34

我认为isset将确保变量不是空的,然而,“NULL”与null不同。如果您提交的表单的值为空值,则该变量仍在设置中,它只是为空。

票数 7
EN

Stack Overflow用户

发布于 2011-04-11 06:08:18

提交表单时,输入字段的内容将发送到服务器。

如果这些输入字段为空,则服务器将为每个输入获取一个空字符串--但它会获得一些内容;因此,设置了$_POST["start"], $_POST["end"], $_POST["multiplication"]项--即使它们只包含空字符串。

你可以检查:

如果字段包含空字符串,则为

  • if (empty($_POST["start"]))

如果字段仅包含空格,则为

票数 2
EN

Stack Overflow用户

发布于 2011-04-11 06:08:25

如果没有定义字段,您的代码将在<html>标记出现之前在html中打印您的消息。大多数浏览器不会显示它,或者在意想不到的地方显示它。

您应该将消息显示移动到html中用户可以看到它的某个位置。

正如其他人指出的,除了在第一次调用页面时,字段将具有空值,但仍然存在(因此isset将返回TRUE)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5615050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档