Session kezelés Drupal 6-ban

realdream képe

Egy tömb tartalmát szeretném tárolni a $_SESSION szuperglobal változóban.
Sajnos ez abban az esetben nem működik, ha az user Anonymous tehát nincs bejelentkezve és a gyorstárazási mód (admin/settings/performance) be van kapcsolva pl. Normál.
Bekapcsolt gyorsítótárral névtelen felhasználónál csak az első megadott értéket kapom vissza és hiába unset majd új értékadás, akkor sem változik meg.
A sessions táblában az érték jól szerepel, de ha megpróbálom kiolvasni (pl. $változó=$_SESSION['teszt']) akkor már nem jó.

Érdekes, hogy a /***/ közötti drupal_set_message($_SESSION['test_name']); parancs beillesztése esetén jól működik, ha ezt a sor kommentelem akkor már nem.

Készítettem egy kis példa programot a bemutatásra:

<?php
 
function rd_teszt_menu() {
    $items = array();
    $items['testform'] = array(
        'title' => 'Test form',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('test_form'),
        'access callback' => true,
        'type' => MENU_NORMAL_ITEM,
    );
    $items['test_page'] = array(
        'title' => 'Test Page',
        'type' => MENU_NORMAL_ITEM,
        'page callback' => 'test_page',
        'access callback' => true,
    );
    return $items;
}
 
function test_form(&$form_state) {
    $form['name'] = array(
        '#type' => 'textfield',
        '#title' => t('Name'),
    );
    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'Submit',
    );
    return $form;
}
 
function test_form_submit($form, &$form_state) {
    $nev = $form_state['values']['name'];
    unset($_SESSION['test_name']);
    $_SESSION['test_name'] = $nev;
    /* * */
    //drupal_set_message($_SESSION['test_name']);
    /* * */
    $form_state['redirect'] = 'test_page';
    return;
}
 
function test_page() {
    $nev = $_SESSION['test_name'];
    $output = 'Name: ' . '<pre>' . print_r($nev, true) . '</pre>';
    return $output;
}
Drupal verzió: