Ver Mensaje Individual
  #9  
Antiguo 16-08-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Reputación: 20
D-MO Va por buen camino
Cita:
Empezado por roman
Muy, muy interesante Darwin
Orale, pues que bueno que te parezca interesante

Cita:
Empezado por roman
Platícanos cómo lo haces.
Pues me extraña compadre que para eso estamos en el foro ¿no?

La verdad es que no tiene mayor ciencia, es tan solo un script de php "disfrazado" para ocultar su "real identidad".

Lo único que hago es leer el html de la portada del foro y buscar entre el texto los datos requeridos. Estos datos se encuentran cerca de la línea 1900 y se vé un código como este:
Código:
<div class="smallfont">
            <div>

                Temas: 33.054,
                Mensajes: 149.776,
                Miembros: 11.783,
                    <span title="Within the Last 30 Days">Miembros activos: 1.745</span>
                
            </div>
            <div>Le damos la bienvenida a nuestro miembro más reciente, <a href="member.php?u=11792" target="_blank">Obana</a></div>
        </div>
Para tomar todo el html de la página uso la función file() de php de la siguiente manera:
Código PHP:
$file file('http://www.clubdelphi.com/foros/index.php'); 
Luego mediante un proceso un poco tardado analizo cada una de las líneas en busca de las "palabras mágicas", y utilizando expresiones regulares (Gracias por el tutorial roman) voy eliminando los datos que no necesito
Código PHP:
foreach($file as $f){
    if(
strstr($f,'Temas:')){
        
$temas preg_replace('%,.*\n%','',$f);
    }
    if(
strstr($f,'Mensajes:')){
        
$mensajes preg_replace('%,.*\n%','',$f);
    }
    if(
strstr($f,'Miembros:')){
        
$miembros preg_replace('%,.*\n%','',$f);
    }

Lo siguiente, tambien mediante expresiones regulares es eliminar el resto del texto innecesario en las variables para que conserven únicamente los valores numéricos (Se que con expresiones regulares mas avanzadas se pueden hacer de mejor pero aún no le he agarrado el hilo completamente ).
Código PHP:
$temas preg_replace('%^.*Temas: %','',$temas);
$mensajes preg_replace('%^.*Mensajes: %','',$mensajes);
$miembros preg_replace('%^.*Miembros: %','',$miembros); 
Ahora que ya tengo los datos que necesito, empieza el proceso de crear la imagen, para ello hago lo siguiente:
Código PHP:
header("Content-type: image/png");
$im = @imagecreate(15060);
$background_color imagecolorallocate($im255255,255 );
$text_color imagecolorallocate($im000); 
Seguido con la creación del borde de la imagen
Código PHP:
imagerectangle($im,0,0,149,59,$text_color); 
Agregar el texto:
Código PHP:
imagestring($im2155,   '   Temas: '.$temas$text_color);
imagestring($im21520,  'Mensajes: '.$mensajes$text_color);
imagestring($im21535,  'Miembros: '.$miembros$text_color); 
y por último la creación y liberación de memoria
Código PHP:
imagepng($im);
imagedestroy($im); 
Si tomas este código y lo guardas en un archivo llamado clubdelphi.php verás la imagen tal y como se vé en el post anterior, pero si miras la url de la imagen, el nombre que tiene es clubdelphi.png (a esto me refería con lo de disfrazada ). Para hacer esto, basta con agregar las siguientes líneas al .htaccess de apache:
Código:
<Files clubdelphi.png>
     ForceType application/x-httpd-php
</Files>
Y luego renombrar el archivo a "clubdelphi.png"

No sé si he olvidado algo, pero si es así, no duden en preguntar.

Saludos.

PD:
Se que el código se puede mejorar, pero como ya he dicho antes, soy novato en esto .
Responder Con Cita