PHP Fatal error: Cannot use isset(): Solución
PHP Fatal error: Cannot use isset(). En algunos casos cuando programamos en PHP y justamente manejamos condicionales IF ELSE se suele presentar algunos errores como detalla el título de este artículo.
A continuación, veremos de una condicional en PHP en el cual se está manejando sesiones y se presentó un fatal error. Veamos el ejemplo.
if (isset($_SESSION['id']))
{
echo "you are logged in<br>";
if (isset($_SESSION['active']==0))
echo "your account is not activated<br>";
else
echo "you are logged in and activated<br>";
}
if (!isset($_SESSION['id']))
{
echo "you are not logged in<br>";
}
Al ejecutar el siguiente script mostrara un FATAL ERROR
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
in F:\XAMP8\htdocs\BAUL\fecha_fun.php on line 14
El inconveniente se da en la línea 14 tal como indica el error en PHP y la línea 14 muestra el siguiente código:
if (isset($_SESSION['active']==0))
PHP Fatal error: Cannot use isset(): Solución
La solución a este error es usar las funciones intval
y empty
al declarar la condicional IF ELSE.
Primera Solución: Usando intval
La línea anterior contiene un error porque el argumento es una expresión y la solución es cambiar la función ISSET por intval. Veamos como quedaría la condicional correcta.
if (intval($_SESSION['active']) == 0)
Al cambiar a intval analiza a entero y lo compara con 0, esto es seguro, corto y no dará errores.
EL código completo sería el siguiente
if (isset($_SESSION['id']))
{
echo "you are logged in<br>";
if (intval($_SESSION['id']))
echo "your account is not activated<br>";
else
echo "you are logged in and activated<br>";
}
if (!isset($_SESSION['id']))
{
echo "you are not logged in<br>";
}
Segunda Solución: Usando empty
Otra forma de dar solución a este error es usando la función EMPTY del PHP, ejemplo.
if (!empty($_SESSION['id']))
Aquí les dejare la solución completa usando EMPTY
if (isset($_SESSION['id']))
{
echo "you are logged in<br>";
if (!empty($_SESSION['id']))
echo "your account is not activated<br>";
else
echo "you are logged in and activated<br>";
}
if (!isset($_SESSION['id']))
{
echo "you are not logged in<br>";
}
Al usar la función EMPTY de PHP lo que hace es validar si la variable esta vacía o no y es más precisa que devuelva verdadero o falso evitando el error mencionado.
Resumen y conclusión
Existe muchas formas para dar solución a este error, pero en este articulo nos hemos enfocado a 2 soluciones específicas: una usando la función intval
y otra la función empty.
En el presente articulo hemos dado solución con un ejemplo de sesiones en PHP, pero puede ser aplicado a cualquier variable o métodos que hay en PHP, por ejemplo, de valores extraídos de MySQL o método POST de un formulario.
Espero que estos dos ejemplos les ayuden a corregir errores en sus proyectos web.