Lenguaje PHP

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.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba