单击“取消”按钮时,不会删除数据库行

时间:2012-05-06 13:32:36

标签: php javascript jquery sql ajax

我有一个“取消”按钮,当用户点击它时,它会重置源并删除iframe,以便在用户点击“取消”按钮后文件不会上传到服务器。这很好。

但我遇到的问题是,在用户点击“取消”按钮后,我也不希望它将行插入数据库。但正如我所说,如果上传文件然后在显示文件名的数据库中插入一行,那么我想要做的是如果点击“取消”按钮,那么它将导航到“cancelimage” .php“将删除该行的页面。因此,从技术上讲,如果单击“取消”按钮,则会插入行然后删除。

问题是它没有删除行,只是插入行。如何让它删除数据库中的行?

下面是startImageUpload()函数,它开始上传以及取消按钮功能的特点:

function startImageUpload(imageuploadform){

$(".imageCancel").on("click", function(event) {

              $("iframe[name='upload_target']").attr("src", "javascript:'<html></html>'");
          return stopImageUpload();

    jQuery.ajax("cancelimage.php")

});       
      return true;
}

下面是代码,其中包含上传脚本(imageupload.php),它在数据库中插入一行:

<?php

session_start();


$username="xxx";
$password="xxx";
$database="xxx";

mysql_connect('localhost',$username,$password);

mysql_select_db($database) or die( "Unable to select database");

$result = 0;

      move_uploaded_file($_FILES["fileImage"]["tmp_name"],
      "ImageFiles/" . $_FILES["fileImage"]["name"]);
      $result = 1;

        $imagesql = "INSERT INTO Image (ImageFile) 
        VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";

mysql_query($imagesql);

      }

      mysql_close();

?>

最后下面是cancelimage.php页面,它假设从数据库中删除该行:

<?php

$username="xxx";
$password="xxx";
$database="xxx";

mysql_connect('localhost',$username,$password);

mysql_select_db($database) or die( "Unable to select database");

    echo "File Upload was Canceled";

        $imagecancelsql = "DELETE FROM Image 
        WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($_FILES['fileImage']['name'])."'";

    mysql_query($imagecancelsql);

    mysql_close();


?>

2 个答案:

答案 0 :(得分:2)

当您致电cancelimage.php $_FILES['fileImage']['name']时,将不再包含该名称。它仅包含上载页面的文件名。您需要将名称存储在cookie,会话或其他内容中。


编辑:

永远不要相信来自客户的输入:

move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);

如果我上传的文件名为“../imageupload.php”,该怎么办?你的网站将被破坏;)更糟糕的是,我可以注入各种令人讨厌的代码。

答案 1 :(得分:0)

  

return stopImageUpload();

你的语句读取就像处理了停止图像并且执行返回。以下语句jQuery.ajax("cancelimage.php")永远不会被调用。