Archivo de la Categoría “Programación”

phpBB-logoIntentando actualizar sin éxito un foro phpBB me ocurrió un problema que no he podido solucionar.

Antes de la actualización, para hacer una copia de seguridad (backup), bajé todos los archivos del foro por FTP con el programa Filezilla. Después de la infructuosa actualización, intenté restaurar los archivos de los que había hecho copia pero los adjuntos e imágenes no eran accesibles.

Después de mucho pelear, encontré por Internet la causa del problema: había descargado los archivos (binarios) en ASCII porque los adjuntos en phpBB no tienen extensión y el programa Filezilla tiene la peligrosa opción activada por defecto “Tratar archivos sin extensión como archivos ASCII“. Así que al volverlos a subir, aunque lo hiciera en binario, los archivos ya estaban corruptos.

Un error irrecuperable a tener en cuenta, hay que descargar los attachments de phpBB en binario, no en ASCII.

Etiquetas: , , , ,

Comments No Hay Comentarios »

Las expresiones regulares en ASP son muy útiles para reemplazar carácteres extraños en cadenas de texto y quitar acentos para por ejemplo generar url’s amigables

Etiquetas: , , , , , , , , , , , , , , , , , , , ,

Comments No Hay Comentarios »

Solución al problema de que los carácteres especiales no se muestran bien en un XML devuelto en PHP leyendo de base de datos MySQL con codificación UTF-8.

Etiquetas: , , , , , , , , , , , , , , , , , , , ,

Comments 1 Comentario »

A la hora de instalar PHP en Windows para funcionar sobre el servidor web IIS podemos encontrarnos con algunos problemas. Dejo aquí una recopilación de pasos básicos que recomiendo al instalar PHP en Windows si encontramos alguno de estos problemas. Al menos está comprobado que funciona hasta la versión de php 5.2.9:

1.- Descargar el archivo comprimido en zip de http://php.net.
2.- Descomprimirlo en la carpeta c:\php5, por ejemplo.
3.- En IIS, en Equipo Local / Sitios web / Propiedades / pestaña Directorio particular / Configuración, dar de alta la asignación .php con c:\php5\php5isapi.dll.
4.- En IIS, en Equipo Local / Sitios web / Propiedades / pestaña Documentos / Habilitar documento predeterminado, agregar index.htm e index.php, que suelen ser los documentos por defecto en webs que usan Apache y PHP.
5.- En c:\php5, hacer una copia del archivo php.ini-recommended y renombrarlo a php.ini.
6.- Modificar en el php.ini anterior:
– De ;cgi.force_redirect = 1 a cgi.force_redirect = 0 (descomentar y poner a 0).
extension_dir = “c:\php5\ext\”.
– descomentar extension=php_mysql.dll para que funcione mysql.
– descomentar extension=php_mbstring.dll y extension=php_mcrypt.dll para que no dé error el PhpMyAdmin, por ejemplo (al menos la versión 3.2.3.0).
7.- Copiar el archivo  php.ini modificado a c:\windows.
8.- ver las dependencias de cada extensión, por ejemplo php_mysql.dll PHP >= 5.0.0, requires libmysql.dll (bundled) y copiarlas en c:\Windows\System32 (en este caso libmysql.dll). Para php_mcrypt.dll, Requires: libmcrypt.dll, copiar libmcrypt.dll a c:\Windows\System32.

Etiquetas: , , , , , ,

Comments 1 Comentario »

En una ocasión, instalando un servidor web con sistema operativo Linux Debian y soporte para PHP y MySQL, me encontré al instalar WordPress para un blog con el problema “Parece que tu instalación de PHP no cuenta con la extensión de MySQL, necesaria para WordPress”. La solución al problema es descomentar una línea del archivo php.ini, como especifica Patob en su blog. Hay que descomentar en el php.ini, generalmente en /etc/php5/apache2/php.ini (eliminar el punto y coma ; de delante) la línea:

;extension=mysql.so

con esto PHP carga la extensión para MySQL automáticamente. Por último reiniciamos Apache y MySQL:

#/etc/init.d/apache restart
#/etc/init.d/mysql restart

y este problema debería solucionarse.

Etiquetas: , , , ,

Comments 1 Comentario »

Hoy viernes 13 de marzo se cumplen 20 años del nacimiento de las páginas web (WWW), tal como las conocemos. El 13 de marzo de 1989 una propuesta presentada por un físico del CERN (Centro Europeo de Investigaciones Nucleares) sentó las bases para desarrollar el lenguaje HTML, que en principio serviría para intercambiar información entre físicos de todo el mundo a través de Internet. El lenguaje HTML (HyperText Markup Language) es un lenguaje de etiquetas que permite establecer hipervínculos entre documentos de forma fácil y que los navegadores saben interpretar. Tiempo después vendrían nuevas tecnologías y lenguajes como javascript, flash, asp, php,…

El creador de la WWW, Tim Berners-Lee junto al ordenador que sirvió de primer servidor web

El creador de la WWW, Tim Berners-Lee, junto al ordenador que sirvió de primer servidor web

