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!
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.
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
que no hay programador PHP perfecto en este mundo! 
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
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 !
<?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');
?>
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]