Limita el tamaño de ficheros a subir mediante Apache

El otro día una amiga me escribía bastante agobiada preguntando cómo se podía saber mediante Javascript el tamaño de un fichero que se quería subir, porque si superaba cierto tamaño, no se debía permitir que se subiera (antes de que se intente mandar). Mi respuesta fue un “no se puede hacer desde el cliente” (espero no haberme equivocado).

El problema que tenía es que le obligaban a que fuera en el navegador, supongo que o el cliente (cabezón) o el analista/jefe (más cabezón aún). La solución, que creo que no aceptaban era controlarlo mediante Apache: se añade en el fichero .htaccess la siguiente directiva y ya no hay problemas:

LimitRequestBody tamaño

Siendo tamaño el número de bytes que ponemos como límite para subir ficheros.

A parte de este ejemplo, mi pobre amiga siempre anda enmarronada con peticiones increibles. Por ello, dos consejos:

  • No dejéis que el cliente imponga lo que le venga en gana, hay cosas que no se pueden/deben hacer y por mucho que se empeñe, seguirán sin poderse/deberse hacer. Entre ellas, siempre se comprueban las cosas en el servidor, nunca únicamente en el cliente, sobre todo por temas de seguridad.
  • El elemento input file es tal cual es, no se le puede cambiar el texto del botón, ni aplicarle filtro, ni que te vaya a la carpeta que quieran, ni cambiar el diseño de la ventana, ni modificar mediante Javascript el fichero que se quiere seleccionar. Aunque parezca mentira siempre acaban pidiéndonos alguna de estas cosas.

Pido disculpas si esta entrada no es la típica, pero es que las tonterías del cliente acaban sacándote de quicio.

Novedades en ‘Google Office’

google.pngExisten novedades dentro de las aplicaciones de escritorio que ofrece Google, algo que no deja de sorprendernos al tenernos acostumbrados a nuevas funcionalidades:

  • Google Calendar ya está disponible en varios idiomas, entre ellos el español.
  • Google Calendar envía SMS a móviles de España, recordándote eventos, o incluso anunciandote nuevas invitaciones o invitaciones canceladas. Aunque Google no cobra nada por este servicio, tu operador puede llegar a cobrarte por los SMS recibidos.
  • El registro en Writely se va a integrar con las cuentas de usuario de Google.
  • Google Spreadsheet ofrece nuevas funcionalidades como exportar a PDF u Open Office.

Vía / google.dirson.com

links for 2006-09-22

  • No te vamos a contar nada que no sepas de Firefox pero si que ya salieron las “release candidate” para la versión final (v2). Se publicaron ayer en el servidor de Mozilla y las tenéis de todos los sabores y colores. Estas versiones disponibles para
    (tags: firefox)
  • Como complemento al material de una charla ofrecida hace unos meses en el Parque Tecnológico de Álava, hemos creado el capítulo “cómo conseguir enlaces” como ayuda para que intentéis obtener más links hacia vuestros sitios web dentro del posicionami
  • XForms is the next generation of Web-based data processing. It replaces traditional HTML forms with an XML data model and presentation elements. In this three-part series, you’ll be introduced to XForms and its capabilities, including the basic XForms mod
    (tags: xforms)
  • Me gustaría abrir esta discusión para conocer sus opiniones sobre los sistemas prefabricados que más les han ayudado en el desarrollo de proyectos para Internet. Ya sean gratuitos, de pago, los usen actualmente o hayan sido parte importante de algún p

Crea ‘destacados’ sin duplicar texto

Entendemos destacados como esa parte de un artículo de especial interés que se repite en otra parte del artículo y que se resalta. Quizás otra alguien de periodismo lo podría definir de otra forma o llamarlo de distinta manera, pero creo que con la imagen siguiente nos entenderemos todos.
destacados.png
En 456 Barea Street nos ofrecen un javascript para realizarlo directamente sin necesidad de duplicar el texto.

La forma de realizarlo es sencillo, marcas el texto que quieres resaltar entre un elemento span, que tenga un estilo específico. Después tan solo tenemos que obtener esta etiqueta, hacer una copia de su contenido, crearnos una capa que tenga el estilo float con valor left, incluir la capa nueva antes del padre del texto original, y ya está, tenemos el texto destacado resaltado sobre el texto normal.

Automatic pullquotes with JavaScript and CSS

Vía / Site Point

10 aplicaciones software libre para tu web

Para aquellos que empiecen, esta lista les puede ser muy útil. Se trata de aplicaciones software libre para incluir en nuestra web.

  • Joomla: un CMS para crear webs y otras aplicaciones.
  • PHP-Nuke: un clásico para la creación de páginas web.
  • phpBB: para la creación de foros.
  • WordPress: crea tu propio blog en tu servidor.
  • osCommerce: si quieres tu propia tienda online.
  • phplist: si te interesa crear una web tipo directorio.
  • Coppermine: tu album de fotos.
  • Advanced poll: sistema de encuestas, batante cofigurable.
  • Advanced guestbook: libro de visitas (ya un poco antiguo lo de los libros de visitas).
  • CutePHP: sistema de noticias.

10 aplicaciones de Software Libre utiles para utilizar en una web

Vía / menéame

links for 2006-09-21

10 cosas que probablemente no sepas de PHP

Cuando aprendemos un lenguaje (en este caso PHP) de forma autodidacta o parcialmente (un curso en la empresa), hay veces que usamos lo que conocemos porque con eso nos basta, pero no profundizamos más y nos encontramos con que hay cosas que desconocemos y que nos serían de utilidad. Por eso, el artículo que paso a traducir, nos puede ser de gran ayuda.

  • Usa ip2long() y long2ip() para guardar/recuperar las direcciones IP en la base de datos en vez de un string. Un string de 15 posiciones ocupa más espacio, cuanto menos llenemos la BD mejor que mejor.
  • Valida parcialmente la dirección de email con la función checkdnsrr(). Esta función comprueba que el dominio se corresponde a una dirección IP, así evitamos que se hayan enviado direcciones de correo con servidores erróneos. En el caso de que la validación de la existencia del email sea necesario.
  • Si usas PHP5 utiliza las funciones para acceso a MySQL mysqli_* en lugar de mysql_*, ya que están optimizadas.
  • Aprende lo que te ofrece el operador ternario (?:), te facilitará mucho el desarrollo y la comprensión del código una vez creado.
  • No reinventes la rueda, antes de meterte a hacer lo que ya está hecho, mira si existe en las librerías PEAR.
  • Usa highlight_file() cuando quieras formatear un texto como código PHP.
  • Deshabilita los logs de errores con error_reporting(0), a parte de ganar en rendimiento, evitas mostrar querys o paths de scripts. Yo personalmente recomendaría que te crearas un buen gestor de errores.
  • Usa gzcompress() y gzuncompress() para comprimir strings grandes para que no ocupen demasiado tamaño en la BD, por ejemplo en un campo BLOB.
  • Usa parámetros por referencia (&$param) para poder conseguir que la función te devuelva más valores a parte de que devuelve return.
  • Intenta comprender completamente las “magic quotes” para evitar que te ataquen mediante SQL Injection.

10 things you (probably) didn’t know about PHP.

Vía / dzone