Hello ,

I'm not able to get session variable inside my submit handler function
i post my module form in home page and i would like to obtain value setting in submit handler

<?php
function my_module_form($form, &$form_state) {
global
$base_path
$form
['#action'] = $base_url;
   
$form['cp'] = array(
       
'#type' => 'textfield',
       
'#size' => 25,
       
'#required' => false,
     );
   
$form['submit'] = array(
       
'#type' => 'submit',
       
'#value' => t('Next'),
    );
    return
$form;
}
?>

<?php
function my_module_form_validate($form, &$form_state) {
  
$mess = "";
    if(
$form_state['values']['cp'] == '' || $form_state['values']['cp'] == '0' ){
       
$mess = form_set_error('cp', "error 1");
    }elseif(
$form_state['values']['cp'] != '' ||  $form_state['values']['cp'] != '0'){
          if (!
preg_match('#^[0-9]{5,5}$#',$form_state['values']['cp'])){
               
$mess = form_set_error('cp', "error 2");
          }elseif( !
is_numeric($form_state['values']['cp'])){
               
$mess = form_set_error('cp', "error "");
          }
    }
    return
$mess;
}
?>

<?php
function my_module_form_submit($form, &$form_state) {

   
$cp = $form_state['values']['cp'];
   
      
$_SESSION['myvar']= doStuff($cp);
}
?>

im not able to get $_SESSION['myvar'] inside my front page

Thank you very much for your help

Comments

Two things that I

Two things that I notice:

  • function naming - if the form constructor is my_module_form($form, &$form_state), default validator and submit handler are my_module_form_validate($form, &$form_state) and my_module_form_submit($form, &$form_state), respectively;
  • form validators act on references and should not attempt to return; stuff; form_set_error() is also used in a weird manner. should be something like:

<?php
function my_module_form_validate($form, &$form_state) {
  if(
$form_state['values']['cp'] == '' || $form_state['values']['cp'] == '0' ) {
   
form_set_error('cp', "error 1");
  }
  elseif(
$form_state['values']['cp'] != '' ||  $form_state['values']['cp'] != '0') {
    if (!
preg_match('#^[0-9]{5,5}$#',$form_state['values']['cp'])) {
     
form_set_error('cp', "error 2");
    }
    elseif (!
is_numeric($form_state['values']['cp'])) {
     
form_set_error('cp', "error "");
    }
  }
}
?>

Yes you are right But have

Yes you are right

But have you any idea about my session variable ?

Get it working thanks

Get it working

thanks

Can you tell how ?

Can you tell how ?
Ok, It working well with :

<?php
$_SESSION
['myvar']= $myvar;
?>

Steve

nobody click here