Entradas

Mostrando entradas de agosto, 2008

HTML 2 (F)PDF VS DOMPDF

Yo utilizo ambas clases pero dependiendo para que escojo una u otra, veamos las ventajas que veo en cada una de ellas. HTML2FPDF tiene una velocidad de creación de los documentos un poco más rápida pero no es algo realmente a considerar para diferenciar una de otra. Lo cual no es el caso para crear páginas horizontales para lo cual DOMPDF es perfecta pues con HTML2FPDF hay que hacer ciertos apaños como poner manualmente el ancho de la página para que te coja los márgenes correctamente sino te cra una página horizontal pero con los márgenes de una vertical, o sea que solo tienes espacio útil la mitad de la página prácticamente. El uso de CSS en ambas es realmente muy precario aunque si has de escojer debes utilizar DOMPDF que soporta unos cuantos más y según ellos lee archivos CSS, realmente no te va a cojer del archivo css ni la mitad de las propiedades. En cuanto a cabeceras, pies de página e imágenes ambos lo soportan en teoria. El uso de tablas es otro de los factores a tener en cue

Errores en Zend Development Studio

Sin lugar a dudas Zend Development Studio es una de las herramientas más completas para implementar código PHP aunque como todo buen hijo de vecino no está excento de algunos pequeños detalles. Si alguno ha programado con el ZDS le habrán molestado sobre manera estos dos warnings que suele poner: include-var : Unsafe use of variable in call include()/require() bool-assign : Assignment in condition Son realmente 2 warnings que implican en cierta medida una ayuda al programador, el primero evita cualquier posible fallo de seguridad incluyendo en un archivo una url que es variable, lo cual podría (y digo podría) ser un fallo de seguridad. El segundo nos previene por si acaso se nos ha olvidado poner la doble = en una instrucción booleana, lo cual en muchos casos no es cierto pues realmente queremos que se asigne NO que se compare. Si queremos evitar estos warnings es de una forma sencilla aunque realmente tonta. Para el primero el ZDS considera inseguro que se incluya desde una variable p

Validar fechas con javascript

