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

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;
}
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;
}

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

Drave Robber’s picture

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:
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 "");
    } 
  }
}
stomerfull’s picture

Yes you are right

But have you any idea about my session variable ?

stomerfull’s picture

Get it working

thanks

steveoriol’s picture

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

$_SESSION['myvar']= $myvar;

Stève