Upload de arquivo PHP: garantindo restrições de tipo e tamanho de arquivo
Em PHP, lidar com uploads de arquivos geralmente requer a verificação de restrições de tipo e tamanho de arquivo. O trecho de código fornecido tenta validar ambos os critérios, mas encontra problemas. Vamos nos aprofundar no código e identificar os erros.
//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");
Este código captura o nome do arquivo e a extensão de ambos os arquivos. No entanto, a lógica de validação subsequente é falha:
if (!(
($_FILES["resume"]["type"] == "application/doc")
|| ($_FILES["resume"]["type"] == "application/docx")
|| ($_FILES["resume"]["type"] == "application/pdf")
&& (($_FILES["reference"]["type"] == "application/doc")
|| ($_FILES["reference"]["type"] == "application/docx")
|| ($_FILES["reference"]["type"] == "application/pdf"))
&& (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx"))
&& (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx"))
&& ($_FILES["resume"]["size"] O código não usa a lógica correta para validar os tipos de arquivo. Em vez de verificar o tipo MIME, ele depende da extensão do nome do arquivo, que não é confiável. Além disso, a validação de tamanho não é aplicada a ambos os arquivos.
Para corrigir esses problemas, aqui está um snippet de código revisado que usa tipos MIME e verifica corretamente ambos os tamanhos de arquivo:
function allowed_file() {
$allowed = array('application/doc', 'application/pdf', 'application/docx');
if (in_array($_FILES['resume']['type'], $allowed) && in_array($_FILES['reference']['type'], $allowed)) {
if ($_FILES["resume"]["size"] Este código primeiro verifica se os tipos MIME dos arquivos estão incluídos na lista permitida. Nesse caso, ele verifica se ambos os tamanhos de arquivo estão dentro do limite especificado. Isso garante que apenas os tipos e tamanhos de arquivos permitidos sejam aceitos para upload.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3