|

PHPIDS: seguridad en tus aplicaciones

phpids.pngPHPIDS (PHP-Intrusion Detection System) es una librería que podemos añadir a nuestras aplicaciones realizadas en PHP, que nos ofrece capa de seguridad de forma sencilla. No evita ni filtra ataques contra nuestra aplicación, tan solo detecta cuando se produce un ataque y actúa como nosotros queremos que lo haga.
Basado en un conjunto de filtros aprobados y testeados, cada ataque tiene asignado un número que valora su impacto en nuestra aplicación, lo cual hace sencillo decidir que acción tomar contra el intento de ataque, lo cual puede ser un mensaje de aviso por correo a los desarrolladores, mostrar un aviso al atacante o finalizar la aplicación.
La integración con nuestra aplicación es sencilla.
PHPIDS
Vía / PHPDeveloper.org

Directorio de temas para WordPress

WP Themes Free es un directorio de temas para WordPress, para aquellos que no saben diseñar o no saben pasar un diseño a WordPress y quieren salir de los temas que ofrece por defecto.
wpthemesfree.png
Se pueden ver los últimos temas añadidos, los más populares, los más vistos, los más testeados, los más valorados y los más votados. A parte, estan organizados por categorías como adultos, negocios, entretenimiento… y organizados por propiedades: número de columnas, color, …
WP Themes Free
Vía / Digg

|

Ventajas de usar mysqli

A la hora de realizar aplicaciones PHP/MySQL, normalmente se suele utilizar la librería mysql, cuando existe la librería mysqli, la cual puede ser más eficiente.

Os paso 4 motivos que a mí me han parecido muy importantes:

  • Prepared statements: a parte de ser más cómodo a la hora de montar nuestras querys, ofrece mucha seguridad contra el SQL injected.
$mysqli = new $stmt = $mysqli->prepare("select usuario from usuarios where i = ?");
$stmt->bind_param('i',$id);
$stmt->execute();
  • Conexiones seguras: la posibilidad de usar mysqli_ssl_set() permite realizar conexiones seguras indicando detalles del certificado mediante los parámetros.
  • Múltiples querys: posibilidad de ejecutar varias querys separadas por punto y coma, en una conexión.
  • Interfaz orientado a objetos: esta característica permite al desarrollador ampliar el objeto para añadir nuevas funcionalidades más específicas. Por ejemplo se podrían separar los errores de operación (conexión) a los de desarrollo (querys mal formadas).

The Four Major Benefits of MySQLi

Vía / dzone

links for 2007-06-19

|

My-BIC: otro framework Ajax

My-BIC es otro más de los numerosos frameworks que han aparecido para desarrollar aplicaciones Ajax. Ofrece 3 ficheros y un diseño que permite centrarte en realizar las cosas, más que en iniciar la tarea, siendo válido para PHP4 y PHP5.
Ofrece soporte para XML, JSON y texto en las transacciones Ajax, a parte de funcionar para Safari, Firefox, IE y Opera.
Dentro de las novedades que ofrece la recién versión 1.0, nos encontramos con: facilidad para trabajar con formularios, debug, integración con Firebug.
My-BIC
Vía / PHPDeveloper.org

solidDB para MySQL

solidDB.gifsolidDB es una versión más rápida para MySQL que incluye el sistema de almacenamiento solidDB, el cual maneja mejor volúmenes de transacciones pesadas y un gran número de usuarios concurrentes.
Es compatible 100%, ya que incluye el mismo código que MySQL. Los desarrolladores pueden acceder a solidDB para MySQL con los mismos drivers de MySQL y usar las mismas herramientas que antes.
Está diseñada para tomar ventaja de las configuraciones multiprocesador y multicore. Debido a que está diseñado para multiples threads, los rendimientos para un número elevado de usuarios son mejores, habiendo datos que lo demuestran.
solidDB para MySQL

links for 2007-06-16

Controlar el número de teclas de un textarea

Algo que hay que tener en cuenta muchas veces cuando trabajamos con formularios es la longitud del texto que introducimos en los textarea, ya que en muchos casos esa información se almacena en la BD y puede que el campo en dónde se guarda tenga un límite de tamaño.

textarea.png

No tengo muy claro según lo que dicta la accesibilidad y la usabilidad, si el ejemplo que muestro es del todo correcto. Lo normal es que si se supera la longitud de texto máximo, no deje introducir ningún carácter más. Pero en este caso simplemente vamos a avisar mediante una barra de progreso cuánto texto hemos introducido y cuánto nos queda. ¿Por qué? pues porque personalmente me ha pasado que muchas veces, al escribir mirando el teclado, ni me fijo en lo que pasa en la pantalla, por lo que me he podido pasar pulsando teclas un buen rato y no fijarme en que no se escribía nada. O también, cuando se hace un copy/paste, el texto puede ser mayor que lo permitido. En ambos casos es mejor tener el texto completo e ir reduciéndolo.

Como creo que quizás pueda serle útil a alguien este ejemplo, el desarrollo va a ser muy sencillo, ya que algunas veces los comentarios que recibimos de scripts antiguos son de gente con poco conocimiento. Luego, quien quiera usar JSON o Ajax (no sé para qué) o lo que quiera, que lo haga.

El procedimiento es sencillo, disponemos de un textarea, con un ancho definido mediante estilos. También existe una capa del mismo ancho que el textarea, y que se situará debajo del textarea. En el textarea se capturará el evento onkeyup, para que cuando se pulse una tecla, podamos ver la longitud del texto y modificar la barra de progreso.

<textarea onkeyup="progreso_tecla(this)" value=""></textarea>
<div id="progreso">(0 / 250)</div>
textarea {
width: 300px;
height: 200px;
}
#progreso {
background: url(textarea.png) no-repeat;
background-position: -300px 0px;
width: 300px;
height: 14px;
text-align: center;
color: #000000;
font-size: 8pt;
font-family: Arial;
text-transform: uppercase;
}

La barra de progreso funciona de la siguiente manera, el fondo es una imagen con el progreso, inicialmente estará desplazada a la izquierda el tamaño de la barra. Por ejemplo, si la barra tiene un ancho de 300px, la posición izquierda del fondo será -300px. Cuando se pulse una tecla, se recalculará la posición izquierda, según la longitud del texto. Si la longitud supera el máximo, el fondo no será la imagen, sino de color rojo para avisar del error.

var max=250;
var ancho=300;
function progreso_tecla(obj) {
var progreso = document.getElementById("progreso");
if (obj.value.length < max) {
progreso.style.backgroundColor = "#FFFFFF";
progreso.style.backgroundImage = "url(textarea.png)";
progreso.style.color = "#000000";
var pos = ancho-parseInt((ancho*parseInt(obj.value.length))/250);
progreso.style.backgroundPosition = "-"+pos+"px 0px";
} else {
progreso.style.backgroundColor = "#CC0000";
progreso.style.backgroundImage = "url()";
progreso.style.color = "#FFFFFF";
}
progreso.innerHTML = "("+obj.value.length+" / "+max+")";
}

Ejemplo

WYMeditor: editor XHTML/CSS

WYMeditor es un editor WYSIWYM basado en web. La característica principal de este navegador es centrar la atención del usuario en la estructura de la página (layout).
wymeditor.png
WYMeditor ha sido creado para generar código XHTML estricto perfectamente estructurado, según las especificaciones XHTML de la W3C. El código no puede ser contamidano por información visual como estilos de fuentes, tamaños, bordes o colores. El usuario define el significado del contenido, por el cual será determinado su aspecto mediante la hoja de estilos. El resultado es fácil y rápido de mantener.
WYMeditor
Vía / SitePoint Blogs