Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - caishi

#1
PHP / CSV-PHP-MySQL
12 Junio 2016, 23:33 PM
Hola.
cuento rápidamente, tengo que cargar un fichero CSV a mi base de datos (mysql), comparar existencia, y aplicar update si corresponde.

bien, esa es la parte facil

Problema:
1)mas de 5000 registros termina saturando el servidor y puff... inserta los registros hasta que cae.
2)tengo que traer el archivo en utf-8, el programa que exporta el archivo me lo da en ascci

Solucion tratada:
1) dividir el archivo en 5000 registros cad uno
2) guardar con notepad en utf-8

Requiero:
1)poder cargar los 10000 o 100000 registros de un unico archivo sin dividirlo.
2)convertir archivo cuando se hace el upload a utf-8

Me gustaría:
1)mostrar barra de progreso de upload+proceso del csv a la db (se que se requiere ajax)

Bien, he intentado de todo pero se ve que mis conocimientos no son suficientes.

dejo fragmento de mi código, el cual no tiene mucha ciencia, pero mas o menos para que se entienda..

Si alguno conoce algún ejemplo por ahi que pueda adaptar a mi codigo, les estaria muy agradecido.


<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'?>"method="post">
  <label>Seleccione el archivo formato CSV:</label>
  <input size="50" type="file" name="filename2"/>
  <input type="submit" name="cargararchivo2" value="Cargar"/>
</form>

<?php
if (isset($_POST['cargararchivo2'])) 
{
  if (
is_uploaded_file($_FILES['filename2']['tmp_name'])){}
  
$handle fopen($_FILES['filename2']['tmp_name'], "r");
  while ((
$data fgetcsv($handle1000";")) !== FALSE
  {
    
$query sprintf("SELECT carton,numerocert FROM regcertificados WHERE regcertificados.carton = '%s' AND regcertificados.numerocert = '%s'" $data[6],$data[9]);
    
$result=mysql_query($query,$link);
    if (
mysql_num_rows($result)) 
    {
      if (
$data[14]!="")
      {
         
$fecha=date ("Y-m-d H:i:s");
         
$data[14] = addslashes ($data[51]);
         
$actualiza="UPDATE regcertificados SET prorroga='$data[14]',actualizado='$fecha' WHERE carton = '$data[6]' AND numerocert='$data[9]'";
         
mysql_query($actualiza,$link) or die(mysql_error());
      }
    }else 
   {
$fecha=date ("Y-m-d H:i:s");
$data[1] = addslashes ($data[1]);
$data[2] = addslashes ($data[2]);
                        
$data....
                        ......
//el resto


$import="INSERT into regcertificados(dni,nombre......) values('$data[0]','$data[1]','$data......')";
mysql_query($import,$link) or die(mysql_error());
   }
  }
 
fclose($handle);
 
$borraRenglon="DELETE FROM regcertificados WHERE dni LIKE '%borrar renglon'";
 
mysql_query($borraRenglon,$link) or die(mysql_error());
 echo 
'<div class="alert alert-success">';
echo '<button type="button" class="close" data-dismiss="alert">&times;</button>';
echo '<strong>Hecho</strong> Los datos incluidos en '.$_FILES["filename"].' se importaron correctamente.';
  echo 
'</div>';
}
?>


PD: $borraRenglon es porque y no se por que, la primer linea del CSV se sube a la db con un caracter invisible, asi que le puse el borrar renglon que lleva ese caracter y lo elimino asi,.
#2
Seguridad / Seguridad en mi sitio web
11 Junio 2016, 22:46 PM
Hola. Mi sitio es marina-mercante.com.ar (hosting: hostinger.com.ar premium)

El mismo cuenta con:
joomla actualizado (3.5) y pocas extensiones (actualizadas)
rsfirewall (https://www.rsjoomla.com/joomla-extensions/joomla-security.html)
permisos correctos
SSL
.htaccess configurado correctamente tanto en raiz como en carpetas que no quiero qu se acceda.
archivos index.htlm en todas las carpetas

y... cada tanto recibo ataques. hace dos meses que no lo lograban, pero ayer hackearon el sitio y le metieron a todos los archivos un codigo php super largo y cambiaron el permiso del configuration.php (el cual estaba en 444 y paso a 777)

los primeros ataques, que sufri en diciembre de 2015, cargaron el mismo super codigo largo y metieron carpetas de webs truchas.
desde que contrate rsfirewall se frenaban todos los ataques, pero ayer directamente la notificación fue que mis archivos habían cambiado.

me pregunto como logran hacer esto desde la web..

cambio la pass del ftp, bases de datos y usuario administrador cada 15 dias y uso contraseñas super largas y cn todos los símbolos del teclado y algunos que ni están en el teclado.
he intentado varios injectsql y no he logrado auto-hackearme, incluso con los códigos que suponen algunos ataqus (el rsfirewall me da dicha información)

no tengo archivos temp, y ningún usuario puede subir archivos.

ayer luego de ataque y de restaurar todo, contrate y active un cloundfirewall (https://sucuri.net/es/). vere que tan es la solucion... 20dolares por mes espero ue lo valga.

alguien tiene una idea mas para evitar estos ataques? ya estoy empezando a pensar que algo tiene que ver el hosting...

si tenemos algun hacker por aquí, seria tan amable de intentar hackear mi sitio y decirme la vulnerabilidad posible?

gracias y buen fin de semana