PHP刷新后重新为数据库添加值?

时间:2013-02-18 21:47:28

标签: php database file refresh add

这可能听起来很吵,但我有一个代码,每当我点击提交时都会将文件提交到数据库(并读取文件),一切都运行正常,除非我刷新页面后重新添加最后一个值我选定的。以下是问题所在的代码:

    <?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";
    }
    ?>

任何输入?

3 个答案:

答案 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语句进行检查。如果存在则不更新数据库。如果它存在,那么用令牌和你的文件更新表。

第二种方式是在提交到其他页面后重定向。