2015-02-09 48 views
-3

我正在尝试为私有云存储系统创建安全的多文件上传脚本。我不知道我做了什么是好的,因为我在3周前开始学习php。意想不到的'if'(T_IF),期待','或';'

我一直收到第59行的错误:if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir)); 我不知道我哪里出错了。如果有人能帮助我,那会很棒。

这是我的HTML

<form enctype="multipart/form-data" action="PHP/Click_Upload.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000000" /> 
Send this file: <input id="userfile" type="file" /> 
<input type="submit" value="Send File" /> 
</form> 

这是我的PHP

<?php 
// Folder for upload files 
$upload_dir = "../../SeagateHDD/Uploads"; 

//allowed file extensions 
$allowed_types = array(
/* images extensions */ 
'jpeg', 'bmp', 'png', 'gif', 'tiff', 'jpg', 
/* audio extensions */ 
'mp3', 'wav', 'aac', 'wma', 'm4a', 
/* movie extensions */        
'mov', 'flv', 'mpeg', 'mpg', 'mp4', 'avi', 'wmv', 
/* document extensions */        
'txt', 'pdf', 'ppt', 'pps', 'xls', 'doc', 'xlsx', 'pptx', 'ppsx', 'docx' 
         ); 

//Mime types not accectped 
$mime_type_black_list= array(
/* Audio Mime Types */ 
'audio/basic', 'audio/L24', 'audio/ogg', 'audio/opus', 'audio/vorbis', 
'audio/vnd.rn-realaudio', 'audio/vnd.wave', 'audio/webm', 'audio/example', 
/* Images Mime Type */ 
'image/vnd.djvu', 'image/example', 
/* Message Mime Type*/ 
'message/http', 'message/imdn+xml', 'message/partial', 'message/rfc822', 
'message/example', 
/* 3D Model Mime Type*/ 
'model/iges', 'model/mesh', 'model/vrml', 'model/x3d+binary', 
'model/x3d+fastinfoset', 'model/x3d-vrml','model/x3d+xml', 'model/example' 
          ); 
//checks 
if(isset($_FILES['submit'])){ 

//loop thought all the files 
foreach ($_FILES ['submit']['tmp_name'] as $key => $tmp_name) { 
    $file_name = $_FILES['files']['name'][$key]; 
    $file_size = $_FILES['files']['size'][$key]; 
    $file_type = $_FILES['files']['type'][$key]; 
    $file_tmp = $_FILES['files']['tmp_name'][$key]; 

//check files are not bigger than 100MB 
if ($file_size > 100000000){ 
     echo('File size must be less than 100MB'); 
} 

// convert file name to lowercase and explode the file and look at the extension 
$file_ext=strtolower(end(explode('.', $_FILES['file']['name'][$key]))); 

//check to see if file extension is accpeted 
if(in_array($file_ext, $allowed_types)=== false); 
    echo('File extension not accepted'); 

//check files with mime types 
if(in_array($file_ext, $mime_type_black_list)=== true); 
    echo('File mime type not accepted') 

//move files from temp to choosen directory 
if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir)); 
    { 
    echo ("File Uploaded"); 
    } 
    else { 
    echo "Sorry, there was a problem uploading your file."; 
    } 
    } 
} 

<?php 
+0

'echo('File mime type not accepted')后面缺少分号:) – 2015-02-09 12:41:49

+0

请发布您收到的错误消息:-) – 2015-02-09 12:47:04

回答

2

你错过了上线55分号echo('File mime type not accepted')后,你也有上线58一个分号,那不应该在那里。

您应该删除if语句后的所有分号。

+0

不知道'if'后面'''大声笑......奇怪句法。应该删除imo – DanFromGermany 2015-02-09 12:45:17

1

你缺少的行之后分号上述echo('File mime type not accepted')

+0

然后下一个问题是DanFromGermany说的。 – trex005 2015-02-09 12:43:44

0

您在if年底有;

它不应该存在。

if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir)); 
{ 
    // ... 
} 

通常你应该即使只有1中的情况下线上使用正确的,如果使用

if (...) 
{ 
} 

不是与;或不{ }

+1

if语句后可以有分号。这没有意义,但它不会导致错误。 – 2015-02-09 12:42:07

0

你不仅缺少线55分号,但也增加了在第58行冗余一个本来应该有{

0

你的问题本身所具有的解决方案

unexpected 'if' (T_IF), expecting ',' or ';' 

意味着你已经错过了一个分号。

if(in_array($file_ext, $mime_type_black_list)=== true); 
    echo('File mime type not accepted'); 

if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir)) 

不需要一个分号。请使用一个好的代码编辑器来突出显示这些语法错误。这比发布问题并得到更多的选票更好。

相关问题