PHP在刷新后为数据库重新添加值?
这听起来可能有点愚蠢,但我有一个代码,每当我点击submit时,它都会将文件提交到数据库(并读取文件),并且一切都很正常,除了刷新页面后,它会重新添加我选择的最后一个值。以下是问题所在的代码:PHP在刷新后为数据库重新添加值?,php,database,file,refresh,add,Php,Database,File,Refresh,Add,这听起来可能有点愚蠢,但我有一个代码,每当我点击submit时,它都会将文件提交到数据库(并读取文件),并且一切都很正常,除了刷新页面后,它会重新添加我选择的最后一个值。以下是问题所在的代码: <?php mysql_connect("localhost","root",""); mysql_select_db("a1296556_data1"); if(isset($_POST['submit'])){ $name=$_FILES['file'][
<?php
mysql_connect("localhost","root","");
mysql_select_db("a1296556_data1");
if(isset($_POST['submit'])){
$name=$_FILES['file']['name'];
$temp=$_FILES['file']['tmp_name'];
move_uploaded_file($temp,"uploaded/".$name);
$url="http://www.bluejayke.com/edit/uploaded/$name";
}
?>
<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit" value="Upload">
</form>
<iframe src='video.php' width=250 height=600></iframe>
<?php
if(isset($_POST['submit'])){
mysql_query("INSERT INTO uploadedvideos(id,name,url) VALUES('','$name','$url')");
echo "</br>" . $name . " uploaded";
}
?>
这是正确的功能。点击刷新将重新提交表单及其所有数据。这是正确的功能。点击“刷新”将重新提交表单及其所有数据。当表单提交时,浏览器会发出POST
请求。刷新时,浏览器会发出最后一个请求,从而再次提交表单。但是,大多数浏览器在提交表单后刷新之前都会询问您。为了避免这种情况,当表单提交时,浏览器会发出一个POST请求。刷新时,浏览器会发出最后一个请求,从而再次提交表单。但是,大多数浏览器在提交表单后刷新之前都会询问您。为了避免这种情况,.首先停止使用mysql_*函数,因为它们已经被弃用,而是开始使用准备好的语句PDO或MySQLi
1方法(我喜欢的方法):
您需要某种随机/唯一的令牌,需要将其保存在表中以供表单提交
在表单中隐藏输入字段,如下所示:
<input type="hidden" value="<?=md5(time())?>" name="my_form_token" />
首先,停止使用mysql_*函数,因为它们已经被弃用,而是开始使用准备好的语句PDO或MySQLi
1方法(我喜欢的方法):
您需要某种随机/唯一的令牌,需要将其保存在表中以供表单提交
在表单中隐藏输入字段,如下所示:
<input type="hidden" value="<?=md5(time())?>" name="my_form_token" />
刷新已发布的页面时,大多数浏览器会询问您是否要重新发布。发生这种情况了吗?在将文件类型移动到web目录之前,请检查这些文件类型。你的代码有很多错误!这真是讨厌的代码。SQL注入问题,糟糕的文件上传处理。完全没有任何错误检查。我不认为我可以写一个不那么安全/有问题的脚本,如果我尝试的话。就像现在一样,一个脚本可以通过眨眼来接管你的服务器。当刷新发布的页面时,大多数浏览器会询问你是否要重新发布。发生这种情况了吗?在将文件类型移动到web目录之前,请检查这些文件类型。你的代码有很多错误!这真是讨厌的代码。SQL注入问题,糟糕的文件上传处理。完全没有任何错误检查。我不认为我可以写一个不那么安全/有问题的脚本,如果我尝试的话。就像现在一样,一个脚本可以通过眨眼来接管你的服务器。@BartFriederichs我知道这一点。更新了我的答案。@BartFriederichs我知道这一点。更新了我的答案。