-1

我是 PHP 的初学者。在我的代码中,我希望仅在单击(设置)提交按钮时才执行 php 脚本。所以当页面被刷新时,isset() 函数应该返回 false。这是 test.php 的代码

<html>
<head>
<title>A BASIC HTML FORM</title>
<?PHP
if (isset($_POST['Submit1'])) {
    $username = $_POST['username'];

    if ($username == "letmein") {
        print ("Welcome back, friend!");
    }
    else {
        print ("You're not a member of this site");
    }
}

else{
$username = "";
}
?>
</head>
<body>
<Form name ="form1" Method ="POST" Action ="test.php">
    <Input Type = "text" Value ="<?php print $username?>" Name ="username">
    <Input Type = "Submit" Name = "Submit1" Value = "Login">
</form>
</body>
</html>

单击登录按钮后,脚本被执行,输出为“你不是会员”,但是当我刷新页面时,来自脚本的消息仍然保留在屏幕上。我相信 isset() 应该返回 false 直到我再次单击该按钮?代码有什么问题。谢谢。

4

3 回答 3

2

意识到我的评论真的是一个答案......

当您“刷新”时,您会刷新包含 POST 数据的页面(因为这是最后一次“请求”)。您必须重新输入页面地址才能清除它。有时您会看到“您真的要再次发送此表单吗?” 刷新时提示 - 这就是为什么...

于 2013-04-16T23:41:18.873 回答
1

Isset() 用于检查变量示例: $variable 实际上是“设置”并且不为空。此外,在进行刷新时,您还会刷新已提交的操作和已传递的表单数据。你可以这样想:

如果你去一个购物网站,他们告诉你在处理订单时不要刷新,这意味着如果你刷新你的帖子数据会再次提交,这意味着你买了 2 个微波炉而不是 1 个 :)

所以在编码中它看起来像这样:

if (isset('$_POST['username']')) {
    $username = $_POST['username'];

    if($username == 'letmein') {
         echo ("welcome back, friend!");
    }
}

希望这会有所帮助。祝你好运!此外,如果您曾经在“John”上并需要阅读材料,请查看php 手册页!

于 2013-04-16T23:43:36.453 回答
0

刷新页面将再次发布已发布的表单变量,因此每次刷新页面时,您都在重新提交表单,并且您将始终满足isset条件为真 :)

如果您需要更多解释,请告诉我:)

于 2013-04-16T23:41:24.197 回答