Como fazer o logout sem confirmação 'Você realmente quer sair? "?
4 respostas
- votos
-
- 2012-10-06
Isso aconteceporque vocêestáperdendo o Nonce Neccararyno URL,queestá sendo verificadoem
wp-login.php
case 'logout' : check_admin_referer('log-out'); ...
Use
wp_logout_url
para recuperar o URL,incluindo ononce.Se você quiser redirecionarpara um URLpersonalizado,bastapassar como um argumento.<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Vocêtambémpode usar
wp_loginout
quegera o linkpara você,incluindotradução: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 ('/redirecionamento/url/gols/aqui')estáfuncionandobem ..echo wp_loginout('/redirect/url/goes/here') is working fine..
- 1
- 2015-10-30
- Mayur Devmurari
-
Estou usando `wp_logout_url (get_permalink ())`e apágina de confirmaçãonão é contornada.Ononce égerado comoparte do URL,mas aindaestouenviadopara apágina de confirmaçãoI'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
-
Mesma questão aqui :(Same issue here :(
- 0
- 2019-04-14
- Jarmerson
-
obrigado.trabalhou-me queeco wp_logout_url ();thanks. worked me that echo wp_logout_url();
- 0
- 2020-05-26
- Erhan Demirci
-
- 2016-04-04
Se vocênãopuder usar
wp_logout_url ()
,poderá desativaresta validação usandoeste código:Add_action ('Check_admin_referer','logout_without_confirm',10,2); Função Logout_Without_Confirm ($ Action,$ Result) { /** * Permitir logout sem confirmação */ if ($ ACTION=="LOG-OUT" & AMP; & amp;!iset ($ _get ['_ wpnonce'])) { $ redirect_to=isset ($ _ solicitação ['redirect_to'])?$ _REQUEST ['REDIRECT_TO']: 'URL-YOU-WANT-TO-REDIRECE'; $ location=str_replace ('& amp; amp;','& amp;',wp_logout_url ($ redirect_to)); cabeçalho ("Localização: $ location"); morrer; } }
Substitua
'URL - desejar-se-redirect'
com o URL que você deseja redirecionar após o logout.Adicioná-loem suasfunções
.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
-
Issofuncionaparaefetuar logout sem validação,masnão redireciona o URL queeu quero.This works for logging out without validation, but it doesn't redirect to the url I want.
- 0
- 2017-06-29
- Phu Nguyen
-
@Phunguyen Você sóprecisa adicionar o URL de redirecionamento à solicitação de redirecionamentonesse código onde há '"citações,após o cólon.@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
-
Existemimplicações de segurançapara removeressa validação?are there any security implications for removing this validation?
- 0
- 2018-03-20
- rok
-
@ user1264304 Acredito que o JSmalicioso de algumaforma carregadononavegadorpodefazer um redirecionamentopara apágina de login,mastudo o que vaifazer éfazer o logout do usuário.O código verdadeiramentemaliciosoprovavelmenteprocuraria substituir o URL antes de umnonce válido.O usuáriopoderianavegarpara outro site queentãotem um link apágina de logout do site atual - assumindo que o outro siteesteja ciente de que o usuáriotem um relacionamento.Mais uma vez,nenhuma consequência diferente defazer loginno usuário.Eununca viisso.Então,para responder a suapergunta,não acho queexista umaimplicação de segurançapara remover a validação.@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,muitos redirecionam ...Err, Too Many Redirects...
- 0
- 2019-02-05
- Solomon Closson
-
Excelente soluçãoparamim,especialmenteporquenãoprecisa de PHPextranaminhapágina de logout.Eu simplesmente usoeste link: wp-login.php? Ação=logout E como redirecionamento,eu uso home_url ()porissofuncionaem qualquer site.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
Se você criar um linkpersonalizadonomenu,defina o rótulopara
“Logout”
e defina o URLparahttp://yourdomain.com/wp-login.php?action=logout
. Em seguida,adicioneestafunção ao seu arquivofunctions.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');
Se você quiser redirecionarpara apágina de login após o logout,então você deve anexar URL de login como:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
**tentouissonãofuncionou. Realmente quer sair dapágina,em seguida,4 algo deuerrado ao clicarnobotão.
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
Issofuncionouparamim adicionando
/?customer-logout=true
nofinal.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
Agora,quandoeu saio via:
Redireciona-me àpágina ondeeupreciso confirmar o logout.
Comoeliminar a confirmaçãoe redirecionarpara apáginainicial após o logout?