我正在使用会话制作一个多阶段表单,我想使用codeIgniter会话通过每个阶段记录信息,然后在最后将会话信息全部输入到数据库中。
我想要做的是从表单中的第1阶段开始,在输入框中输入一个数字,提交它,通过帖子获取输入数字并从会话中的帖子设置该数字。然后在第2阶段从会话中获取信息并简单地回应它,然后至少我知道它正在工作。
我让我的代码工作得更早了,但在移动它并清除chrome中的缓存后,它突然停止工作,我看不到任何错误。请注意我在使用chrome,但我也在firefox和ie中尝试过这个。我正在使用config / autoload加载会话库,并在配置中设置了加密密钥。我试过关闭铬并重新打开它。任何帮助都将非常感激!
控制者:“scholarshiphistory.php”
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Scholarshiphistory extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->model('site_model');
}
//stage 1 of multipart form
public function addhist_selectstudent(){
$this->load->helper('form');
$data = $this->site_model->general();
$this->load->view('view_addhist_selectstudent',$data);
$this->load->view('view_footer',$data);
//set session info if user submits
if($this->input->post('studentSearch')){
$this->session->set_userdata('studentNationalId', $this->input->post('studentSearch'));
}
}
//stage 2 of multipart form
public function addhist_scholarshipdetails(){
if (!$this->session->userdata('studentNationalId')) {
//no session
$data["msg"] = "<strong>No session!</strong>";
} else {
//get the userinput from the session
$userinput = $this->session->userdata('studentNationalId');
$data["msg"] = "ID:". $userinput;
}
$this->load->view("view_addhist_scholarshipdetails",$data);
}
查看:第1阶段 - “view_addhist_selectstudent.php”
<?php $formAttributes = array('role' => 'form', 'style' => 'width: 600px;'); ?>
<?php echo form_open('scholarshiphistory/addhist_scholarshipdetails', $formAttributes); ?>
<div class="form-group">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label for="studentSearch">Student:</label>
<input type="text" name="studentSearch" class="form-control" id="studentSearchInput" placeholder="student num" value="">
<br>
<span id="searchResult" class="help-block" ></span>
<button id="studentSearchBtn" class="btn btn-default">Search</button><!--search button returns info on user input in span above-->
</div>
</div>
</div>
<button id="studentSubmitBtn" type="submit" class="btn btn-default" >Next</button> <!--this is the submit button-->
</div>
</form>
查看:第2阶段 - “view_addhist_scholarshipdetails”
<?php echo $msg; ?>
当我运行代码时,我进入视图'view_addhist_scholarshipdetails',它在控制器的函数addhist_scholarshipdetails中显示if语句的第一个分支,即“no session”。
答案 0 :(得分:0)
我移动代码将会话从控制器中的第一个方法设置为第二个方法(也在控制器中),现在它可以正常工作,即使用set_userdata方法设置会话!
第二种方法现在看起来像这样:
//stage 2 of multipart form
public function addhist_scholarshipdetails(){
if($this->input->post('studentSearch')){
$this->session->set_userdata('studentNationalId', $this->input->post('studentSearch'));
}
if (!$this->session->userdata('studentNationalId')) {
//no session
$data["msg"] = "<strong>No session!</strong>";
} else {
//get the userinput from the session
$userinput = $this->session->userdata('studentNationalId');
$data["msg"] = "ID:". $userinput;
}
$this->load->view("view_addhist_scholarshipdetails",$data);
}
我之前尝试的方法似乎对这个人没问题:http://runnable.com/UhIVTnEfFJEMAAB5 但我认为这是因为他没有以同样的方式设置会议。
非常感谢回答这个问题的那些人。