Pocos se imaginaban que aquel invento iba a revolucionar la tecnología y en el CERN lo están celebrando dando conferencias, haciendo camisetas y exponiendo el primer ordenador que albergó un servidor web, un navegador web y un editor para desarrollar páginas web.

Ejemplo de documento en lenguaje HTML

Ejemplo de documento en lenguaje HTML

Recuerdo mi primer contacto con la web en la Universidad Politécnica de Valencia (España), cuando inicié (y años después acabé) la carrera de Ingeniería Técnica en Informática de Sistemas, allá por el año 1994. En 1995-96 colaboré en el desarrollo de una página web de una asociación de la Universidad y desde la Facultad de Informática programábamos las páginas web con un editor de textos y editor de imágenes básicos… Escribía el lenguaje HTML totalmente a mano, qué recuerdos, <html><head><title>… <table border=”0″… Empezando de esta forma me ha servido mucho posteriormente, es mucho más fácil encontrar errores y problemas cuando se conoce el código.

Este artículo en una versión menos técnica también lo podéis encontrar en Tecnología de la Vida.

Etiquetas: , , , , , , , , , , ,

Comments 1 Comentario »

Me han enviado un correo con un truco curioso, obtenido de una traducción del artículo original de Phil Benwell.

Se trata de un pequeño código en Javascript para modificar el contenido de cualquier página web que se esté visualizando. Evidentemente sólo funciona en local con las webs que tengamos cargadas en el navegador, pero podemos vacilar un poco delante de los amigos modificando la cifra de ganancias en AdSense o apareciendo en la primera página de algún periódico online.

Para ello, cuando estemos visualizando la web que queremos modificar, pegamos el siguiente código en la barra de direcciones del navegador:

javascript:document.body.contentEditable='true';
document.designMode='on'; void 0

y pulsamos Intro, con lo que podremos editar cualquier parte de la página web: eliminar contenido, añadir imágenes, modificar texto,…

Como ya he dicho, estas modificaciones sólo actúan a nivel de nuestro ordenador local, con lo que no estamos modificando nada en Internet.

Etiquetas: ,

Comments No Hay Comentarios »

Alguna vez he tenido la necesidad de eliminar los saltos de línea en un campo de formulario de tipo textarea. Más aún, he tenido la necesidad de eliminar los saltos de línea del texto seleccionado dentro de un textarea. Con la siguiente función Javascript conseguimos localizar la porción de texto seleccionado y eliminar los saltos de línea o line breaks (“\n”) y los retornos de carro o carrier return (“\r”). Para ello utilizamos funciones propias del lenguaje Javascript (createTextRange, duplicate, replace) y expresiones regulares.

function suprSaltos(campo) {
 if (campo.createTextRange) {
  campo.focus(campo.caretPos);
  campo.caretPos = document.selection.createRange().duplicate();
  if(campo.caretPos.text.length&gt;0) {
   var sel = campo.caretPos.text;
   var fin = '';
   while(sel.substring(sel.length-1, sel.length)==' ') {
    sel = sel.substring(0, sel.length-1);
    fin += ' ';
   }
   campo.caretPos.text = sel.replace(new RegExp('\\n','g'),''). _
                          replace(new RegExp('\\r','g'),'') + fin;
  } else campo.caretPos.text = '';
 }
 else campo.value += '';
}

Como en otras funciones, en esta función es necesario juntar la expresión en una única línea quitando los _ de final de línea porque de lo contrario no funcionará.

Etiquetas: , ,

Comments 4 Comentarios »

Para validar direcciones de Internet simples (URL’s) de usuarios que introducen su página web en un campo de formulario podemos utilizar la siguiente función en Javascript:

function ValidarUrl(txtCampo)
  strExpReg = /^http:\/\/[a-zA-Z0-9-_:/.?&amp;=]+$/;
  if (!strExpReg.test(txtCampoActual.value)){
    strMensaje = 'La página web no es válida,\ncontiene carácteres ';
    strMensaje += 'no válidos o no empieza por "http://"';
    alert(strMensaje);
    txtCampoActual.focus();
    return false;
  }
  return true;
end function

En este caso, la validación se realiza del lado del cliente (al ser Javascript) y la función recibe como parámetro el campo del formulario donde irá la URL, mostrando un mensaje de error si la URL no es válida y devolviendo el foco a ese campo.

Obtener su versión en ASP y otros lenguajes es fácil adaptando la expresión regular a la sintaxis de cada lenguaje

Etiquetas: , ,

Comments 3 Comentarios »

Para validar direcciones de e-mail podemos utilizar la siguiente función en ASP:

function esValidoEmail(cadena)
  set expReg = New RegExp
  expReg.Pattern = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@_
                     [_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$"
  esValidoEmail = expReg.Test(cadena) and len(cadena) &lt; 256
  set expReg = nothing
end function

Su versión en Javascript:

function esValidoEmail(cadena) {
  strExpReg = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@_
                [_a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/;
  return strExpReg.test(cadena);
}

Como en las otras funciones, en esta función en Javascript sí que es necesario juntar la expresión en una única línea quitando los _ de final de línea porque de lo contrario no funcionará.

Etiquetas: , ,

Comments No Hay Comentarios »