在重新编辑页面时,使用表单的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 ),会出现一条消息,要求我确认重新发送并重复该操作,而不是清除页面
我已经看到关于这个问题还有其他一些问题,但是我不能采用它们......任何帮助/例子?
修改
我已经解决了以这种方式更改原始代码的问题(从那里开始...... 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>
通过这种方式,您可以在重新加载时提交文本,详细说明并刷新页面而不显示浏览器消息。我希望这可以帮助有同样问题的人