Onaylamadan nasıl çıkış yapılır? 'Gerçekten çıkış yapmak istiyor musunuz? "?


13

Şu anda çıkış yaptığımda:

<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>

beni oturumu kapatmayı onaylamam gereken sayfaya yönlendiriyor.

Çıkıştan sonra onay nasıl kaldırılır ve ana sayfaya nasıl yönlendirilir?

Yanıtlar:


31

Bunun nedeni, URL'de iade edilmekte olan zorunlu nonce'yi kaçırmanızdır. wp-login.php

case 'logout' :
    check_admin_referer('log-out');
    ...

wp_logout_urlNonce dahil URL'yi almak için kullanın . Özel bir URL'ye yönlendirmek istiyorsanız, bunu bağımsız değişken olarak iletmeniz yeterlidir.

<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>

wp_loginoutÇeviri de dahil olmak üzere bağlantıyı sizin için üreten olanı da kullanabilirsiniz :

echo wp_loginout('/redirect/url/goes/here')

1
echo wp_loginout ('/ redirect / url / goes / here') iyi çalışıyor ..
Mayur Devmurari

1
Ben kullanıyorum wp_logout_url( get_permalink())ve onay sayfası geçilmez.
Nonce

Burada aynı sayı :(
Jarmerson

15

wp_logout_url()İşlevini kullanamıyorsanız , bu doğrulamayı şu kodu kullanarak kapatabilirsiniz:

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('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}

'url-you-want-to-redirect'Oturumu kapattıktan sonra yeniden yönlendirmek istediğiniz URL ile değiştirin .

İçine ekleyin functions.php


Bu, doğrulama olmadan oturumu kapatmak için çalışır, ancak istediğim URL'ye yönlendirmez.
Phu Nguyen

@PhuNguyen Yönlendirme URL'sini, bu koddaki iki nokta üst üste işaretinden sonra yönlendirme isteğine eklemeniz yeterlidir.
NJENGAH

bu doğrulamanın kaldırılmasında herhangi bir güvenlik etkisi var mı?
rok

@ user1264304 Tarayıcıya yüklenen kötü amaçlı JS'nin giriş sayfasına bir yönlendirme yapabileceğine inanıyorum, ancak tek yaptığı kullanıcının oturumunu kapatmak. Gerçekten kötü amaçlı kod, muhtemelen geçerli bir nonce'den önce URL'yi değiştirmeye çalışır. Kullanıcı, daha sonra geçerli sitenin oturum kapatma sayfasının bağlantısı olan başka bir siteye gidebilir; diğer sitenin bir ilişkisi olduğunu bildiği varsayılarak. Yine, kullanıcının oturumunu kapatmaktan başka bir sonuç yoktur. Bunu hiç görmedim. Sorunuzu cevaplamak için, doğrulamanın kaldırılmasının güvenlik açısından bir anlamı olduğunu düşünmüyorum.
TonyG

Hata, Çok Fazla Yönlendirme ...
Solomon Closson

3

Menünüzde özel bir bağlantı oluşturursanız, etiketi olarak “Logout”ayarlayın ve URL'yi olarak ayarlayın http://yourdomain.com/wp-login.php?action=logout. Ardından bu işlevi functions.phpdosyanıza ekleyin :

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');

Oturumu kapattıktan sonra giriş sayfasına yeniden yönlendirmek istiyorsanız, giriş URL'sini şu şekilde eklemelisiniz:

$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();

Referans bağlantısı


-2

/?customer-logout=trueSonunda ekleyerek bu benim için çalıştı .

http://www.website.com/?customer-logout=true

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.