"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que meu código de validação de upload de arquivo PHP não está funcionando corretamente?

Por que meu código de validação de upload de arquivo PHP não está funcionando corretamente?

Publicado em 15/11/2024
Navegar:990

Why Is My PHP File Upload Validation Code Not Working Correctly?

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.

Tutorial mais recente Mais>

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