这可能听起来很吵,但我有一个代码,每当我点击提交时都会将文件提交到数据库(并读取文件),一切都运行正常,除非我刷新页面后重新添加最后一个值我选定的。以下是问题所在的代码:
<?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";
}
?>
任何输入?
答案 0 :(得分:2)
当表单提交时,浏览器会发出POST
个请求。刷新时,浏览器会发出上一个请求,从而再次提交表单。但是,大多数浏览器会在提交表单后提醒您。为了避免这种情况,you should redirect after a POST。
答案 1 :(得分:0)
这是正确的功能。点击刷新将重新提交表单和所有数据。
答案 2 :(得分:0)
首先停止使用mysql_ *函数,因为它们已被弃用,而是开始使用预处理语句PDO或MySQLi。
这样做的一种方式(我的首选方式): 您需要某种随机/唯一的令牌,您需要将其保存在表格中以便提交表单。
在表单中隐藏了输入字段,如下所示:
<input type="hidden" value="<?=md5(time())?>" name="my_form_token" />
在更新表之前,如果表中已存在给定标记,则必须使用select语句进行检查。如果存在则不更新数据库。如果它存在,那么用令牌和你的文件更新表。
第二种方式是在提交到其他页面后重定向。