Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Castg! en 11 Marzo 2012, 08:40 am



Título: Firma dinámica [Castg] - Depurado
Publicado por: Castg! en 11 Marzo 2012, 08:40 am
Estaba (sigo estando) muy aburrido, me puse a navegar por el foro en mis viejos mensajes, y encontre el tema sobre la firma dinamica que habia hecho hace ya un par de años (http://foro.elhacker.net/php/firma_dinamica_por_castg_observa_tus_datos_automaticamente-t285255.0.html). En ese entonces yo pensaba sobre la programación de forma muy distinta.

Con esto no quiero decir que ahora soy un super programador de ASM, sino que leí mucho más de programación y depuración (No mucho igual :D) y arregle un poco el código para que quede más bonito y no tarde tanto en cargar. Además, estuve mucho tiempo ausente en el foro, y agregaron un botón de Google Plus y tuve que modificar la expresión regular.

Asi que puse manos a la obra y reactive mi vieja firma que tenía bastante empolvada.

Acá les dejo el código como siempre por cualquier interesado, los datos de imagen de fondo y tipografía utilizada estan en el post que nombré con anterioridad.

Principalmente cambié los formatos de imágenes, antes usaba PNG y tardaba muchisimo, ahora con estos cambios, en vez de recibir un PNG de 51KB, es un JPEG de 15KB con una resolución media, lo suficientemente agradable a los ojos.

Acá el código:

Código
  1. <?php
  2. header('Content-type: image/jpeg');
  3. if(!empty($_COOKIE['firmaid'])){
  4. $id=$_COOKIE['firmaid'];
  5. }else{
  6. $post = preg_match('/^.+<td align="center" class="smalltext"><g\:plusone size="small"><\/g\:plusone><a href="http\:\/\/foro\.elhacker\.net\/profiles\/([a-z0-9]+\-u([0-9]+)).html".+/', str_replace("\n" , '', file_get_contents(getenv('HTTP_REFERER'))), $res);
  7. $id=(count($res)>=3)?$res[2]:false;
  8. }
  9. $perfil = file_get_contents('http://foro.elhacker.net/index.php?&action=.xml;sa=profile;u='.$id);
  10. $perfil = preg_replace('/[\n\t\r]+/' , '', $perfil);
  11. $nick = preg_replace('/.*<name><!\[CDATA\[(.*)\]\]><\/name>.*/', 'Hola $1!', $perfil);
  12. $lugar = preg_replace('/.*<location><!\[CDATA\[(.*)\]\]><\/location>.*/', 'Sos de $1.', $perfil);
  13. $edad = preg_replace('/.*<age>(.*)<\/age>.*/', 'Tenes $1 años.', $perfil);
  14. $posts = preg_replace('/.*<posts>(.*)<\/posts>.*/', 'Escribiste $1 posts.', $perfil);
  15. $userAgent= strtolower($_SERVER['HTTP_USER_AGENT']);
  16. $navegador = preg_replace('/.*(firefox|msie|opera|netscape|safari|chrome|epiphany|galeon|iceape|icewease|kazehakasel|konqueror|minefield|seamonkey|shiretoko|avant|lock|k\-meleon|minefield|navigator).*/', '$1', $userAgent);
  17. $sistema = preg_replace('/.*(windows|mac|linux).*/', '$1', $userAgent);
  18. $agent = ($navegador!=$userAgent && $sistema!=$userAgent) ? "Usas $navegador desde $sistema." : '';
  19. if($lugar==$perfil){ $lugar = 'Ubicacion no definida'; }
  20. if($edad==$perfil){ $edad = 'Edad no definida'; }
  21. if($nick!=$perfil){
  22. if(empty($_COOKIE['id'])){ setcookie('firma',$id,time()+315360000); }
  23. $mensaje = "$nick\n\n  $posts\n  $lugar\n  $edad\n  Tu ip es {$_SERVER['REMOTE_ADDR']}.\n  $agent";
  24. }else{
  25. $mensaje = "    Tu ip es: {$_SERVER['REMOTE_ADDR']}\n\n  Para descubrir más de mis\npoderes, mirame en un post\ndonde Castg! comente." ;
  26. }
  27. $im = imagecreatefromjpeg('firma-perfil.jpg');
  28. $blanco = imagecolorallocate($im, 255,255,255);
  29. $negro = imagecolorallocate($im, 0,0,0);
  30. $fuente = './persansb.ttf';
  31. $puntosTexto = imagettfbbox(12, 0, $fuente, $mensaje);
  32. $tamanioTexto = array();
  33. $tamanioTexto['x'] = $puntosTexto[2] - $puntosTexto[6];
  34. $tamanioTexto['y'] = $puntosTexto[3] - $puntosTexto[7];
  35. $xtexto = (imagesx($im) - $tamanioTexto['x']) / 2 ;
  36. $ytexto = ((imagesy($im) - $tamanioTexto['y']) / 2) + imagefontheight($fuente) ;
  37. imagettftext($im, 12, 0, $xtexto, $ytexto, $blanco, $fuente, $mensaje);
  38. imagejpeg($im,NULL,90);
  39. ?>


Nos vimos!


Título: Re: Firma dinámica [Castg] - Depurado
Publicado por: Og. en 31 Marzo 2012, 11:20 am
Que tiempos, cuando hice eso sirdarkcat me mando un aviso por que andaba duplicando requests y en esos tiempos no conocía o me daba flojera manejar cache jajaja

Somos de masomenos la misma generación de elhacker.

Saludos!