27
Jan
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;
07
Oct
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.
03
Oct
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 :) .
30
Sep
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
06
Sep
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 :) .
06
Sep
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 ";
04
Sep
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;
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.
18
Aug
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

18
Aug
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: