PHP中的表单:刷新页面时重新发送

时间:2018-03-03 17:44:18

标签: php forms page-refresh

在重新编辑页面时,使用表单的PHP代码有些麻烦。

我已经尝试准备代码示例以显示问题...

<html>
    <body>
        <form name="test" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
            City name: <input type="text" name="city"><br>
            <input type="submit" name="submit" value="Search"><br>
        </form>

        <?php
        if(isset($_POST['submit']))
        {
            $city = $_POST['city'];

            echo "The typed city is: ".$city;
        }
        ?>
    </body>
</html>

一切正常但如果你试图刷新页面(或浏览器中的 Ctrl + F5 ),会出现一条消息,要求我确认重新发送并重复该操作,而不是清除页面

enter image description here

我已经看到关于这个问题还有其他一些问题,但是我不能采用它们......任何帮助/例子?

修改

我已经解决了以这种方式更改原始代码的问题(从那里开始...... https://www.canbike.org/information-technology/php-form-clear-data-on-refresh-or-back-button-press.html

第一个档案:NoRefreshForm.php

<?php
session_start();
$_SESSION['page1']=1;
?>

<html>
<body>
    <form name="test" action="NoRefreshCalculate.php" method="post">
        City name: <input type="text" name="city"><br>
        <input type="submit" name="submit" value="Search" />
    </form>
</body>
</html>

第二档:NoRefreshCalculate.php

<?php
session_start();
?>

<html>
<body>
    <?php
        if (isset($_POST['city']) && isset($_SESSION['page1']))
        {
            #Do calculation here. Store in $_SESSION.
            $_SESSION['page2']="2";

            $_SESSION['city']=$_POST['city'];
            header('Location: NoRefreshResults.php');
    }
        else
        {
            header('Location: NoRefreshForm.php');

        }
    ?>
</body>
</html>

第三档:NoRefreshResults

<?php
session_start();
?>

<html>
<body>
  <form action="NoRefreshCalculate.php" method="post">
    City name: <input type="text" name="city"><br>
    <input type="submit" name="submit" value="Search" />
  </form>

    <?php
        if (isset($_SESSION['page2']))
        {
            # echo results
            if (isset($_SESSION['city'])) {
              echo "City name = ".$_SESSION['city'];
            }

            session_destroy();
            session_start();
            $_SESSION['page1']=1;
        }
        else
        {
            header('Location: NoRefreshForm.php');
        }
    ?>
</body>
</html>

通过这种方式,您可以在重新加载时提交文本,详细说明并刷新页面而不显示浏览器消息。我希望这可以帮助有同样问题的人

0 个答案:

没有答案