意外的'如果' (T_IF),期待','或';'

时间:2015-02-09 12:39:47

标签: php file-upload syntax-error

我正在尝试为私有云存储系统创建安全的多文件上传脚本。我不知道我做了什么是好的,因为我在3周前开始学习php。

我在第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

5 个答案:

答案 0 :(得分:2)

你在echo('File mime type not accepted')后第55行丢失了分号。你还在第58行有一个分号,不应该在那里。

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

答案 1 :(得分:1)

您在echo('File mime type not accepted')

上方的行后面缺少分号

答案 2 :(得分:0)

;

末尾有if

不应该在那里。

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

您通常应该使用正确的if用法

if (...)
{
}

不是;或没有{ }的内容,即使案例中只有1行。

答案 3 :(得分:0)

您不仅会在第55行丢失分号,还会在第58行添加冗余分号,其中应该有{

答案 4 :(得分: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))

不需要分号。请使用一个好的代码编辑器,它将突出显示这些语法错误。这比发布问题和获得更多投票更好。