Último artículo del año: Componentes imprescindibles del desarrollador web

Escrito el 31/December/2007 por juan_belon

No puede faltar un artículo en el último día del año ,¿no?!, además es Navidad jeje

Tampoco puede faltar en los módulos del Firefox de todo desarrollador Firebug e YSlow!

Gracias a éste último, combinado con Firebug podemos analizar la fuente de las esperas más largas por carga en nuestra web,es necesario para saber cómo mejorar nuestras prácticas de programación y escritura de aplicaciones para el marco de internet.

Los consejos de YSlow son buenos consejeros y nos enseñan como construir etags,hacer cacheable ajax,…y en general nos dan unas sencillas reglas para hacer que las cargas sean más rápidas, usar ficheros comprimidos con gzip, evitar las expresiones dentro de CSS,etc.

Todo un regalo de Reyes Majos para esta entrada del 2oo8!

Salu2 y cuidaros!

Tutoriales howto de frameworks actuales

Escrito el 27/December/2007 por juan_belon

Podeis encontrar las pruebas que estoy haciendo para los tests de eficiencia y comparación el mundo versus zenphp en los foros de la "Forja" del proyecto:
[https://forja.rediris.es/forum/forum.php?forum_id=962]

En la última versión de zenphp se ha añadido una clase de búsqueda con el famoso truco MATCH.

Gracias  a  Programador Freelancer PHP.org.

Evitando malgasto de memoria con objetos

Escrito el 14/December/2007 por juan_belon

¿Por qué?: Fácil: porque si queremos mantener referencias a objetos dentro de otros objetos veremos que si hacemos una clase llamada clase_prueba y la instanciamos:

<?php
$a = new clase_prueba();
?>

Si queremos referenciarla y no realizar copias innecesarias de TODO el objeto simplemente hacemos:

<?php
$a =& new clase_prueba();
$b =& $a;
?>

De forma que ambas tienen AHORA la misma referencia.

Corregidme si me equivoco :P que no hay programador PHP perfecto en este mundo! :)

Cuando ya estamos en el caos!

Escrito el 13/December/2007 por pabloko

Hola a todos, hace unas semanas presté a un amigo una carpeta en un servidor mio para que se hiciera sus paranoyas y eso. Incauto, la ha liado y ha dejado acceso libre a una serie de asquerosos defacers que han poblado todo el servidor de basura, concretamente archivos de NetShell y cosas asi de molestas, ya os imaginas claves al aire libre, el servidor smtp saturado enviando spam, de todo un poco.

Lo mas molesto era un iframe que generaba en todas las paginas, y que producia miles de errores y desvios de tráfico.

Es un servidor grande, con aproximadamente 3 o 4 gigas de datos nada mas que de archivos html y php, con clientes gordos que tuvieron bastantes problemas.

Rapidamente desactive toda posibilidad de acceso SHELL, cambien passwords y elimine todos los archivos del defacing, pero los putos iframes quedaron ayi

Sé que con PERL con una sola linea de texto (perl -pi -e ‘s/sustituir/sustituido/g' *) se puede hacer todo eso, pero como soy masoka, he elaborado todo este php para hacerlo ;)

";
$sustituto="";
function extension($archivo){
$posicion = strrpos($archivo,'.')+1;
$extension = substr($archivo,$posicion);
return $extension;
}
function listar_directorios_ruta($ruta){
if (is_dir($ruta)) {
if ($dh = opendir($ruta)) {
while (($file = readdir($dh)) !== false) {
if ($file=="." or $file=="..") {} else {
$EXT=extension( $ruta. $file);
if ($EXT=="html" or $EXT=="htm" or $EXT=="php" or $EXT=="php3" or $EXT=="php4" or $EXT=="txt") {
$readed=file_get_contents($ruta.$file);
$pos=strpos($readed,$sustituir);
if ($pos!="") {$basura="SE HA ENCONTRADO BASURA";
$contenido=str_replace($sustituir,$sustituto,$readed);
if (is_writable($ruta.$file)) {
if (!$gestor = fopen($ruta.$file, ‘w')) {
echo "NO SE ABRE";
exit;
}
if (fwrite($gestor, $contenido) === FALSE) {
echo "NO SE ESCRIBE";
exit;
}
echo "WEA ARREGLADO SII";
fclose($gestor);
} else {
echo "NO ES ESCRIBIBLE";
}
} else {$basura="";}
echo "
Nombre de archivo: $ruta$file : Es un: " . extension( $ruta. $file).$basura; }}
if (is_dir($ruta . $file) && $file!="." && $file!=".."){
listar_directorios_ruta($ruta . $file . "/");
}
}
closedir($dh);
}
}else
echo "
No es ruta valida";
}
listar_directorios_ruta("./");
?>

No os preocupeis, porque ami de una sola pasada me ha hecho los 4 gigas de datos, pero si veis que no, pasadlo tantas veces como sea necesario.

Lo bueno es que incluye un debug para ver cuales estabamn infectados y si se ha solucionado o no

Me ha dado tanto placer terminarlo que lo he decidido publicar por aqui

Saludossss

Identificadores aleatorios

Escrito el 11/December/2007 por juan_belon

Si has necesitado seguir la pista a los usuarios de tu sitio web alguna vez,habrás querido asignarles identificadores únicos con los que poder distinguirlos.
Puedes usar la clase de sesiones seguras de ésta misma página para generarla, y después guardar información que quieras acerca del usuario en una base de datos utilizando el ID generado, de página en página incluso en los links o mediante cookies. Si no has usado la clase de ésta web ,habrás tenido que generar dichos identificadores aleatoriamente, de otra forma es demasiado fácil que cualquiera pueda enmascararse ideentificándose como otro usuario…pero por fortuna, los identificadores aleatorios son muy simples de generar! estás de suerte ! :D


<?php
//ID de sesión  :: genera un id de sesión:
function obtenerID_Sesion($longitud 16){
//Establecer el rango de posibles caracteres:
$rango  "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$rango .= "abcdefghijklmnopqrstuvwxyz";
$ultimo  strlen($rango) - 1;

$ids =  ""//ID de sesión
for ($i=0$i$length$i++) {
$ids .= $rango[mt_rand(0$ultimo)];
}

return $ids;
}
//Semilla del generador:
mt_srand(100000000 * (double) microtime());
if (isset(
$_REQUEST[‘ids'])){
echo 
"El anterior ID de sesión fue {$_REQUEST['ids']}
\n"
;
}

$ids =  obtenerID_Sesion();

print(‘<a href="{$_SERVER['PHP_SELF‘]}?ids=$ids">');
print(
‘Obtener Nuevo ID de sesión');
print(
‘\n');

?>


Clase genérica de base de datos para zenphp

Escrito el 11/December/2007 por juan_belon

He reescrito la clase mySQL y le he añadido la funcionalidad de poder utilizar cualquier base de datos

Podeis verla en el repositorio de zenphp,pinchando aquí. [actualizado]