Buenas, agregaría que conviene pasar la extensión obtenida a mayúsculas (o a minúsculas) y comparar contra el valor válido en mayúsculas (o mínusculas, según se haya elegido). Dicho así tal vez no sea tan claro, pero con un ejemplo se ve mejor:
script1.sql
script2.SQL
script3.Sql
Los 3 nombres son posibles y (a menos que medie alguna extraña razón), válidos. Pero si se compara el nombre de la extensión contra el string 'sql', sólo el primero pasa la validación. La solución es hacer algo así:
Código PHP:
if (strtolower($extension) == 'sql')
en vez de
Código PHP:
if($extension == 'sql')
Por si a alguno le sirve, les dejo una función simple pero útil para validar cualquier extensión (en la llamada se determina cuál o cuáles son las extensiones válidas para un archivo)
Código PHP:
function validarExtensiones($nombreArchivo,$arrExtValidas) {
$extension = strtolower(strrchr($nombreArchivo,'.'));
$valido = false;
foreach($arrExtValidas as $ext) {
if ($extension == $ext) {
$valido = true;
}
}
return $valido;
}
// Ejemplo
$arrExtValidas = array('.jpg','.bmp','.gif','.pdf','.jpeg');
$esValido = validarExtensiones('alguna_foto.JPg',$arrExtValidas);
var_dump($esValido);
Suerte
Califa