El algoritmo de comprobación de archivos PHP

Este programa valida usando herramientas del sistema el tipo de archivo subido por un usuario en un sistema web. A continuación el código:

{code type=PHP}
$extensiones=array(“pdf”);
$nombre=$HTTP_POST_FILES[‘file’][‘name’];
$tamanio=$HTTP_POST_FILES[‘file’][‘size’];
$tipo=$HTTP_POST_FILES[‘file’][‘type’];
//————————
$persona=$_POST[‘nr’];
$materia=$_POST[‘materia’];
$tipof=$_POST[‘tipo’];
$nv=$_POST[‘nv’];
$pdf=’.pdf’;
$rebote=’/var/www/reportes/rebote/’;
$path=”/var/www/ftmp”;
$user = $_POST[‘usuario’];
//———-FIN-VARIABLES———–
$var = explode(“.”,”$nombre”);
$num = count($extensiones);
$valor = $num-1;
for($i=0; $i if($extensiones[$i] != $var[1]) {
echo “Solo archivos(.pdf)”;
echo “Estado:Fallido
“;
exit;
}
}
//FIN Primera barrera{/code}{code type=PHP}
//Genero numero aleatorios para el nombre del archivo
$aleatorio=rand(000,999);
$Nnombre=$aleatorio.$pdf;
//PASO la primera barrera subamos el archivo…
if (is_uploaded_file($HTTP_POST_FILES[‘file’][‘tmp_name’])) {
copy($HTTP_POST_FILES[‘file’][‘tmp_name’], “$path/$Nnombre”);
}
$char= ‘/’;
$ika=”$path$char$Nnombre”;
$verdad = exec(“file $ika”);
$ikaa=”$ika: PDF document, version 1.6″;
$ika0=”$ika: PDF document, version 1.5″;
$ika1=”$ika: PDF document, version 1.4″;
$ika2=”$ika: PDF document, version 1.3″;
$ika3=”$ika: PDF document, version 1.2″;
$ika4=”$ika: PDF document, version 1.1″;
if ( $verdad == $ikaa || $verdad == $ika0 || $verdad == $ika1 || $verdad == $ika2 || $verdad == $ika3 || $verdad == $ika4 ) {
$dbh = pg_connect(” host=’127.0.0.1′ port = ‘5432’ dbname=’archivos’ user=’flux’ password=’clave’ “);
if (!$dbh) { echo “ERROR AL CONECTARn”; }
pg_exec($dbh, “BEGIN”);
$oid = pg_loimport(“/var/www/ftmp/$Nnombre”, $dbh);
$sql = “INSERT INTO aportes (file_oid, mime, nombre_v, emisor, materia, tipo)
VALUES (‘$oid’, ‘$tipo’, ‘$nv’, ‘$persona’, ‘$materia’, ‘$tipof’)”;
pg_query($dbh, $sql);
pg_exec($dbh, “COMMIT”);
pg_close($dbh);

if (!$oid)
{
echo “ERROR AL IMPORTARn”;
exit;
}
echo “* Estado:Exitoso”;
echo “* Tamaño:$tamanio”;
echo “* Tipo:$tipo”;
echo “* Tipo de aporte:$tipof”;
echo “* Materia selecionada: $materia”;
echo “* Nombre virtual: $nv”;
echo “Gracias por colaborar con el proyecto”;
//TERMINEMOS EL REPORTE
//NOMBRE REAL DEL USER
$mnr=’El nombre real del user es = ‘;
//—-SUBIO ?
$msubio=’Subio un archivo?—> SI’;
//OID
$mruta=’El OID del archivo es = ‘;
//El nombre virtual
$mnv =’El nombre virtual solicitado es = ‘;
//tipo de aporte
$mtipo = ‘El tipo de aporte es = ‘;
//ESCRIBE
$filename = ‘/var/www/reportes/ie.txt’;
$fp = fopen($filename, “a+”);
$wmnr = fputs($fp, $mnr);
$wcad_nr = fputs($fp, $persona . “rn”);
$wmsubio = fputs($fp, $msubio . “rn”);
$wmruta = fputs($fp, $mruta);
$wcad_ruta = fputs($fp, $oid . “rn”);
$wnv = fputs($fp, $mnv);
$wcad_nv = fputs($fp, $nv . “rn”);
$wtipo = fputs($fp, $mtipo);
$wcad_tipo = fputs($fp, $tipof . “rn”);
fclose($fp);
}
else {
$char= ‘/’;
$ika=”$path$char$Nnombre”;
$verdad1 = exec(“file $ika”);
$verdad2 = exec(“rm $ika”);
echo “Lo sentimos pero su archivo no fue aprobado”;
echo “Estado:Fallido”;
// CRÉAME EL REPORTE
//fecha y hora
$fh= exec(“date ‘+FECHA: %a %d/%m/%y’ “);
$fh2= exec(“date ‘+HORA: %I:%M:%S %p’ “);
#fin fecha y hora
//——————————————-
$filename = ‘/var/www/reportes/ar.txt’;
$fp = fopen($filename, “a+”);
//ESCRIBE
$wfh = fputs($fp, $persona . “rn”);
$wfh = fputs($fp, $fh . “rn”);
$wfh2 = fputs($fp, $fh2 . “rn”);
fclose($fp);
}
//FIN
{/code}

Hace algo de tiempo que no mantengo este script así que probablemente tenga problemas en las sentencias de carga del archivo espero le sirva de guía a alguien y si pueden mejorarlo avísenme para publicar una segunda versión.

5 thoughts on “El algoritmo de comprobación de archivos PHP”

  1. If social book-marking gets you a large amount of traffic? I’ve been considering doing some social bookmarking for a few of my sites but wasn’t sure if it would produce any positive results. Appreciate it.

    Reply

Leave a Comment