2015-02-09 2 views
-3

Я пытаюсь создать безопасный сценарий загрузки нескольких файлов для частной системы хранения облачных данных. Я не знаю, что я сделал, это хорошо, когда я начал изучать php 3 недели назад.неожиданный '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')' –

+0

Пожалуйста, разместите сообщение об ошибке, которое вы получаете :-) –

ответ

2

Вы пропустили точку с запятой в строке 55 после echo('File mime type not accepted') И вы также одну точку с запятой в строке 58, этого не должно быть.

Вы должны удалить все точки с запятой после оператора if.

+0

Не знал о ';' after 'if' lol .. странный синтаксис. Должно быть удалено imo – DanFromGermany

1

Вы пропускаете точку с запятой после строки выше echo('File mime type not accepted')

+0

И вот следующая проблема - это то, что сказал DanFromGermany. – trex005

0

У вас есть ; в конце if,

, где он не должен быть там.

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

Вы должны вообще использовать правильно, если использование

if (...) 
{ 
} 

Не то, что с ; или без { }, даже если только одна линия в случае.

+1

У вас может быть точка с запятой после if. Это не имеет смысла, но это не вызывает ошибки. –

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

, которая не требует запятой. Используйте хороший редактор кода, который выделит эти синтаксические ошибки. Это лучше, чем опубликовать вопрос и получить больше голосов.

Смежные вопросы