jueves, 27 de marzo de 2014

HTML crear un link a la página principal, enlace a la home

Buenas a todos!
Para crear un link a la Home o a la página principal sólo hay que indicar la dirección como "/", esto indica al navegador que el enlace va al dominio principal:

<a href="/">Home</a>

Y ya está!

PHP: Problema session_start()

Buenas a todos!
Hay varias razones por las que session_start() puede generar problemas, la más común es debido a la codificación de carácteres del archivo .php en cuestión, si trabajamos con UTF-8, hay que asegurarse de que sea una codificación UTF-8 sin BOM, ya que de lo contrario se añaden unos carácteres antes de la declaración de session_start() y eso genera un error.

Los errores que suele indicarnos el servidor son:
Warning: Cannot modify header information - headers already sent by ...
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent ...

Para ver qué codificación está usando nuestro archivo php, podemos emplear el Notepad++.
En la pestaña Codificación podemos cambiar la codificación de nuestro archivo a UTF-8 sin BOM.

Esto debería solucionar vuestro problema en caso de que fuera un tema de codificación.

Tened en cuenta de que session_start() debe ser la primera línea que escriba en el fichero php, ya que escribe los headers, no podéis poner ninguna instrucción de tipo echo antes que session_start(), eso también puede generar este tipo de errores.

Un saludo a todos!

miércoles, 19 de marzo de 2014

PHP: Borrar una variable de la sesión

Buenas a todos!
Borrar variables de la sesión en PHP puede ser algo muy importante, sobretodo en portales donde se deben reestablecer los valores iniciales del portal, o bien durante las etapas de desarrollo en las que debemos hacer pruebas constantes.

Por ejemplo, supongamos que tenemos una tienda virtual y hemos ido acumulando productos en una variable de sesión llamada 'cart', y una vez el cliente realiza el pago final debemos eliminar esta variable para que pueda volver a comprar. Evitando que se acumulen los nuevos artículos con los productos del pedido anterior.

unset($_SESSION['cart']);

Así de simple, unset nos permite eliminar variables específicas, en este caso le indicamos la variable de sesión 'cart'.

Ahora si comprobamos si está la variable en sesión con isset(), veremos que el resultado es false.

isset($_SESSION['cart']) dará como resultado false.

Un saludo a todos!

Comprobar si una variable existe en JavaScript

Comprobar si una variable existe o está definida en JavaScript puede es muy simple:

if(typeof variable == 'undefined'){
   //La variable no ha sido definida
}else{
   //La variable existe
}


Es importante diferenciar entre declaración de la variable y definición. La variable puede estar declarada pero no definida, lo que significa que no se le ha asignado ningún valor.

var variable;

if(typeof variable == 'undefined'){
   //La variable no ha sido definida
}else{
   //La variable existe
}


Esto indicará que la variable es undefined.
Así que realmente lo que comprobamos es si la variable está definida, ya que la variable puede existir pero no tener ningún valor asignado, en cuyo caso está no definida.

Un saludo a todos!

miércoles, 12 de febrero de 2014

Acceder a las propiedades de una función desde una función interna

Buenas a todos!

this se sobreescribe siempre que ejecutamos una nueva función en javascript.
Por esta razón, cuando queremos acceder desde una función interna a las propiedades de su parent (función padre), no podemos hacerlo mediante la palabra clave this.
Se puede acceder a sus propiedades, creando una variable en la función padre que tenga una copia de la instancia this. Así conseguimos ampliar el scope de this para que sea accesible desde la función interna.

function Parent(){
var self = this;
this.nombre = "parent";
var funcion_interna = function(){
this.nombre = "child";
alert(self.nombre + " " + this.nombre);
};
funcion_interna();
}

var p = new Parent();


La salida de esta función es: "parent child".

Este tipo de relaciones pueden ser útiles, cuando creamos funciones ajax o event handlers que deben trabajar con propiedades de instancia.

Un saludete para todos!

miércoles, 8 de enero de 2014

Error en ADB, el device está conectado pero pone offline

Buenas a todos,
El problema es simple, tenéis conectado el móvil al pc y cuando ejecutáis "adb devices", en la lista de dispositivos aparece lo siguiente:

List of devices attached
304D45C73C30202F offline

Al menos en mi caso, el problema radicaba en el cable usb de conexión, únicamente me servía para cargar el móvil. Lo cambié por otro, volví a ejecutar el comando "adb devices" y se conectó sin problemas.

List of devices attached
304D45C73C30202F device

Un saludo a todos!!

sábado, 2 de noviembre de 2013

Magic quotes en PHP

Buenas a todos!!
Os voy a hablar sobre Magic quotes, de hecho si habéis llegado hasta aquí, con toda probabilidad lo que queréis es desactivarlas!! (y casi seguro ya habéis perdido algún tornillo por el camino)

Magic quotes es el mecanismo automático por el que PHP transforma cadenas que contengan comillas en cadenas donde las comillas están escapadas con barras, os pongo en situación:

El cliente envía por ejemplo una petición al servidor con una variable llamada json y transferida mediante post:

json={"id":"1","name":"Magic Quotes"}

En el servidor recogéis este json de la siguiente forma:

$obj = json_decode($_POST["json"]);

Y accedéis a los valores así:

echo $obj->{'id'};
echo $obj->{'nombre'};

Esto es perfecto, porqué en local con seguramente no tenéis magic quotes activado... Ahora bien!! Muchos servidores php de producción por cuestiones de seguridad tienen activada esta opción, y es cuando vuestros servicios json dejan de funcionar, y no sabéis por qué razón en concreto.

Hay varias formas de desactivar Magic quotes, mediante el .htaccess o mediante el php.ini. El problema es que no siempre tendréis acceso a estos ficheros y realmente por seguridad es mejor que no desactivéis esta opción. 
Pero php proporciona una función muy simple para poder regenerar el string al que se han añadido los carácteres de escape para las comillas, stripslashes(str):

$obj = json_decode(stripslashes($_POST["json"]));

Haciendo esto conseguimos obtener correctamente el json, no se genera ningún error, y magic quotes sigue activado.

Espero que os sirva de ayuda, si tenéis cualquier duda mandad comentarios!

Un saludete a todos!