¿Cómo cerrar la sesión sin confirmación? ¿Realmente quieres cerrar la sesión?
4 respuestas
- votos
-
- 2012-10-06
Esto sucedeporque lefaltaelnoncenecesarioen la URL,que seestá comprobandoen
wp-login.php
case 'logout' : check_admin_referer('log-out'); ...
Utilice
wp_logout_url
para recuperar la URL,incluidoelnonce.Si desea redirigir a una URLpersonalizada,simplementepáselo como argumento.<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Tambiénpuede utilizar
wp_loginout
quegeneraelenlacepara usted,incluida latraducción:echo wp_loginout('/redirect/url/goes/here')
This happens because you are missing the neccessary nonce in the URL, which is being checked in
wp-login.php
case 'logout' : check_admin_referer('log-out'); ...
Use
wp_logout_url
in order to retreive the URL including the nonce. If you want to redirect to a custom URL, simply pass it as an argument.<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
You could also use
wp_loginout
which generates the link for you including translation:echo wp_loginout('/redirect/url/goes/here')
-
echo wp_loginout ('/redirect/url/went/here')estáfuncionandobien ..echo wp_loginout('/redirect/url/goes/here') is working fine..
- 1
- 2015-10-30
- Mayur Devmurari
-
Estoy usando `wp_logout_url (get_permalink ())` y lapágina de confirmaciónno se omite.Elnonce segenera comoparte de la URL,perotodavíame envían a lapágina de confirmaciónI'm using `wp_logout_url( get_permalink())` and the confirmation page is not bypassed. The nonce is generated as part of the URL but I am still sent to the confirmation page
- 1
- 2018-12-17
- Ralphonz
-
Elmismoproblema aquí :(Same issue here :(
- 0
- 2019-04-14
- Jarmerson
-
Gracias.mefuncionóeseecho wp_logout_url ();thanks. worked me that echo wp_logout_url();
- 0
- 2020-05-26
- Erhan Demirci
-
- 2016-04-04
Sinopuede usar lafunción
wp_logout_url()
,puede desactivaresta validación usandoeste código:add_action('check_admin_referer', 'logout_without_confirm', 10, 2); function logout_without_confirm($action, $result) { /** * Allow logout without confirmation */ if ($action == "log-out" && !isset($_GET['_wpnonce'])) { $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect'; $location = str_replace('&', '&', wp_logout_url($redirect_to)); header("Location: $location"); die; } }
Reemplace
'url-you-want-to-redirect'
por la URL que desea redirigir después de cerrar la sesión.Agrégueloen su
functions.php
If you can't use
wp_logout_url()
function, You can turn off this validation using this code:add_action('check_admin_referer', 'logout_without_confirm', 10, 2); function logout_without_confirm($action, $result) { /** * Allow logout without confirmation */ if ($action == "log-out" && !isset($_GET['_wpnonce'])) { $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect'; $location = str_replace('&', '&', wp_logout_url($redirect_to)); header("Location: $location"); die; } }
Replace
'url-you-want-to-redirect'
with the URL you want to redirect after logout.Add it in your
functions.php
-
Estofuncionapara cerrar sesión sin validación,perono redirige a la URL que quiero.This works for logging out without validation, but it doesn't redirect to the url I want.
- 0
- 2017-06-29
- Phu Nguyen
-
@PhuNguyen Solonecesita agregar la URL de redireccionamiento a la solicitud de redireccionamientoen ese código donde hay comillas '',después de los dospuntos.@PhuNguyen You just need to add the redirect URL to the redirect request in that code where there is ' ' quotes, after the colon.
- 0
- 2017-12-17
- NJENGAH
-
¿Existenimplicaciones de seguridadparaeliminaresta validación?are there any security implications for removing this validation?
- 0
- 2018-03-20
- rok
-
@ user1264304 Creo que JSmalicioso cargado de algunamaneraen elnavegadorpodría redirigir a lapágina deinicio de sesión,perotodo lo que va a haceres cerrar la sesión del usuario.El código verdaderamentemaliciosoprobablementebuscaría reemplazar la URL antes de unnonce válido.El usuariopuedenavegar a otro sitio que luegotiene unenlace a lapágina de cierre de sesión del sitio actual,asumiendo queel otro sitio sabe queel usuariotiene una relación.Una vezmás,no hay otra consecuenciamás que cerrar la sesión del usuario.Nunca he vistoesto.Entonces,para responder a supregunta,no creo que haya unaimplicación de seguridadparaeliminar la validación.@user1264304 I believe malicious JS somehow loaded into the browser could do a redirect to the login page, but all it's going to do is logout the user. Truly malicious code would probably seek to replace the URL before a valid nonce. The user could navigate to another site which then has a link the current site's logout page - assuming the other site is aware that the user has a relationship. Again, no consequence other than logging out the user. I've never seen this. So to answer your question, I do Not think there is a security implication for removing the validation.
- 0
- 2018-05-04
- TonyG
-
Err,demasiados redireccionamientos ...Err, Too Many Redirects...
- 0
- 2019-02-05
- Solomon Closson
-
Excelente soluciónparamí,especialmenteporquenonecesitaphp adicionalen mipágina de cierre de sesión.Simplemente usoesteenlace: wp-login.php? Action=logout Y como redirección,uso home_url ()para quefuncioneen cualquier sitio.Excellent solution for me especially because it needs no extra php on my logout page. I simply use this link:wp-login.php?action=logout And as redirect, I use home_url() so it works on any site.
- 0
- 2020-08-28
- Ralf
-
- 2019-03-04
Si crea unenlacepersonalizadoen sumenú,establezca laetiquetaen
“Logout”
yestablezca la URLenhttp://yourdomain.com/wp-login.php?action=logout
. Luego agregueestafunción a su archivofunctions.php
:function change_menu($items){ foreach($items as $item){ if( $item->title == "Logout"){ $item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ); } } return $items; } add_filter('wp_nav_menu_objects', 'change_menu');
Si desea redirigir a lapágina deinicio de sesión después de cerrar la sesión,debe agregar la URL deinicio de sesión como:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
**intenté quenofuncionó. Realmente quiero cerrar sesiónen lapágina 4 y luego algo saliómal al hacer clicen elbotón
If you create a custom link in your menu, set the label to
“Logout”
, and set the URL tohttp://yourdomain.com/wp-login.php?action=logout
. Then add this function to yourfunctions.php
file:function change_menu($items){ foreach($items as $item){ if( $item->title == "Logout"){ $item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ); } } return $items; } add_filter('wp_nav_menu_objects', 'change_menu');
If you want to redirect to the login page after logout then you should append login URL as:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
** tried that did not work. Really want to log out page then 4 something went wrong when clicking the button.
-
- 2019-08-01
Estofuncionóparamí al agregar
/?customer-logout=true
alfinal.http://www.website.com/?customer-logout=true
This worked for me by adding
/?customer-logout=true
at the end.http://www.website.com/?customer-logout=true
Ahoramismo,cuando cierre la sesión através de:
me redirige a lapágina dondenecesito confirmarel cierre de sesión.
¿Cómoeliminar la confirmación y redirigir a lapágina deinicio después de cerrar la sesión?