首页 > 解决方案 > 如何在页面刷新后停止我的 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 非常缺乏经验,但我尝试过使用会话变量,但我似乎没有让它工作。

标签: php

解决方案


您想要做的是“发布/重定向/获取”,为此您使用 303。这样您发布一个帖子,然后“被迫”进行获取。当你 f5 时,你重新加载那个 get 而不是你的帖子..

看:


推荐阅读