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ó:
Fórum: