2015-11-20 3 views
1

У меня есть сайт, вы можете либо загрузить или загрузить текст. Вы не можете обойти оба. Затем я передам, какой из них был загружен в php-файл. Какой лучший, самый эффективный способ проверить, какой из них был принят?

Первое, что пришло в голову, заключалось в том, чтобы создать обе переменные, $_FILES и $_POST, а затем проверить, пуст ли он. Если $_FILES пуст, значит это означает, что текст передан на php.

Это не сработает, потому что, если пользователь действительно загрузил изображение, но по какой-то причине он не прошел. Затем php подумает, что текст передан, и это не сработает.

Как я могу проверить php, который был передан, $_POST или $_FILES?

+0

Вы не можете «создать» их, они установлены или нет. 'if (! empty ($ _ POST [" someindex "]))' будет делать. – Jan

+0

Нет. Это неправильное предположение. Если '$ _FILES' пуст, пользователь не пытается загрузить какой-либо файл, так как браузер не прошел его. Если вам нужно сообщить пользователю, какие файлы являются приемлемыми и т. Д., Вам необходимо использовать некоторый javascript для проверки связи типа файла перед загрузкой. Тогда вы всегда можете безопасно проверить 'if (empty ($ _ FILES))' безопасно. – Ohgodwhy

+1

Вы можете начать с использования 'if (! Empty ($ _ POST ['var']) &&! Empty ($ _ FILES ['file'])) {echo" Вы не можете обойти оба "; } ' –

ответ

2

Вы можете сделать это с помощью оператора && со смешанными условными:

if(!empty($_POST['var']) && !empty($_FILES['file'])){ 
    echo "You can't do both"; 
} 

elseif(!empty($_POST['var']) && empty($_FILES['file'])){ 
    echo "Allowed"; 
} 

elseif(!empty($_FILES['file']) && empty($_POST['var'])){ 
    echo "Allowed"; 
} 

else{ 
    echo "Choose at least one"; 
} 
Смежные вопросы