Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Dectectar si nos visitan desde el iPhone

27 Jan

Escrito por hace 1 año y 7 meses | Sin Comentarios

Hace un par de meses atrás hablamos sobre como detectar navegadores web mediante php, donde hacíamos uso de la variable súper global $_SERVER['HTTP_USER_AGENT'] para poder extraer el nombre clave del navegador.

Basados en ese mismo script podemos complementar para poder detectar si no visitan desde el iPhone

// Simple browser detection
$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iPhone =false;

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false) {
	$is_lynx = true;
}elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false ) {
	$is_iPhone = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'chrome') !== false ) {
	$is_chrome = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') !== false ) {
	$is_safari = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false) {
	$is_gecko = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false) {
	$is_winIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false) {
	$is_macIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false) {
	$is_opera = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false) {
	$is_NS4 = true;
}

$is_IE = ( $is_macIE || $is_winIE );

Y con solo un If simple determinaríamos si el usuario que nos visita lo hace por un iPhone

if ($is_iPhone):

// Nos visitas por medio del iPhone

endif;
if ($is_iE):

// Nos visitas por medio de IExplore

endif;

Y para los que solo deseen la validación del iPhone separo el código correspondiente.

$is_iPhone = false;

if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false ):
	$is_iPhone = true;
endif;

Categorizado :Desarrollo Web

Etiquetado :php,iPhone,Tricks,Trucos,Navegadores

Obtener la fecha de la ultima modificación de archivos php

07 Oct

Escrito por hace 1 año y 10 meses | 1 Comentario

Para obtener la fecha de la última modificación en php siempre se recurría a trabajar con la db para así tener un control de revisiones y saber cuando fue la última vez que se edito un artículo.

Pero como sacar la última fecha de modificación de los archivos, especialmente si la web es modular el método que usábamos con JavaScript ya no nos sirve, por el simple echo que php se procesa en el servidor y muestra un html en el cliente.

Para realizar esta funcion en php es sencillo trabajando con la función getlastmod y filemtime, vemos el siguiente ejemplo

//archivo funciones.php
       function Ultima_Modificacion( $archivos = '')
	{

		if (empty($archivos)) return false;

		// Extraemos la fecha de la ultima modificacion del archivo actual
		$timestamps = array(@getlastmod());

		/*
			ejemplo:
			$archivos = array("/path/config.php",
                				"/path/kernel.php",
                				"/path/functions.php",
                				"/path/index.php"
						);
		*/

			foreach ($archivos as $archivo):

				$timestamps[] = @filemtime($archivo);

			endforeach;

		// Sacamos la Ultima modificación de todas las fechas
		$timestamp = max($timestamps);

		$fecha = gmdate("D, d M Y H:i:s ", $timestamp) . "GMT";

		 return "Ultima Modificación: " . $fecha;

	}//end func

	$archivos = array("carlos.php","calinsoft.php" );

	//ejemplo 1
	echo Ultima_Modificacion($archivos);

       //ejemplo 2
	echo Ultima_Modificacion();

Lo que hace la función en el ejemplo 1 es determinar la fecha de modificación más reciente entre los archivos funciones.php, carlos.php y calinsoft.php.

En el ejemplo 2 solamente mostrar la fecha de modificación del archivo donde se ejecuta es decir funciones.php .

De esta forma obtendremos la fecha ya sea una web modular o no siempre y cuando mencionemos todos los archivos.

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos

Detectando Navegadores web mediante php

03 Oct

Escrito por hace 1 año y 10 meses | 7 Comentarios

La gran mayoría de sistemas de estadísticas nos brindan información relacionada al tipo de navegador que visita nuestra página, con la que tenemos una visión más grande de como optimizar nuestro sitio para los distintos navegadores.

Existen varias formas de poder detectar el navegador del cliente para fines estadísticos o para darle una mejor experiencia al usuario, en Wordpress se trabaja de una forma sencilla la detección de navegadores Web utilizando la variable global $_SERVER['HTTP_USER_AGENT'].

// Simple browser detection
$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = false;

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false) {
	$is_lynx = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'chrome') !== false ) {
	$is_chrome = true;
} elseif ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') !== false ) {
	$is_safari = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') !== false) {
	$is_gecko = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Win') !== false) {
	$is_winIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false) {
	$is_macIE = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') !== false) {
	$is_opera = true;
} elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Nav') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla/4.') !== false) {
	$is_NS4 = true;
}

$is_IE = ( $is_macIE || $is_winIE );

Entonces la forma de usarlo es muy fácil


if ($is_IE):
// se ejecuta el codigo que esta designado para Internet Explorer
endif;

