这是我目前拥有的代码的简化版本:
<!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
?
答案 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