Portada » Lenguaje PHP » PHP Fatal error: Cannot use isset(): Solución

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.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

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

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad