[eluser]Nicholas Hanks[/eluser]
I tried to solve this problem for hours. Seems like it is bug in CI. When the form is valid it should set session variable "request" = "yes" it does that however CI fails to read it and removes it...weird.
Once of form is submitted it should not render form view again but it does why???? I think it is bug.
Code:
public function requestForm()
{
if($this->session->userdata('received') !== false)
{
$v = $this->session->userdata('received');
if(strcmp($v,'yes') == 0)
{
$data['header'] = "Re-Submisson Attempt";
$data['message'] = "We have already received your information. Our sales representative will contact you soon.";
$this->load->view('message', $data);
}
else
{
echo 'dfgdfgddgdfg';
die();
}
}
else
{
$this->load->helper('form');
$this->load->helper('string');
$this->session->unset_userdata('token');
$token = random_string('alnum', 16);
$this->session->set_userdata('token',$token);
$data['token'] = $this->session->userdata('token');
$this->load->view('form',$data);
}
}
public function submitRequestForm()
{
$result = array();
$this->load->library('form_validation');
$token = $this->session->userdata('token');
//Set Validation
$this->form_validation->set_rules('email', 'Email', 'trim|valid_email|required|max_length[42]|matches[email]|xss_clean');
$this->form_validation->set_rules('confirmEmail', 'Confirm Email', 'trim|valid_email|required|max_length[42]|xss_clean');
$this->form_validation->set_rules('firstname', 'First Name', 'trim|required|max_length[42]|xss_clean');
if(!isset($_POST['contactBy']))
{
$result['contactBy'] = false;
}
if(isset($_POST['contactBy']))
{
if(!is_array($_POST['contactBy']))
{
$result['contactBy'] = false;
}
else
{
if ((!in_array('By Email',$_POST['contactBy'])) && (!in_array('By Phone',$_POST['contactBy'])))
{
$result['contactBy'] = false;
}
}
}
if(!isset($_POST['country']))
{
$result['country'] = false;
}
if(!isset($_POST['type']))
{
$result['type'] = false;
}
if(!isset($_POST['token']))
{
$result['token'] = false;
}
if(isset($_POST['token']))
{
if($token === false)//token was never set so
{
echo 'Here';
$result['token'] = false;
}
else
{
if(strcmp($_POST['token'],$token) !== 0)
{
echo $token;
$result['token'] = false;
}
}
}
$data['result'] = $result;
if (($this->form_validation->run() == false) || (count($result) !== 0))
{
$this->load->helper('string');
$this->load->helper('form');
$token = random_string('alnum', 16);
$this->session->unset_userdata('token');
$this->session->set_userdata('token',$token);
$data['token'] = $this->session->userdata('token');
$this->load->view('form',$data);
}
else
{
$contact = implode(', ',$_POST['contactBy']);
$this->session->unset_userdata('token');
$this->session->set_userdata('received','yes');
$data['header'] = "Submission Sucessful";
$data['message'] = "Your information has been received. Our sales representative will contact you soon.";
$this->load->view('message', $data);
}
}