No se las miles de veces que he tenido que validar fechas con javascript y la verdad es que siempre es un verdaddero encordio, aquí os dejo una pequeña funcion con la cual se crea un objeto fecha muchomás fácil de comparar si una fecha es menor que otra que con los if - else if - else. Espero que realmente os sirva de ayuda, a mi me viene genial function compruebaFechas(){ fecha_inicio =new String(document.frm_nuevo.fecha_inicio.value); hora_inicio = document.frm_nuevo.hora_inicio.value; minuto_inicio = document.frm_nuevo.minuto_inicio.value; fecha_fin =new String(document.frm_nuevo.fecha_fin.value); hora_fin = document.frm_nuevo.hora_fin.value; minuto_fin = document.frm_nuevo.minuto_fin.value; dia_inicio = parseInt(fecha_inicio.substr(3, 2),10); mes_inicio = parseInt(fecha_inicio.substr(0, 2),10) - 1; ano_inicio = parseInt(fecha_inicio.substr(6, 4)); dia_fin = parseInt(fecha_fin.substr(3, 2),10); mes_fin = parseInt(fecha_fin.substr(0, 2),10) - 1; ano_fin = parseInt(fecha

Envío de boletín a listas de correos pirateadas

Este estudio es totalmente empírico y solo muestra para este caso el comportamiento de los internautas respecto al envío masivo de boletines electrónicos a personas que no lo han solicitado. Tomando una lista de 18 mil correos electrónicos como muestra enviaremos un boletín semanal durante 3 meses. Los resultados son los siguientes: solo recibiras confirmaciones de lectura o de envío de un 14 % de los correos enviados. el 27% son direcciones inválidas, que no existen ya los usuarios o que han cambiado de dirección. de los correos recibidos son útiles solo el 86 %, el resto o es spam generado a nuestra cuenta de correo o es correo duplicado proveniente de algunos servidores de correo. solo son realmente leídos el 5% de los boletines, para un negocio esta cifra no está mal pues implica un 5 % más de posibles clientes y el envío del boletín es un medio de propaganda realmente barato, pues solo es la inversión inicial de programar la herramienta. de este 5 % que realmente lee el correo (ba

Boletín electrónico VS RSS

Sin lugar a dudas el envío de boletines es una de las herramientas fundamentales para la comunicación de eventos y novedades de un sitio web. Las ventajas del boletín irán decayendo con el paso del tiempo con el uso cada vez más extenso de fuentes RSS, ¿por qué? fundamentalmente porque una fuente RSS te tienes que suscribir obligatoriamente tú (evitando de esta forma el envío de boletines usando listas de correo extraidas de internet mediante robots). Actualmente la mayoría de los internautas siguen muy familiarizados con el mail antes que las fuentes RSS pero poco a poco y esto gracias fundamentalmente al boom de los blogs está cambiando. En próximas entradas publicaré un estudio realizado por mi sobre el envío de boletines utilizando listas de correo de personas que no se han suscrito, algo ilegal y penalizado, pero muy utilizado por varias empresas para transmitir a miles de correos electrónicos información sobre sus productos.

Bug Firefox

En realidad no sé si es un bug o no, pero de que es algo curioso realmente lo es. Tengo un codigo que genera un excel a partir de una tabla, pues bien, si este codigo que está en una página aparte lo llamo desde un enlace o un lo llamo desde un formulario las respuestas no son la misma. Por ejemplo en IE ambas me lo carga rapidísimo pero sin embargo en firefox si lo llamo desde un enlace tarda realmente una eternidad, casi un minuto!!! mientras que si lo hago desde el formulario lo hace en menos de 5 segundos. ¿Las llamadas a las páginas serán distintas?¿Porque en IE y otros navegadores funciona pero en Firefox no?

Validar formularios sin CAPTCHA

No sé si os pasa a todos pero cada vez que tengo que rellenar un formulario y tengo que poner el puñetero código CAPTCHA me las deseo, a veces es realmente complicado y creo a mi modo de ver innecesario. Ahora veamos como validar nuestros formularios y no morir en el intento. Eso sí, más complicado y más trabajo ya lleva, pero creo que el usuario realmente lo agradece. Esta entrada es la suma de todo lo que he ido encontrando en internet más una aportación mia. Primer paso: todo lo que validemos con javascript validarlo del lado del servidor tambien. Los robots se saltan estan validaciones javascript por eso es necesario validar todos los campos del lado del servidor, y no con ajax sino realmente antes de insertarse en la BD o enviarse el mail. Ojo cuidado con las comillas simples y dobles, palabras reservadas de sql y etiquetas html. Paso dos: Utilizar variables aleatorias y de sessión en campos hidden. O sea podemos incluir este script en nuestro formulario 1 $numeroaleatorio =

Extraer url de un texto o cadena

Siguiendo la línea de la entrada anterior el siguiente script es para sacar las url de un sitio web, en este estaría bien si alguien colabora y me comenta porque url del tipo dominosinwww.extension no las detecta, de echo (y no lo he comprobado) url con www.dominio.extensión creo que tampoco, detecta eso cualquier url con http, https o ftp, con cuantas subcarpetas, subdominios tenga. Aquí os dejo el script: 1 function tieneUrls( $cuerpo ){ 2 stripslashes( $cuerpo ); 3 $exp_url = '(ftp|http|https)://(w+:{0,1}w*@)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?' ; 4 if (preg_match_all ( "/ $exp_url /i" , $cuerpo , $urls , PREG_SET_ORDER)) 5 return TRUE ; 6 return false ; 7 } Para ver la explicación ir a la entrada anterior de Extraer emails de un texto que es idem, lo que cambia es la expresión regular.

Extraer emails de un texto

He buscado mucho por internet para sacar direcciones de correo de una cadena y he encontrado algunas funciones utilizando expresiones regulares pero siempre se me han quedado cortas, en esta que os muestro la he modificado y admite todo tipo de email, de subdominios, con extensiones de 4 letras como las .info, etc. Las aplicaciones son varias puedes leer un fichero en una cadena, un email de un buzón de correo, en fin cualquier cadena de cualquier longitud está soportada. 1 function tieneEmails( $cuerpo ){ 2 stripslashes ( $cuerpo ); 3 $exp_email = '[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})+' ; 4 if ( preg_match_all ( "/ $exp_email /i" , $cuerpo , $emails , PREG_SET_ORDER)) 5 return TRUE ; 6 return FALSE ; 7 } La variable $exp_email contiene la expresion regular y es el motor de la función. La función preg_match_all busca todas las coincidencias y las almacena en el arry $emails, con ellas po