загрузка файла — Как разрешить определенные типы расширений в PHP?

У меня есть 3 файла ввода, которые я пытался защитить, но у меня не было успеха.
Мне нужны эти входные данные для файла только JPEG, JPG, PNG, а также GIF. я знаю тип MIME не надежен в использовании, поэтому я бы больше не хотел его использовать. И если есть более чистый или более быстрый способ сделать это в PHP процедура чем IF заявления, было бы лучше.

HTML код

<input type="file" name="index_desl_Cfile1" class="upload-image" />
<input type="file" name="index_desl_Cfile2" class="upload-image" />
<input type="file" name="index_desl_Cfile3" class="upload-image" />

Код PHP

$target_dir = "../site_images/";

$index_deslC1 = $target_dir . basename($_FILES["index_desl_Cfile1"]["name"]);
$index_deslC2 = $target_dir . basename($_FILES["index_desl_Cfile2"]["name"]);
$index_deslC3 = $target_dir . basename($_FILES["index_desl_Cfile3"]["name"]);

// Check if file already exists
$src1 = 'http://localhost//397/admin/site_images/'.$index_deslC1;
$src2 = 'http://localhost/397/admin/site_images/'.$index_deslC2;
$src3 = 'http://localhost/397/admin/site_images/'.$index_deslC3;
if (@getimagesize($src1)) {
echo "Sorry, file already exists 1. ";
$uploadOk = 0;

}
else if (@getimagesize($src2)) {
echo "Sorry, file already exists 2. ";
$uploadOk = 0;
}
else if (@getimagesize($src3)) {
echo "Sorry, file already exists 3. ";
$uploadOk = 0;
}

$imageFileTypeC1 = $_FILES["index_desl_Cfile1"]["type"];
$imageFileTypeC2 = $_FILES["index_desl_Cfile2"]["type"];
$imageFileTypeC3 = $_FILES["index_desl_Cfile3"]["type"];

$allowed_types = array('image/jpg','image/png','image/jpeg','image/gif');

if (!in_array($imageFileTypeC1, $allowed_types)) {

echo "ILLEGAL FILE TYPE 1";
$uploadOk = 0;

}
else if (!in_array($imageFileTypeC2, $allowed_types)) {

echo "ILLEGAL FILE TYPE 2";
$uploadOk = 0;

}
else if (!in_array($imageFileTypeC3, $allowed_types)) {

echo "ILLEGAL FILE TYPE 3";
$uploadOk = 0;

}
else {
$uploadOk = 1;
}
if ($uploadOk == 0) {
echo " Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["index_desl_Cfile1"]["tmp_name"], $index_deslC1)) {
echo "The file ". basename( $_FILES["index_desl_Cfile1"]["name"]). " has been uploaded.";
}
else if (move_uploaded_file($_FILES["index_desl_Cfile2"]["tmp_name"], $index_deslC2)) {
echo "The file ". basename( $_FILES["index_desl_Cfile2"]["name"]). " has been uploaded.";
}
else if (move_uploaded_file($_FILES["index_desl_Cfile3"]["tmp_name"], $index_deslC3)) {
echo "The file ". basename( $_FILES["index_desl_Cfile3"]["name"]). " has been uploaded.";
}

Он будет иметь более 3 файловых входов.

0

Решение

Я наконец-то понял. Вместо использования если заявления где я проверяю типы файлов, я использовал заявление о переключении и это сработало как шарм!

Вот весь код …

$target_dir = "../site_images/";

$index_deslC1 = $target_dir . basename($_FILES["index_desl_Cfile1"]["name"]);
$index_deslC2 = $target_dir . basename($_FILES["index_desl_Cfile2"]["name"]);
$index_deslC3 = $target_dir . basename($_FILES["index_desl_Cfile3"]["name"]);

// Check if file already exists
$src1 = 'http://localhost//397/admin/site_images/'.$index_deslC1;
$src2 = 'http://localhost/397/admin/site_images/'.$index_deslC2;
$src3 = 'http://localhost/397/admin/site_images/'.$index_deslC3;
if (@getimagesize($src1)) {
echo "Sorry, file already exists 1. ";
$uploadOk = 0;

}
else if (@getimagesize($src2)) {
echo "Sorry, file already exists 2. ";
$uploadOk = 0;
}
else if (@getimagesize($src3)) {
echo "Sorry, file already exists 3. ";
$uploadOk = 0;
}

$imageFileTypeC1 = $_FILES["index_desl_Cfile1"]["type"];
$imageFileTypeC2 = $_FILES["index_desl_Cfile2"]["type"];
$imageFileTypeC3 = $_FILES["index_desl_Cfile3"]["type"];

$allowed_types = array('image/jpg','image/png','image/jpeg','image/gif');

switch ($allowed_types) {
case in_array($imageFileTypeC1, $allowed_types):
echo "GOOD 1!";
$uploadOk = 1;
break;
case in_array($imageFileTypeC2, $allowed_types):
echo "GOOD 2!";
$uploadOk = 1;
break;
default:
echo "ILLEGAL FILE TYPE";
$uploadOk = 0;
}

if ($uploadOk == 0) {
echo " Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["index_desl_Cfile1"]["tmp_name"], $index_deslC1)) {
echo "The file ". basename( $_FILES["index_desl_Cfile1"]["name"]). " has been uploaded.";
}
else if (move_uploaded_file($_FILES["index_desl_Cfile2"]["tmp_name"], $index_deslC2)) {
echo "The file ". basename( $_FILES["index_desl_Cfile2"]["name"]). " has been uploaded.";
}
else if (move_uploaded_file($_FILES["index_desl_Cfile3"]["tmp_name"], $index_deslC3)) {
echo "The file ". basename( $_FILES["index_desl_Cfile3"]["name"]). " has been uploaded.";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]