¿Qué es un ataque CSRF?

Por simplificar mucho: un ataque CSRF (Cross-site request forgery) consiste en hacer una petición a un sitio donde estás logueado sin que te enteres. Imagina que tu aplicación tiene esta URL para borrar un producto a través de una petición POST: misitio.com/producto/123/borrar Por suerte esa URL solo funciona si estás logueado como usuario «admin». Así … Leer más

¿Cómo es mejor almacenar las sesiones de usuario en PHP? ¿Fichero, Base datos? ¿Redis?

Operadores en PHP

Esta es una pregunta que muchos nos hemos hecho muchas veces y da para un artículo entero. Pero aquí os dejo unas ideas rápidas: Si tu web tiene poco tráfico no importa demasiado. Apenas vas a notar diferencia así que no pierdas tiempo con esto al principio. Puedes dejar esta decisión para más adelante. Si … Leer más

¿Qué es mejor: array_filter o foreach?

Operadores en PHP

Imagina que tenemos una lista de elementos y queremos saber si alguno de ellos es un email válido. La lista podría ser algo así: Para solucionar el problema seguramente recurrirías a un foreach: Pero tenemos otra opción que muchos programadores no conocen (o no han usado nunca), se trata de la función array_filter. Usando esta … Leer más

Llamar a una función con una variable en PHP

Operadores en PHP

Si a una variable que contiene el nombre de una función le añadimos un paréntesis estaremos llamando a la función:

function hola()
{
    echo "Hola!\n";
}
 
$nombreFuncion = 'hola';
 
$nombreFuncion(); // Esto funciona
'hola'(); // ¡Y esto también!

Seguro que la primera forma ya la conocías ¿pero sabías que podías hacerlo con una cadena?


¿Sabes lo que es el reto de PHP?

He creado el PHP Journey, una plataforma para que recibas de forma gratuita un email cada día con una pequeña perla de sabiduría de PHP y una pregunta que deberás responder.

Cada día pones a prueba tus conocimientos y aprendes algo nuevo.

Apúntate aquí:

https://urlantools.urlanheat.com/newsletter/php-journey/subscribe


Un ejemplo para entender el operador !== (no idéntico) en PHP

El operador ‘!=’ confunde los ceros con false. En casos como este debemos usar ‘!==’:

function numero($valor)
{
    if (is_numeric($valor)) {
        return $valor;
    }
    return false;
}
 
$elNumero = "0";
 
var_dump(numero($elNumero));
 
if (numero($elNumero)!==false) {
    echo "Usando === nos dice que es un número.\n";
}
 
if (numero($elNumero)!=false) {
    echo "Usando == nos dice que es un número.\n";
}
  • Con $elNumero = 1; funciona correctamente.
  • Con $elNumero = 0; el operador ‘!=» da un resultado erróneo.

La razón es que ‘!=’ confunde el número 0 con false.