我有我的PHP代码的情况。我目前正在做的是使用iframe链接javascript消息和phe脚本。在javascript函数stopImageUpload中,我已声明如果success = 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()函数,它使用success和result显示取消消息:
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;
}
最后下面是imageupload.php脚本,该脚本使用iframe链接到QandATable.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>
答案 0 :(得分:0)
您的代码存在严重问题需要解决:
<强> 1)强>
这一行:
return stopImageUpload(2);
正在调用该函数:
function stopImageUpload(success, imagefilename){...}
但stopImageUpload
函数需要两个参数,success
和imagefilename
<强> 2)强>
此函数返回true,但应返回result
。
function stopImageUpload(success, imagefilename){
...
return true;
}
3)
在此设置$result
的值为0
,并将其与值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
,请阅读PDO Tutorial for MySQL Developers
<击> mysql_query($imagesql)
击>
PHP File Upload e.g. 1 | PHP File Upload e.g. 2 | PHP File Upload e.g. 3
我希望这可以帮助您走上正确的轨道并解决现有代码的一些问题。
最好的运气!