harshal12345 Ответов: 1

Загрузка файлов с PHP-кодировкой, которую я видел на сайте, но она дает мне ошибку parse error: синтаксическая ошибка, неожиданное "else" (T_ELSE) в C:\xampp\htdocs\go.php на линии 24


<?php
	if(isset($_FILES["photo"]["error"])){
		if($_FILES["photo"]["error"]>0){
			echo "Error:".$_FILES["photo"]["error"]."<br>";
		}else{
			$allowed=array("jpg"=>"image/jpg","jpeg"=>"image/gif","png"=>"image/png");
			$filename=$_FILES["photo"]["name"];
			$filetype=$_FILES["photo"]["type"];
			$filesize=$_FILES["photo"]["size"];
			
			$ext=pathinfo($filename, PATHINFO_EXTENSION);
			if(!array_key_exists($ext,$allowed)) die("Error: Please select a valid file format.");
			
			$maxsize=5*1024*1024;
			if($filesize>$maxsize) die("Error: File size is larger than the allowed limit");
			
			
			if(in_array($filetype,$allowed)){
				if(file_exists("upload/".$_FILES["photo"]["name"])){
					echo $_FILES["photo"]["name"]."is already exists.";
				}else{
					move_uploaded_file($_FILES["photo"]["tmp_name"],"upload/".$_FILES["photo"]["name"]);
					echo "your file was uploaded successfully";
				} else{
            echo "Error: There was a problem uploading your file - please try again."; 
        }
    }
} else{
    echo "Error: Invalid parameters - please contact your server administrator.";
}
?>


Что я уже пробовал:

я ничего не пробовал и хотел бы знать значение самого первого если и второго если

ZurdoDev

Вам нужно исправить синтаксис. Вам не хватает закрывающей скобки, или точки с запятой, или чего-то еще. Сначала исправь это.

1 Ответов

Рейтинг:
2

Dave Kreskowiak

У вас есть два других утверждения на одном и том же IF. Сопоставьте фигурные скобки.

if(in_array($filetype,$allowed)){
    if(file_exists("upload/".$_FILES["photo"]["name"])){
        echo $_FILES["photo"]["name"]."is already exists.";
    }else{
        move_uploaded_file($_FILES["photo"]["tmp_name"],"upload/".$_FILES["photo"]["name"]);
        echo "your file was uploaded successfully";
    } else{
        echo "Error: There was a problem uploading your file - please try again.";
    }

Должно быть:
if(in_array($filetype,$allowed)){
    if(file_exists("upload/".$_FILES["photo"]["name"])){
        echo $_FILES["photo"]["name"]."is already exists.";
    } else {
        move_uploaded_file($_FILES["photo"]["tmp_name"],"upload/".$_FILES["photo"]["name"]);
        echo "your file was uploaded successfully";
    }
} else {
    echo "Error: There was a problem uploading your file - please try again.";
}


harshal12345

Дэйв я попробовал то что ты сказал но это не работает все та же ошибка

Dave Kreskowiak

Ладно, я не собираюсь давать вам копию и вставлять ответ. Вы должны тщательно изучить код и убедиться, что все открывающие и закрывающие фигурные скобки правильно соединены.

Чтобы облегчить чтение, убедитесь, что фигурная скобка не находится в той же строке, что и код. Он должен быть на своей собственной линии сам по себе. Все должно быть правильно с отступом :

Этот:

if (some expression) {
 ... code ...
} else {
 ... code ...
}


становится:
if (some expression)
{
    ... code ...
}
else
{
    ... code ...
}

harshal12345

Хорошо, я понимаю, что вы говорите, мне тоже нравится все с отступом правильно, но когда вы копируете и вставляете код с другого сайта, вы просто хотите получить результат, который я не получаю.

Dave Kreskowiak

Если вы получаете точно такую же ошибку, у вас точно такая же проблема. У вас есть несоответствующие фигурные скобки, и компилятор видит второй оператор else для одного if.

Если вы скопировали этот код откуда-то, в нем есть ошибка. Перед предпоследним утверждением else отсутствует фигурная скобка.