Joomla (sistemski?) cookie

Joomla mi naloži en cookie, servira se v 2.5, tudi v 1.5 sem pogledal. Ime je skupek 32 znakov (črk in številk), value prav tako, le da ima 26 znakov. Poteče ob koncu seje.

Torej nikakor ne morem razbrati za kakšen cookie gre, sem pa 99% prepričan, da ga postreže Joomla.

No, tole sem še našel na Joomla forumu, ampak mi ne pove prav veliko:

'd58ba4091c622661a0d46f03b412ac8b'
This is the joomla cookie store joomla user session id.

Rad bi dognal, kaj ta cookie je in zakaj se uporablja, da lahko obiskovalcem to razložim (nov cookie zakon). Ve kdo?

3 odgovori

Verjetno gre za session cookie.
Če pogledaš v bazo v tabelo _session bi moral v stolpcu sessionid videti enako vrednost.

Gre za non-persistent cookie, ki se uniči, ko uporabnik zapre brskalnik.

1

Joomla ti servira ta piškotek če:
-imaš vklopljeno statistiko
-imaš modul za izbiro templata
-imaš nameščen kak modul ali komponento, ki počneta podobno (kak formular...)

Override za to je pri 1.5:
libraries/joomla/session/session.php
sessionstart(); spremeniš v nekaj takega
if (substr($
SERVER['SCRIPTNAME'] , 0 , 14) == "/administrator"){sessionstart();}
Zadeva deluje ok, če ne rabiš front prijave.

ali

/includes/joomla.php
// setcookie( $sessionCookieName, '-', false, '/' );

za 2.5:
[joomla-root]\index.php
// Instantiate the application.
$app = JFactory::getApplication('site',array('session'=>false));

[joomla-root]\libraries\joomla\session\session.php
protected function start()
{
//check back-end url
$url = $
SERVER["REQUEST_URI"];
$pieces = explode("/", $url);

if(in_array ('administrator',$pieces) == true ){

// Start session if not started
if ($this->state == 'restart') {
session
id($this->createId());
} else {
$session
name = sessionname();
if (!JRequest::getVar($session
name, false, 'COOKIE')) {
if (JRequest::getVar($sessionname)) {
session
id(JRequest::getVar($sessionname));
setcookie($session
name, '', time() - 3600);
}
}
}

sessioncachelimiter('none');
session_start();
}
return true;
}

\components\com_content\models\article.php
public function hit($pk = 0)
{
/* $hitcount = JRequest::getInt('hitcount', 1);

        if ($hitcount)
        {
            // Initialise variables.
            $pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id');
            $db = $this->getDbo();

            $db->setQuery(
                    'UPDATE #__content' .
                    ' SET hits = hits + 1' .
                    ' WHERE id = '.(int) $pk
            );

            if (!$db->query()) {
                    $this->setError($db->getErrorMsg());
                    return false;
            }
        } */

        return true;

}

1

Super, hvala obema. Glede na to, da uporabljam različne template-e in tudi formularje cookie-a ne bom overridal. Itak je 1st party, tako da ga lahko postrežem na začetku kot predjed. :) Sem pa dobil dovolj informacij, da bom spesnil nekaj lepega skupaj za obvestilo.