if ($is_chrome):
// se ejecuta el codigo que esta designado para Chrome (google)
endif;

Esto no solo nos puede servir para estadísticas globales, Wordpress lo utiliza para detectar el navegador de los usuarios que comentan en el blog.

También podemos utilizarlo para asignar mensajes o acciones para un navegador en especifico :) .

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos,Navegadores

Generar contraseñas aleatorias con php

30 Sep

Escrito por hace 1 año y 11 meses | 1 Comentario

Hoy en día la funcion md5 es la más usada ya que el hash devuelto consiste en una cadena de 32 números en formato hexadecimal, este método es irreversible por lo cual si estamos desarrollando una aplicación web la cual integre un sistema de usuarios tendríamos añadir la opción de que un usuario pueda resetear su contraseña si lo olvida alguna vez.

Este proceso es sencillo, existen varias maneras la más común es pedirle al usuario su email de registro mediante un formulario el cual verificara si existe dicho email en la db luego se enviara un mensaje de verificación el cual si lo acepta automáticamente se genera una contraseña aleatoria y se envía al email correspondiente.

Hay innumerables formas de generar contraseñas aleatorias, yo he tratado de construir una función que me satisface dicho requerimiento.

       function random_pwd($length=5,$mode='alfa'){

           switch ($mode):
                case "alfa":

                    $source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

                break;
                case "int":

                   $source = '1234567890';

                break;
                case "extra":

                    $source = '|@#~$%()=^*+[]{}-_';

                break;
                case "all":
                   $source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890|@#~$%()=^*+[]{}-_';

                break;
                default:

                    $source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

                break;

           endswitch;

            if($length>0){

                $rstr = "";

                $source = str_split($source,1);

               for($i=1; $i< =$length; $i++){

                   mt_srand((double)microtime() * 1000000);

                   $num = mt_rand(1,count($source));

                   $rstr .= $source[$num-1];

               }

           }

       return $rstr;

   }

   echo random_pwd(10,'all');
 //salida aleatoria : RJ}JwFdC%C

Si observan esta funcion nos da la posibilidad de generar una contraseña dependiendo de cuantos caracteres necesitamos o vemos que sea necesario y la opción de personalizar el tipo de caracteres que tendrá nuestra contraseña mediante los siguientes parámetros.

  • "alfa" que son el alfabeto completo
  • "int" que son caracteres enteros
  • "extra" que son caracteres para una contraseña más compleja
  • "all" la union de todos los caracteres

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos,Password,Random

Convertir Array de datos en Objeto y viceversa (PHP)

06 Sep

Escrito por hace 1 año y 11 meses | 2 Comentarios

En el foro de WebLiveHelp trataban un problema de conversión de array a objeto y viceversa no se si es el mejor método de conversión pero creo una alternativa seria esta..

// Funcion de Objeto a Array
function object_to_array($object)
{
  if(is_array($object) || is_object($object))
  {
    $array = array();
    foreach($object as $key => $value)
    {
      $array[$key] = object_to_array($value);
    }
    return $array;
  }
  return $object;
}

// Funcion de Array a Objeto
function array_to_object($array = array())
{
	return (object) $array;
}

Metodo de funcionamiento
- Trabajando con array_to_object

//creamos un array de dominios
$array_urls = array("a"=>"calinsoft.com","b"=>"gacetaucayalina.com","c"=>"jacknoticias.com");

//Se vuelca la informacion para darnos cuenta de la estructura.
echo "<pre>";
	var_dump($array_urls);
echo "</pre>";

/* nos dara
array(3) {
  ["a"]=>
  string(13) "calinsoft.com"
  ["b"]=>
  string(19) "gacetaucayalina.com"
  ["c"]=>
  string(16) "jacknoticias.com"
}
*/

//Ahora ese array lo convertimos en objeto mediante la funcion "array_to_object"
$object_urls =	array_to_object($array_urls);

//Volcamos la informacion de la conversion
echo "<pre>";
	var_dump($object_urls);
echo "</pre>";

/* nos dara
object(stdClass)#1 (3) {
  ["a"]=>
  string(13) "calinsoft.com"
  ["b"]=>
  string(19) "gacetaucayalina.com"
  ["c"]=>
  string(16) "jacknoticias.com"
}
*/

//Y con el objeto ya creado para mostrar el valor "a"
echo $object_urls->a;
/*nos dara
    "calinsoft.com"
*/

- Trabajando con object_to_array


//Ahora creamos una clase sencilla

class object_urls{

	var $a ;
	var $b ;
	var $c ;

	//php5
	function __construct(){
		$this->a ="calinsoft.con";
		$this->b ="gacetaucayalina.com";
		$this->c ="jacknoticias.com";

	}

