26
Abr 10

Crear un pequeño plugin para barra de marcadores

Actualmente todos los navegadores (a excepción de Internet Explorer, como siempre) acepta añadir a la barra de marcadores funciones javascript que nos pueden facilitar la vida.

En esta ocasión traigo cómo hacer que se envíen datos a una página en función de un texto seleccionado en la página actual, así al pinchar en la barra de marcadoes haría lo que le dijéramos con ese texto.

Lo primero que hay que tener en cuenta es cómo se añade el javascript a la barra de marcadores. Siempre hay que empezar con

javascript:

Después hay que añadir lo que queremos que haga. Aquí teneis un ejemplo para comprobar el whois de un dominio en el caso de seleccionarlo:

javascript:location.href='http://www.who.is/' + encodeURIComponent(document.getSelection());

Si lo que queremos es comprobar el dominio donde estamos podemos emplear:

javascript:location.href='http://www.who.is/' + encodeURIComponent(document.location.href);

26
Abr 10

Como detectar la IP del usuario de la página con PHP

Nos es muy útil, en muchas ocasiones, almacenar la ip del visitante, por ejemplo cuando queremos controlar los mensajes de spam para bloquearles, almacenar la ip para un tracking de afiliados o para infinidad de cosas.
Con esta pequeña función podemos obtenerla saltando los proxies.

function user_ip() {
   if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
     $ip=$_SERVER['HTTP_CLIENT_IP'];
   } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
   } else {
     $ip=$_SERVER['REMOTE_ADDR'];
   }
   return( $ip );
}

26
Abr 10

Evitar inyeccion de código en formularios en php

Uno de los peligros de implementar formularios en nuestros proyectos, formularios que pueda rellenar el público, como comentarios o mensajes de correo, es que se presta fácilmente a la inyección de código en función de su labor. Por ejemplo, si tenemos un formulario para añadir un comentario y cuando lo mostramos lo ejecutamos directamente puede incluir código de javascript o php que robe información o estropee nuestro server.
El siguiente código nos permite limitar este peligro limpiando la variable post, añadiendo barras de literal cuando sea necesario.

$_POST = (get_magic_quotes_gpc() ? array_map('stripslashes', $_POST) : $_POST);

22
Abr 10

Redirección 301 genérica con www o sin www con htaccess

Hay muchas situaciones en las que tenemos que decidir si poner las “www” o quitarlas del dominio. En ocasiones va en gusto, en otras por no perder links, en otras por estética, en otras por SEO, pero casi siempre terminamos poniéndolas a mano dominio por dominio.
Aquí traigo una forma de dejarlo para cualquier dominio con las www o sin ellas.

Siempre con www:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

En el caso de no querer poner las www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]


11
Abr 10

Formularios estilo inline en HTML y javascript

En muchos formularios nos puede venid bien que tengan un formato inline al estilo del login de facebook, es decir, que el contenido del campo nos indique qué hay que introducir y cuando vayamos a ese campo eliminemos el contenido para que el usuario lo rellene. Con esto nos ahorraríamos poner “label” para cada campo.

<input type="text" name="mi_variable"
     onfocus="if( this.value == 'etiqueta' ) { this.value = ''; }"
     onblur="if( this.value == '' ) { this.value = 'etiqueta'; }"
     value="etiqueta" />

Siendo ‘etiqueta’ el nombre del contenido. En el caso de las contraseñas se podría hacer igual pero solamente veríamos asteriscos, así que habría que cambiar el type también. Como añadido podríamos cambiar el color según es onfocus u onblur a través de this.style.color.
Aquí va otro ejemplo:

<input type="text" name="Password"
     onfocus="
       if( this.value == 'Password' ) {
          this.value = ''; // Borramos el contenido para dejarlo limpio para el usuario
          this.style.color = '#000000'; // Lo ponemos en negro
          this.type = 'password'; // Lo convertimos en password para que muestre asteriscos
       }"
     onblur="
       if( this.value == '' ) {
          this.value = 'Password'; // Volvemos a ponerle el texto en caso de no haber añadido una password
          this.style.color = '#CCCCCC'; // Lo ponemos en gris
          this.type = 'text'; // Lo pasamos a texto si no ha introducido password
       }"
     value="Password" />