yii

Hola, hace rato no posteaba nada, he estado con hartas cosas he ahí el motivo, ahora les mostraré una función que utilizo en mis sistemas creados en YII para obtener la IP de quien se logea o realiza alguna acción en el sistemilla.

Es bastante sencilla y solo hay que alojarla en un nuevo archivo que se debe crear en la carpeta components obviamente que esta clase debe ser extención de controladores globales.

En la carpeta Components creado el siguiente archivo llamado Funcion.php (en realidad el nombre que deseen ponerle al archivo), el cual tendría el siguiente contenido.

<?php
class Funcion extends CController
{
  public static function obtenerIP()
  {
     if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
     {
        $client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : "unknown" );
        $entries = preg_split('/[, ]/', $_SERVER['HTTP_X_FORWARDED_FOR']);
   
        reset($entries);
        while (list(, $entry) = each($entries)) {
           $entry = trim($entry);
           if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) ) {
              $private_ip = array(
                    '/^0\./', 
                    '/^127\.0\.0\.1/', 
                    '/^192\.168\..*/', 
                    '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', 
                    '/^10\..*/');
              $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
              if ($client_ip != $found_ip){
                 $client_ip = $found_ip;
                 break;
              }
           }
        }
     } else { $client_ip = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( ( !empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : "unknown" ); }
     return $client_ip;
  }
}
?>

Ahora para llamar la función es simple desde el controllador agregas la siguiente línea:

$model->ip = Funcion::ObtenerIP();

Y estaríamos listo.

 

Saludos! 😀


1 Comment

Health & beauty · 16 Marzo, 2018 at 9:06 pm

Having read this I believed it was rather informative.
I appreciate you spending some time and energy to put this
article together. I once again find myself
spending way too much time both reading and leaving comments.
But so what, it was still worth it!

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *

Related Posts

Informática

Linux – Comprimir carpeta o archivos desde consola

Es muy fácil y útil comprimir archivos y sobre todo carpetas enteras desde consola. Es útil a la hora de realizar backups o copias de seguridad de directorios, ya que permite comprimir un directorio entero Read more…

Informática

Ver Imagen ocultando la url con PHP

El día de hoy necesitaba cargar una imagen pero que no se vea su ubicación real, leyendo y leyendo info obviamente de PHP me encontré con la funcion chunk_split() el cual se relaciona con base64_encode, Read more…

Informática

Listar los archivos de una carpeta en PHP

Con el script que muestro a continuación se podrá ver el contenido de una carpeta, todos sus archivos y carpetas que tenga dentro. Lo que se hace es revisar la carpeta actual, recorrer a través de un while el contenido y verificados si este es un archivo o carpeta, si es carpeta lo dejamos entre corchetes [], así hacemos la diferencia con los archivos, que se encuentran en la carpeta.