it-swarm-tr.com

Joomla 3.x'de kalıcı bir çerez oluşturmanın doğru yolu nedir?

Sitemdeki tüm kullanıcılar için özel olarak hazırlanmış içerik sunmak amacıyla bir "hedef" çerez ayarlamak istiyorum. Tanımlama bilgisinin oturum açma/oturum kapatma arasında kalması gerekiyor, bu yüzden oturum açma/oturum kapatıldığında temizlenen jSession'ı kullanamıyorum.

Bunu eski moda bir şekilde başarabilirim

setcookie( "destinationcookie", $_POST['destination'], strtotime( '+90 days' ) );
$destination =  isset($_POST['destination']) ? $_POST['destination'] : $_COOKIE["destinationcookie"];

... ama eminim joomla bir yerde saklı daha iyi bir yol var. PS - bu belgelere göre bulabildiğim kadarıyla neredeyse yok.

8
user2097091

Çerez kimlik doğrulama eklentisine bir göz atmak isteyebilirsiniz. Kalıcı bir çerez ayarlar ve okur.

Burada bulunur: https://github.com/joomla/joomla-cms/tree/staging/plugins/authentication/cookie

Bir çerezi okumak için şunu kullanabilirsiniz:

$app = JFactory::getApplication();
$cookieValue = $app->input->cookie->get($cookieName);

Bir çerez ayarlamak için şunu kullanırsınız:

$app = JFactory::getApplication();
$app->input->cookie->set($cookieName, $cookieValue, time() + $lifetime, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection());

Bazı belgeleri API sayfasında bulabilirsiniz: http://api.joomla.org/cms-3/classes/JInputCookie.html

5
Bakual

Son kez bu alanda biraz araştırma yaptım (Mart 2013), JInput kullanmayan bu çözümü buldum:

JFactory'nin JSession'ı nasıl çağırdığını denetledim, ancak veri depolarken sona erme süresini ayarlamak için bir yol bulamadım.

Sistem eklentisinin içinde, onAfterRender() yöntemini kullanarak

    $cookie = session_get_cookie_params();

    $cookie['lifetime'] = DESIRED LIFETIME;

    session_set_cookie_params($cookie['lifetime'], $cookie['path'], $cookie['domain'], $cookie['secure'], true);

Bulduğum tek geri çekilme, şimdi aynı isim ve içeriğe sahip iki çerez olmasıydı. Herhangi bir yan etki fark etmedim.

Bu yardımcı olur umarım.

Kaynak: Joomla! Genel Geliştirme ›Ön uç kullanıcı oturumu süresinin dolmasını ayarla

2
Valentin Despa

Aşağıdaki gibi bir şey kullanmayı deneyin:

$input  = JFactory::getApplication()->input;
$cookie = $input->cookie;
$post = $input->post;

$cookie->set('destinationcookie', $post->get('destination'), strtotime( '+90 days' ));
$destination =  isset($post->get('destination')) ? $post->get('destination') : $cookie->get($name = 'destinationcookie', $defaultValue = null);
2
Lodder