Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在刷新后为数据库重新添加值?_Php_Database_File_Refresh_Add - Fatal编程技术网

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

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'][

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

    <?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我知道这一点。更新了我的答案。