Así que tengo esta página de PHP, con algunas cosas sin importancia al principio y una apertura de sesión:
<?php session_start(); ?> Quiero que aparezca el botón de desconexión solo si el usuario ya está conectado, lo que significa que $_SESSION['Pseudo'] está configurado. Si este es el caso, creo un botón y vinculo a ese botón una función para destruir la sesión. El problema es que cada vez que entro en esta página, la sesión se destruye, aunque esté en una condición.
Aquí está mi código:
<?php if (isset($_SESSION["pseudo"])) { echo '<p><button type="button" id="deco">Disconnect</button></p>'; } ?> <script> let btn = document.getElementById('deco'); if (btn) { btn.addEventListener('click', updateBtn); function updateBtn() { <?php session_destroy(); ?> window.location.href = "/" } } </script>Cualquier pista ?
No puedes combinar PHP dentro de Javascript así.
Cuando estás haciendo, no es parte de Javascript. Es código PHP y se ejecuta como parte del código PHP en el archivo.
Esto significa que no tiene nada que ver con el aspecto de javascript. su función updateBtn es efectiva, cuando se carga el código fuente de la página:
function updateBtn() { window.location.href = "/" }Lo que realmente quiere hacer es que cuando alguien haga clic en el botón, lo lleve a una página de cierre de sesión o una página con un parámetro de consulta de cierre de sesión.
p.ej.
<?php if (isset($_GET['action']) && $_GET['action'] === 'logout') { session_destroy(); echo 'You have successfully logged out!'; } if (isset($_SESSION["pseudo"])) { echo '<p><button type="button" id="deco">Disconnect</button></p>'; } ?> <script> let btn = document.getElementById('deco'); if (btn) { btn.addEventListener('click', updateBtn); function updateBtn() { window.location.href = "/?action=logout" } } </script>