PHP在提交后保留打印/回显值

时间:2016-08-18 15:58:21

标签: php echo

这是我目前拥有的代码的简化版本:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form name="form" action="" method="post">
            <input name="button1" type="submit" value="Submit">
        </form>
        <hr>
    </body>
</html>
<?php
    if (isset($_POST['button1'])){ 
        echo 'Test';
    }
?>

并且当我单击按钮一次时此代码输出Test,但是当我再次单击它时,它会清除第一个回声并重新打印它,因此输出仍然是一个Test。在PHP中是否有任何方法可以阻止它清除第一个回声,以便输出变为TestTest

2 个答案:

答案 0 :(得分:3)

网络是无国籍的。每次单击“提交”时,您都会启动一个新请求(就服务器而言)来自一个全新的用户。 Web服务器无法记住(或者不关心)您之前提出的请求。单击提交按钮的操作会创建一个新请求并从头开​​始加载页面。

PHP可以通过使用会话来维护状态信息。会话是PHP的说法&#34;嘿,我知道这个人是谁,我以前见过他们&#34;。

您可以使用会话以下列方式执行此操作。

<?php 
session_start();
?>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form name="form" action="" method="post">
            <input name="button1" type="submit" value="Submit">
        </form>
        <hr>
    </body>
</html>
<?php

    if (isset($_POST['button1'])){ 
        $_SESSION["counter"] = (isset($_SESSION["counter"])?$_SESSION["counter"]:0) + 1;
        for ($i = 0;$i < $_SESSION["counter"];$i++) 
            echo 'Test';
    }
?>

答案 1 :(得分:2)

您可以设置session variable

<?php 

session_start();

        if (isset($_POST['button1'])){ 
            if(isset($_SESSION['myvar'])){
                $_SESSION['myvar'] .= 'Test';
            }else {
                $_SESSION['myvar'] = 'Test';
            }
            echo $_SESSION['myvar'];
        }
    ?>
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
        <form name="form" action="" method="post">
            <input name="button1" type="submit" value="Submit">
        </form>
        <hr>
    </body>
</html>

我没有测试过这段代码,但它应该可以运行

注意:如果您的会话未启动,您可能会捕获潜在的错误 这可能会回答您的原始问题,但根据您的最终目标,可能会有更好的解决方案。

确保在html标记上方包含上述php代码 编辑:注册Fred sugestions