Carga de archivos PHP: garantizar restricciones de tamaño y tipo de archivo
En PHP, manejar la carga de archivos a menudo requiere verificar las restricciones de tamaño y tipo de archivo. El fragmento de código intentó validar ambos criterios, pero encontró problemas. Profundicemos en el código e identifiquemos los errores.
//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");
Este código captura el nombre de archivo y la extensión de ambos archivos. Sin embargo, la lógica de validación posterior es defectuosa:
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"] El código no utiliza la lógica correcta para validar tipos de archivos. En lugar de comprobar el tipo MIME, se basa en la extensión del nombre del archivo, que no es fiable. Además, la validación del tamaño no se aplica a ambos archivos.
Para rectificar estos problemas, aquí hay un fragmento de código revisado que utiliza tipos MIME y verifica correctamente ambos tamaños de archivo:
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 primero verifica si los tipos MIME de los archivos están incluidos en la lista permitida. Si es así, verifica si ambos tamaños de archivo están dentro del límite especificado. Esto garantiza que solo se acepten para cargar los tipos y tamaños de archivos permitidos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3