Función Obtener IP en YII Framework Components

Función Obtener IP en YII Framework Components

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! 😀

Ver Imagen ocultando la url con PHP

Ver Imagen ocultando la url con PHP

lluvia

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, el cual nos permite codificar en base64 la imagen y así mostrarla como si hicieras un simple <img src=”imagen.jpg”>

El código para esta función es:

// Seleccionamos la imagen que queremos codificar, también puedes poner la dirección donde se encuentra la imagen
$imagen = file_get_contents("mi_imagen.jpg");

//Codificamos la imagen en base64
$imagen_base64 = chunk_split(base64_encode($imagen)); 

// Para mostrar la imagen codificada sería lo siguiente
echo '<img src="data:image/jpg;base64,'.$imagen_base64.'" />';

voilà!

Con eso tenemos la imagen, en codificación base64 sin necesidad de mostrar la url real de dicha imagen.

 

Saludos! 😀

Ver Imagen ocultando la url con PHP

Listar los archivos de una carpeta en PHP

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.

Este es script es bastante básico y simple pero nos ayuda a como verificar y obtener el contenido de una carpeta en PHP asi de como recorrerlo.

<?php
$carpeta = opendir("."); // Ruta actual
while ($archivo = readdir($carpeta)) // Leemos la carpeta obteniendo uno a uno los archivos existentes
{
    if (is_dir($archivo)) // Aquí vemos si es o no una carpeta
    {
        echo "[".$archivo . "]<br />"; // Si es una carpeta lo dejamos entre corchetes
    else
    {
        echo $archivo . "<br />";
    }
}
?>

Este script obviamente se puede mejorar agregando una tabla o iconos etc.   Espero en algún momento les sirva.

Saludos 😀

Ver Imagen ocultando la url con PHP

Calcular días entre dos fechas con PHP

PHP

El siguiente código bastante sencillo por lo que se ve, nos sirve para calcular los días entre dos fechas utilizando la función de PHP strtotime:

function DiasTranscurridos($fec_inicio,$fec_termino)
{
       // Las fechas enviadas son formato "2015-12-01"
  $cantidad	= (strtotime($fec_inicio)-strtotime($fec_termino))/86400;
       // Redondeamos el dato hacia abajo
        $cantidad = floor($dias);		
  return $dias;
}

// Ejemplo de uso:
echo DiasTranscurridos('2015-12-01','2015-12-10');
// Resultado : 9

Se ve claramente que para que el código funcione simplemente se debe enviar las dos fechas o parámetros, indicando la fecha inicial y la fecha de término donde queremos calcular la cantidad de días.

Saludos!

😀

Ver Imagen ocultando la url con PHP

Eliminar comentarios html

PHP

Una función que no tiene complejidad y nos sirve para quitar facilmente los comentarios que se utilizan en html por ejemplo <!– vusano –>, solo tenemos que usar la expresión regular preg_replace(), y estaríamos.

function eliminar_comentarios_html($html="") {
    $comentarios = preg_replace('/<!--(.|\s)*?-->/', '', $html);
    return $comentarios;
}

Algún momento nos servirá.

 

Saludos! 😀

Ver Imagen ocultando la url con PHP

Enviar Correos con PHP

PHP

PHP nos permite enviar correos de manera bastante sencilla usando la función mail(), es bastante sencillo y nos da la posibilidad de enviar correo en formato HTML definiendo la cabecera previamente. Con esta función con solo los 3 parametros (destino,asunto,mensaje) ya podemos enviar correos solo que saldrá como remitente nobody@tuserviciohost.com; El formato de la función mail() es la siguiente:

<?php mail ($destino, $asunto, $mensaje, $cabeceras); ?>

Un ejemplo de como usar la función mail, sería:

<?php
$destino = "destino @ dominio.com";
$asunto ='=?UTF-8?B?'.base64_encode("Hola Mundo!").'?=';
$cabeceras ="From: Contacto Mi Dominio <contacto @ midominio.cl> \r\n". 
          "Reply-To: contacto @ midominio.cl \r\n". 
          "MIME-Version: 1.0\r\n".
          "Content-Type: text/plain; charset=UTF-8";

$mensaje = "Saludos desde Marte \r\n a todo el mundo";

mail($destino, $asunto, $mensaje, $cabeceras);
?>

 

Destino:

Es el correo de destino o a quien se le enviará el mensaje, este campo es obligatorio.  Y se pueden poner de las siguientes formas

  • nombre@correo.cl
  • nombre@correo.cl, nombre2@correo.cl
  • Nombre <nombre@correo.cl>
  • Nombre <nombre@correo.cl>, Nombre 2 <nombre2@correo.cl>

Asunto:
El asunto del correo. Lo ideal es siempre tener un asunto en cada mensaje a enviar pero este campo no es obligatorio y el correo puede ser enviado sin asunto.  Cuando el asunto es muy extenso este terminará con  “…” .

Cabeceras:

  • FROM Información del correo electrónico emisor.
  • REPLY-TO Es la dirección hacía donde respondera el receptor cuando éste haga click en responder mensaje.
  • MIME (Multipurpose Internet Mail Extensions, Extensiones de Correo Internet Multipropósito), son una serie de convenciones o especificaciones dirigidas a que se puedan intercambiar a través de Internet todo tipo de archivos (texto, audio, vídeo, etc.) de forma transparente para el usuario. Una parte importante del MIME está dedicada a mejorar las posibilidades de transferencia de texto en distintos idiomas y alfabetos. (Wikipedia)
  • CONTENT-TYPE Se utiliza para poder enviar correo con código HTML.

Cuerpo del Mensaje o Contenido
En el contenido del correo.  Este mensaje puede ser texto plano o ser código html o ambos.  Este tipo lo definimos en la cabecera para su visualización por parte del receptor.  Si el mensaje es solo texto plano hay que utilizar los siguientes tag, ya que se verá todo en una sola línea.

  • \n = salto de línea
  • \t = sangría
  • \r = retorno de carro

Un ejemplo de un correo con código HTML.

<?php
$destino  = 'nombre @ correo.cl , nombre @ correo.cl'; 
// ó puede ser también
$destino = 'nombre @ correo.cl' . ',' . 'nombre2 @ correo.cl';
// Asunto
$asunto = 'Hola Mundo!';
 
// Mensaje
$mensaje = '
<html>
<head>
  <title>Hola Mundo!</title>
</head>
<body>
  <p>Saludos desde Marte</p>
  <p>a todo el mundo!!</p>
</body>
</html>
';
 
// Cabecera que especifica que es un HMTL
$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 
// Cabeceras adicionales
$cabeceras .= 'From: Emisor <emisor @ correo.cl>' . "\r\n";
$cabeceras .= "Reply-To: contacto @ correo.cl \r\n";

// enviando correo! 
mail($destino, $asunto, $mensaje, $cabeceras);
?>

 

Es así de sencillo como podemos enviar correos a través de PHP con la función mail(), en algunos hosting esta configurado para no abusar del envío de correo.

 

Saludos!! 😀

 

VSO.