php - 如何在页面刷新后停止我的 php 表单重新提交输入
问题描述
<?php
$connection = mysqli_connect("host", "username", "password")
or die("Couldn't connect to the server"); //no issue
$db = mysqli_select_db($connection, "dbname")
or die("Couldn't select database"); //no issue
$sql = "INSERT INTO vendor-tbl(company_name, industry, details, website, data_type, start_date) VALUES ('".$_POST['company_name']."','".$_POST['industry']."','".$_POST['details']."','".$_POST['website']."','".$_POST['data_type']."','".$_POST['start_date']."')";
// mysqli_query(($connection,$sql);
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close(); //closes the connection
?>
<form autocomplete="on" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" role="form">
<label id="company_name">Company Name:</label><br/>
<input type="text" name="company_name" id="company_name" autocomplete='organization'><br/>
<label id="industry">Industry:</label><br/>
<input type="text" name="industry" id="industry" autocomplete='industry'><br/>
<label id="details">Details:</label><br/>
<input type="text" name="details" id="details" autocomplete='details'><br/>
<label id="website">Website:</label><br/>
<input type="text" name="website" id="website" autocomplete='website'><br/>
<label id="data_type">Data Type:</label><br/>
<input type="text" name="data_type" id="data_type" autocomplete='datatype'><br/>
<label id="start_date">Start Date:</label><br/>
<input type="text" name="start_date" id="start_date" autocomplete='startdate'><br/>
<button id="submitButton" value="submit" name="submit">Submit</button><br/>
</form>
当我在提交数据后刷新表单时,似乎将该数据添加到 phpmyadmin 中两次,如果我再次重新加载表单(空白表单),它会第三次添加数据等。有没有办法在不使用的情况下防止这种情况会话变量?我对 php 非常缺乏经验,但我尝试过使用会话变量,但我似乎没有让它工作。
解决方案
您想要做的是“发布/重定向/获取”,为此您使用 303。这样您发布一个帖子,然后“被迫”进行获取。当你 f5 时,你重新加载那个 get 而不是你的帖子..
看:
推荐阅读
- dialogflow-es - 未在 DialogFlow 上启动用于 Telegram 集成的 Bot
- flutter - Flutter 延迟动画代码错误:AnimationController.forward() 在 AnimationController.dispose() 之后调用
- github - 使用shields.io,如何设置特定版本的徽章?
- django - 外键不匹配 - “评论”引用“挑战”
- node.js - 如何使用 firebase、angular 和 node 进行服装身份验证?
- reactjs - 当软键盘打开时反应 pwa push ui top
- python - 是否有一种特定于“pathos”的方法来确定 CPU 内核的数量?
- httprequest - 为什么表单数据看起来像这样?
- ios - UICollectionView:组合布局禁用预取?
- javascript - Firestore - 获取文档后如何获取文档 ID?