lunes, 18 de julio de 2011

Detectar IP desde PHP

En algunos momentos me siento tonto escribiendo este blog, pensando será que a alguien alguna vez le servirá esta información, pero luego pensé que somos muchos los consumidores de internet entramos a bajar música, videos, información, tareas (bueno yo no bajo tareas) pero pocos se dan a la tarea de contribuir con información, quien luego de hacer una buena tarea la sube por si a alguien más le sirve? la mayoridad dirá "NO si a mí me costo que les cueste", como opinión personal pienso que entre mas información compartamos seremos una mejor sociedad digital.

En fin, aquí otro caso, hace poco que estoy haciendo un sistema tipo HELP DESK y se me ocurrió que a los técnicos les interesaría mucho saber la ip de la maquina en donde se puso el caso que en la mayor parte de las veces es la maquina que tiene el problema así que probando funciones y código, termine con la siguiente función espero les sirva:

function obtenerIP() {
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
       $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif (isset($_SERVER['HTTP_VIA'])) {
       $ip = $_SERVER['HTTP_VIA'];
    }
    elseif (isset($_SERVER['REMOTE_ADDR'])) {
       $ip = $_SERVER['REMOTE_ADDR'];
    }
    else {
       $ip = "0.0.0.0";
    }
    return $ip;
}

//De esta forma llamamos a la funcion y obtenemos la IP

$ip=obtenerIP();

martes, 12 de julio de 2011

Dimencionar una imagen en PHP


Voy a tratar de escribir pequeños ejemplos de cómo resolver problemas que a veces se nos presentan mientras programamos, lo hará lo más simple posible, pues en mi caso aprendo mejor de simple a complejo.

Supongamos que queremos mostrar N numero de imágenes que se encuentran dentro de un directorio pero dichas imágenes tienen dimensiones diferentes (alto y ancho) pero queremos que al menos coincidan en una de esas dimensiones por ejemplo que todas tengan 80 pixeles de alto no importa el ancho.

Lo que necesitamos hacer es primero crear la ruta de la imagen:
$link_foto="fotos/nombre_del_archivo.jpg";

Luego verificamos que exista dicho archivo con la sentencia file_exists de este modo 
if (file_exists($link_foto)){

Creamos el objeto de la imagen del tipo jpeg
$img = ImageCreateFromJpeg($link_foto);

Obtenemos su dimensión X
$x = ImageSX($img);

Obtenemos su dimensión Y
$y = ImageSY($img);

Definimos por ejemplo el ancho que queremos en todas las imágenes en pixeles, voy a decirle que quiero 60px de ancho
$ancho=60;

Obtenemos el porcentaje que 60 px de ancho representa en $x con una regla de 3 simple si $x es el 100% de la imagen cuanto representa $ancho;
$por_ancho=(60*100)/$x;

Con este porcentaje podemos obtener el alto en relación al ancho
$alto=round($y*($por_ancho/100));
Cerramos el IF
}

El Código quedaría de la siguiente forma

<?php

$link_foto="fotos/nombre_del_archivo.jpg";
               
if (file_exists($link_foto)){
                               $img = ImageCreateFromJpeg($link_foto);
                               $x = ImageSX($img);
                               $y = ImageSY($img);
                               $ancho=60;
                               $por_ancho=(60*100)/$x;
                               $alto=round($y*($por_ancho/100));
}
?>

Y para mostrar la imagen en HTML lo haríamos así

<img src="<?php echo $link_foto; ?>" width="<?php echo $ancho; ?>" height="<?php echo $alto; ?>" />