出乎意料的';如果';(T_IF),期望'';或者'';


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

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

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

echo('File mime type not accepted')之后的第55行缺少分号,第58行也有一个分号,不应该存在。

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

echo('File mime type not accepted') 上方的行后面缺少分号

if、的末尾有一个;

它不应该在那里。

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

你通常应该使用正确的如果使用

if (...)
{
}

不是有;或没有{ }的东西,即使在这种情况下只有1行。

您不仅在第55行中缺少分号,而且在第58行中添加了冗余分号,其中应该有{

您的问题本身有解决方案

 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))

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

相关文章: