Hola, a pedido de Snifer que me preguntaba como obtener la ip de un visitante desde php, hice una pequeña clase para manipular el agent o los datos que nos envía el navegador, entre otras cosas se puede obtener el id de sessión, la ip, el sistema operativo, navegador y la dirección actual que se está queriendo cargar (o el link.), además se puede enviar una respuesta HTTP, puedes tirar unh forbidden o un 503 dependiendo si no te gusta lo que vez, esta clase no maneja ips que bienen de proxys.-
<?php
/*
* Clase diseñada originalmente para Basec0de.org
* ----------------------------------------------
* El objetivo de esta clase es recopilar todo tipo de información sobre un agente o usuario/visitante
* de nuestro sitio web.
* @ Author: <Harkonnen>
* @ Status: Prototype
* @ Contact: <[email protected]>
* @ Last-Edit: 28/11/13
* -----------------------------------------------
* Tiene como dependencia el Trait Property
*/
interface iAgent
{
public function denegar();
public function internal_error();
}
class Agent implements iAgent
{
use Property;
private $ip = 0;
private $session_id = 0;
private $sistema = null;
private $browser = null;
private $location = null;
public function __construct()
{
$browser = get_browser(null, true);
$this->sistema = $browser['platform'];
$this->browser = $browser['browser'];
$this->session_id = isset($_SESSION) ? session_id() : null;
$this->ip = $_SERVER['REMOTE_ADDR'];
$this->location = $_SERVER['REQUEST_URI'];
}
public function denegar()
{
ob_start();
header('HTTP/1.0 403 Forbidden');
die();
}
public function internal_error()
{
ob_start();
header('HTTP/1.0 503 Service Temporarily Unavailable');
die();
}
public function set_ip($value) { ; }
public function get_ip() { return $this->ip; }
public function set_session_id($value) { ; }
public function get_session_id() { return $this->session_id; }
public function set_sistema($value) { ; }
public function get_sistema() { return $this->sistema; }
public function set_browser($value) { ; }
public function get_browser() { return $this->browser; }
public function set_location($value) { ; }
public function get_location() { return $this->location; }
}
espero que les agrade, el uso es sencillo, primero deben incluir el Trait Property aquí (http://blog.std-io.com/2013/11/trait-property-en-php.html) lo pueden encontrar.-
Despues incluir el archivo que contenga esta clase e instanciarlo de esta forma.
$agente = new Agent();
echo $agente->ip;
echo $agente->session_id;
echo htmlentities($agente->browser);
y si quicieran mandarle un error 403 forbidden
$agente = new Agent();
$agente->denegar();
es algo muy simple pero útil, y lo necesitaba hacer asique lo postee ya que estaba.
Saludos! espero que les agrade.-