	//php4
	function object_urls(){
		$this->__construct();
	}

}

//creamos un instancia de la clase
$object_urls2 = new object_urls();

//Se vuelca la informacion del objeto para darnos cuenta de su estructura.
echo "<pre>";
	var_dump($object_urls2);
echo "</pre>";
/* nos dara
object(object_urls)#2 (3) {
  ["a"]=>
  string(13) "calinsoft.con"
  ["b"]=>
  string(19) "gacetaucayalina.com"
  ["c"]=>
  string(16) "jacknoticias.com"
}

*/

//Ahora convertimos la clase en array mediante la funcion "object_to_array"
$array_urls2 = object_to_array($object_urls2) ;

//Volcamos la informacion de la conversion
echo "<pre>";
	var_dump($array_urls2);
echo "</pre>";
/*nos dara
array(3) {
  ["a"]=>
  string(13) "calinsoft.con"
  ["b"]=>
  string(19) "gacetaucayalina.com"
  ["c"]=>
  string(16) "jacknoticias.com"
}
*/

//Para trabajas con el array solo
echo $array_urls2["a"];

/*nos dara
    "calinsoft.com"
*/

Espero que les aya servido :) .

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos,Array,Object

Detección Simple de Servidor Web mediante PHP

06 Sep

Escrito por hace 1 año y 11 meses | 1 Comentario

Esta es una detección simple mediante las variables globales definidas por el servidor Web para este caso usaremos $_SERVER.

//para Apache
$es_apache = ((strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) || (strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false)) ? true : false;

//para IIS (Internet Information Server)
$es_IIS = (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false) ? true : false;

//Metodo de uso
if ($es_apache) echo " Estamos Bajo Apache ";

if ($es_IIS) echo " Estamos IIS ";

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos,Servidor

Validar email con PHP y expresiones regulares

04 Sep

Escrito por hace 1 año y 11 meses | Sin Comentarios

Esta función nos ayuda a comprobar si una cadena o campo específico en un formulario es un email o no.

function es_email($email) {
	$regex = "/^([a-z0-9+_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i";
	//comprovamos si la cadena tiene el simbolo de @ y el punto
	if (strpos($email, '@') !== false && strpos($email, '.') !== false) {
	//comparamos con la expresion regular la cadena
		if (preg_match($regex, $email)) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

//metodo de uso

if (es_email("miemail@dominio.com")):
	echo "es valido";
else:
	echo "invalido";
endif;

Categorizado :Desarrollo Web

Etiquetado :php,Tricks,Trucos,Email

Leo en CrazyLeaf Design, que han publicado 20 tips para acelerar nuestro WordPresss, desde usar un sistema de cache hasta comprimir los archivos JavaScript, CSS y mucho mas un artículo que cualquier blogger que use Wordpress no se lo puede perder.

Video: Como capturar la pantalla del iPhone 3G

18 Aug

Escrito por hace 2 años y 2 semanas | Sin Comentarios

Muchos hemos visto capturas de la pantalla del iPhone, ¿como lo hacen? de la siguiente manera :)

Tu Necesitas Flash Player 8+ y tener Activo Javascript para poder ver el video.

Explicación Breve

Para obtener una captura, primero presionamos el botón Home/Inicio seguidamente presionamos el botón de Apagado/Sleep/Wake en ese momento verán un "Flash" que indicara que la pantalla ha sido capturada la cual se guardara en Photos, después podrás mandar esa captura por email, subirla a Mobile Me o transferirla a iPhoto.

Este truco también funciona en el iPod touch

Categorizado :Gadgets

Etiquetado :iPhone,Tricks,Trucos

Ocultando un archivo en Windows XP

18 Aug

Escrito por hace 2 años y 2 semanas | Sin Comentarios

Este es un truco bien sencillo, mayormente lo eh utilizado para ocultar archivos en la usb.

Procedimientos

Ubique el archivo que desea ocultar.

Ingrese al Símbolo de sistema.

Digite en el Promt del Símbolo de sistema attrib +s +h (y la dirección de su archivo) y enter

El archivo ha desaparecido

Si deseas invertir el procedimiento es fácil digite en el Promt del Símbolo de sistema attrib -s -h (y la dirección de su archivo) , enter y la imagen volverá aparecer.

Bueno este método no es infalible ya que solo funciona si en propiedades de carpeta esta marcado "Ocultar Archivos protegidos del Sistema (recomendado)". Algo que viene por defecto y solo personas con conocimientos medio o avanzados desactivan.

Referencias:

Categorizado :Informatica

Etiquetado :Tricks,Trucos,Windows

« 1 2