0

我的 php 代码有问题。我目前正在做的是使用 iframe 将 javascript 消息与 phe 脚本链接。在 javascript 函数 stopImageUpload 中,我已声明如果成功 = 2,则显示文件上传的取消消息。

因此,我在 php 脚本中尝试但未能执行的操作是尝试声明如果 $result = 2(换句话说,如果成功 = 2 消息出现在 javascript 中),则删除数据库行。如何才能做到这一点?

下面是表单代码:

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
  "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
  "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +     
  "</p><p class='imagef1_cancel' align='center'><label>" + 
  "<input type='button' name='imageCancel' class='imageCancel' value='Cancel' /></label>" +
  "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");

下面是 startImageUpload() 函数,它开始上传文件并存储取消按钮函数:

  function startImageUpload(imageuploadform, imagefilename){
    $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) {
      return stopImageUpload(2);
      });     
    return true;
  }

下面是 stopImageUpload() 函数,它使用成功和结果显示取消消息:

function stopImageUpload(success, imagefilename){
  var result = '';
  if (success == 2){
    result = '<span class="imagecemsg"> The file upload was canceled!</span><br/><br/>';
  } else {
    result = '<span class="imageemsg">There was an error during file upload!</span><br/><br/>';
  }         
  return true;   
}

最后下面是使用 iframe 链接到 QandATable.php(包含上述代码的脚本)的 imageupload.php 脚本,这是假设要插入和删除数据库行的位置:

    <?php
      session_start();
      ...//connected to DB
      $result = 0;

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $result = 1;

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

    mysql_query($imagesql);

}
    else
      {

      $result = 1;

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

mysql_query($imagesql);

      }

      if ($result == 2) {
        $imagecancelsql = "DELETE FROM Image 
                           WHERE ImageFile = 'ImageFiles/".
                           mysql_real_escape_string($_FILES['fileImage']['name'])."'";
        mysql_query($imagecancelsql);
      }
      mysql_close();
    ?>
    <script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result ? 'true' : 'false'; ?>, '<?php echo $_FILES['fileImage']['name'] ?>');</script>
4

1 回答 1

0

您的代码存在严重问题需要解决:

1)

这一行:

return stopImageUpload(2);

正在调用函数:

function stopImageUpload(success, imagefilename){...}

但是该stopImageUpload函数需要两个参数,success并且imagefilename


2)

此函数返回 true,但应返回result.

function stopImageUpload(success, imagefilename){
  ...
  return true;   
}

3)

在这里你设置$result了 value 0,并与 value 比较2?!?

$result = 0;

if ($result == 2) {

4)

这个函数接受两个参数,但是没有一个在内部使用?!?

function startImageUpload(imageuploadform, imagefilename){...}

此外,它正在返回

return stopImageUpload(2);

或者

return true;

你控制住了这种局面!

注意:您在哪里使用此功能?!?


5)

此验证可能会失败,因为file_exists检查文件或目录是否存在。因此,如果文件不存在,则目录肯定存在,并且它将继续执行。

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {

您应该使用is_file来告诉您该文件是否为常规文件。


6)

您不应该再使用mysql_query了,请阅读MySQL 开发人员的 PDO 教程

mysql_query($imagesql)


请阅读此主题:了解您为何未能实现目标

PHP 变量

JavaScript 变量

JavaScript 函数

PHP 文件上传 eg 1 | PHP 文件上传 eg 2 | PHP文件上传例如3


我希望这可以帮助您走上正确的轨道并解决您当前代码的一些问题。

祝你好运!

于 2012-05-16T00:21:38.727 回答