Comment se déconnecter sans confirmation "Voulez-vous vraiment vous déconnecter?"?
4 réponses
- votes
-
- 2012-10-06
Cela seproduitparce que vousmanquez lenoncenécessaire dans l'URL,quiesten cours de vérification dans
wp-login.php
case 'logout' : check_admin_referer('log-out'); ...
Utilisez
wp_logout_url
afin de récupérer l'URLincluant lenonce.Si vous souhaitez rediriger vers une URLpersonnalisée,transmettez-la simplement comme argument.<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
Vouspouvez également utiliser
wp_loginout
quigénère le lienpour vous,y compris latraduction: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/go/here')fonctionnebien ..echo wp_loginout('/redirect/url/goes/here') is working fine..
- 1
- 2015-10-30
- Mayur Devmurari
-
J'utilise `wp_logout_url (get_permalink ())`et lapage de confirmationn'estpas contournée.Lenonceestgénéré dans le cadre de l'URLmaisje suistoujoursenvoyé à lapage de confirmationI'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
-
Mêmeproblèmeici :(Same issue here :(
- 0
- 2019-04-14
- Jarmerson
-
Merci.m'atravaillé queecho wp_logout_url ();thanks. worked me that echo wp_logout_url();
- 0
- 2020-05-26
- Erhan Demirci
-
- 2016-04-04
Si vousne pouvezpas utiliser lafonction
wp_logout_url()
,vouspouvez désactiver cette validationen utilisant ce 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; } }
Remplacez
'url-you-want-to-redirect'
par l'URL que vous souhaitez rediriger après la déconnexion.Ajoutez-le dans votre
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
-
Celafonctionnepour se déconnecter sans validation,mais celane redirigepas vers l'url queje veux.This works for logging out without validation, but it doesn't redirect to the url I want.
- 0
- 2017-06-29
- Phu Nguyen
-
@PhuNguyen Il vous suffit d'ajouter l'URL de redirection à la demande de redirection dans ce code oùil y a ''guillemets,après les deuxpoints.@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
-
Y a-t-il desimplications de sécuritépour supprimer cette validation?are there any security implications for removing this validation?
- 0
- 2018-03-20
- rok
-
@ user1264304 Jepense que le JSmalveillant chargé dans lenavigateurpourraitfaire une redirection vers lapage de connexion,maistout ce qu'il vafaireest de déconnecter l'utilisateur.Un code vraimentmalveillant chercheraitprobablement à remplacer l'URL avant unnonce valide.L'utilisateurpeutnaviguer vers un autre site qui a alors un lien vers lapage de déconnexion du site actuel -en supposant que l'autre siteest conscient que l'utilisateur a une relation.Encore unefois,aucune conséquence autre que la déconnexion de l'utilisateur.Jen'aijamais vu ça.Donc,pour répondre à votre question,je nepensepas qu'il y ait uneimplication de sécuritépour la suppression de la validation.@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,trop de redirections ...Err, Too Many Redirects...
- 0
- 2019-02-05
- Solomon Closson
-
Excellente solutionpourmoi surtoutparce qu'ilne nécessite aucunphp supplémentaire surmapage de déconnexion.J'utilise simplement ce lien: wp-login.php? Action=logout Et comme redirection,j'utilise home_url () donc çamarche surn'importe quel 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
Si vous créez un lienpersonnalisé dans votremenu,définissez le libellé sur
“Logout”
et définissez l'URL surhttp://yourdomain.com/wp-login.php?action=logout
. Ajoutezensuite cettefonction à votrefichierfunctions.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 vous souhaitez rediriger vers lapage de connexion après la déconnexion,vous devez ajouter l'URL de connexion comme suit:
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();
** aessayé quin'apasfonctionné. Je veux vraiment déconnecter lapage,puis 4 quelque chose s'estmalpasséen cliquant sur lebouton.
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
Cela afonctionnépourmoien ajoutant
/?customer-logout=true
à lafin.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
En cemoment,lorsqueje me déconnecte via:
ilme redirige vers lapage sur laquelleje dois confirmer la déconnexion.
Comment éliminer la confirmationet rediriger vers lapage d'accueil après la déconnexion?