2013-04-11 66 views
1

我将会话成功设置为输出分析器显示会话名称和值。 但是,当我的POST数据控制器不能接收会话数据。 图书馆被加载,$ config ['sess_expire_on_close'] = TRUE我改变了TRUE-FALSE没有任何成功。还尝试了重写代码。 另一个问题,我使用两台电脑,并在Linux机器上我得到错误“标题已发送...”,但在Win机器上我没有收到此消息。如何在Win PC上启用它。通知和警告已启用。Codeigniter。控制器无法接收会话数据

所以......

控制器kmgld:

function authorisation_user() 
    { 
      ...... 
      $data['set_cookie']  = "Surname"; 
      ...... 
      $this->load->view('vheader', $data); 
      $this->load->view('vuser_kmgld'); 
      $this->output->enable_profiler(TRUE); //show me only session name and value which I set 
    } 

查看:

if ($set_cookie!=NULL) 
    { 
     $this->session->set_userdata('surname',$set_cookie); 

    } 
    <!Doctype...> 

    <form action="<?php echo base_url()?>index.php/kmgld/update_kmgld" method="post" name=""> 

又一次控制器kmgld从视图

 function update_kmgld() 
     { 
     ...update DB 
     $test=$this->session->userdata('surname'); 
     echo $test; //it is NULL 
     $this->output->enable_profiler(TRUE); // show me only now session id, ip, user agent 
     } 
+0

其中是您的代码中的发布数据? – sbaaaang 2013-04-11 09:30:16

+0

首先在authorisation_user()中我得到POSTED一个“姓氏”。 其次在update_kmgld()中,但在那里我只收到由记录用户输入的数据(距离,日期,目标行程)。必须有一个“圈子”,如:1.用户登录; 2.用户输入数据;用户重定向到步骤2并显示输入的数据。换句话说,用户必须看到他输入的内容。 – user2027175 2013-04-11 10:06:51

+0

请使用$ _POST数据发布您的完整代码,这样人们可以帮助您,也可以在任何您想要的地方尝试** var_dump($ this-> session-> all_userdata()); **并报告输出; – sbaaaang 2013-04-11 10:09:37

回答

0

删除会话设置和做在控制ller:

function authorisation_user() 
    { 

      $data['set_cookie']  = "Surname"; 

      $this->session->set_userdata('surname',$set_cookie); 
      $this->load->view('vheader', $data);//are you sure here is where $data should go ? 
      $this->load->view('vuser_kmgld');//not $data here? 
      $this->output->enable_profiler(TRUE); //show me only session name and value which I set 
    } 
+0

When我将设置会话移动到控制器,并通过分析器显示数据。现在我看到了我的价值和额外的会话数据。试着... 在此先感谢您 – user2027175 2013-04-11 12:00:44

+0

@ user2027175不客气,如果我的回答是明确的,请不要忘记接受它;)谢谢! – sbaaaang 2013-04-11 12:29:22

+0

@ user2027175记得在任何输出结果前总是设置会话数据,所以profiler是输出;) – sbaaaang 2013-04-11 12:30:07

1

你必须在控制器中设置userdata,视图是不适合它的地方。所以你可能会做这样的事情在你的控制器:

$surname = "Surname"; 
$this->session->set_userdata('surname',$surname); 
$data['set_cookie'] = $surname; 
... 
$this->load->view('vheader', $data); 

不知道你是否自动加载Session库。否则你必须在你需要的每个函数中加载它。

+0

是我配置了自动加载:$ autoload ['libraries'] = array('pagination','database','table', '会话'); – user2027175 2013-04-11 11:27:04

+0

哦!我看到它的工作原理。 Fuf .....) 谢谢大家 – user2027175 2013-04-11 13:08:11

0

控制器:

<?php 

class Kmgld extends CI_Controller { 

function index() 
    { 
     $data['flag'] = "first"; 
     $this->load->model('Mkmgld'); 
     $this->load->view('vheader'); 
     $this->load->view('vauthorisation',$data); 
     $this->load->view('vfooter'); 

    } 

function get_kmgld() 
    { 
     $this->load->model('Mkmgld'); 
     $this->Mkmgld->get_kmgld(); 
     $this->load->view('vheader'); 
     $this->load->view('kmgld'); 
     $this->load->view('vfooter'); 
    } 

function authorisation_user() 
    { 
     $this->load->model('Mkmgld'); 
     $surname_session   = $this->session->userdata('surname'); 
     $data['surname_post']  = mb_convert_case($this->input->post('surname'), MB_CASE_TITLE, "UTF-8"); 
     $data['user_id']   = $this->Mkmgld->valid_user($data['surname_post']); 
     $surname     = (isset($data['user_id'][0]->surname)? $data['user_id'][0]->surname: ""); 

     if(isset($surname) and $surname !=NULL) 
      { 
       $data['query']    = $this->Mkmgld->get_kmgld($data['surname_post']); 
       $data['get_trip_target_id'] = $this->Mkmgld->get_trip_target_id(); 
       $data['set_cookie']   = $data['surname_post']; 
       $this->session->sess_destroy(); 

       $this->load->view('vheader', $data); 
       $this->load->view('vuser_kmgld'); 
       $this->load->view('vfooter'); 

      }else if (isset($surname_session) and $surname_session!= NULL) 
        { 
         //echo "you are in session"; 
         $data['query']    = $this->Mkmgld->get_kmgld($surname_session); 
         $data['get_trip_target_id'] = $this->Mkmgld->get_trip_target_id(); 

         $this->load->view('vheader', $data); 
         $this->load->view('vuser_kmgld'); 
         $this->load->view('vfooter'); 

        } else 
          { 
            $data['flag'] = "wrong"; 
            $this->load->view('vheader'); 
            $this->load->view('vauthorisation',$data); 
            $this->load->view('vfooter'); 
          } 

       //echo "<pre>"; 
       //var_dump($data); 
      $this->output->enable_profiler(TRUE); 
    }//end authorisation_user() 

function update_kmgld() 
    { 
     $this->load->model('Mkmgld'); 
     $data['get_trip_target_id'] = $this->Mkmgld->get_trip_target_id(); 
     $trip_target_id    = $data['get_trip_target_id'][0]->Auto_increment; 
     $this->Mkmgld->update_kmgld($this->input->post('day') 
            ,$this->input->post('mon') 
            ,$this->input->post('year') 
            ,$this->input->post('spd_before') 
            ,$this->input->post('spd_after') 
            ,$this->input->post('total') 
            ,$this->input->post('target') 
            ,$this->input->post('approved') 
            ,$this->input->post('user_id') 
            ,$trip_target_id); 
     $a=$this->session->userdata('surname'); 
     if ($a==NULL) 
      { 
       echo $a; 
       //redirect('kmgld/authorisation_user'); 
       $this->output->enable_profiler(TRUE); 
      } 


    } 
    }//end class kmgld 
    ?> 

型号:

enter code here<?php 

类Mkmgld延伸CI_Model {

function __construct() 
{ 
    parent::__construct(); 
} 

function get_kmgld($surname){ 
     $query = $this->db->query("SELECT 
              * 
            FROM `user` 
            INNER JOIN `user_has_trip` 
            ON `user`.`user_id` = `user_has_trip`.`user_id` 
            INNER JOIN `trip_target` 
            ON `user_has_trip`.`user_has_trip_id` = `trip_target`.`trip_target_id` 
            WHERE `user`.`surname` = '$surname' 
           "); 
     return $query->result(); 

} 

function valid_user($surname) 
    { 
     $user_id = $this->db->query("SELECT 
              * 
            FROM `user` 
            WHERE `user`.`surname`='$surname' 
           "); 
     return $user_id->result(); 
    } 


function get_trip_target_id() 
    { 
     $get_trip_target_id = $this->db->query("SHOW TABLE STATUS LIKE 'trip_target'"); 
     return $get_trip_target_id->result(); 

    } 

function update_kmgld($day, $mon, $year, $spd_before, $spd_after, $total, $target, $approved, $user_id, $trip_target_id) 
    { 
     $date = $year."-".$mon."-".$day; 
      $this->db->query("INSERT INTO `trip_target` (`trip_target_id` 
                ,`date` 
                ,`speedometer_before` 
                ,`speedometer_after` 
                ,`duration` 
                ,`target` 
                ,`approved`) 
          VALUES (NULL 
            ,'$date' 
            ,'$spd_before' 
            ,'$spd_after' 
            ,'$total' 
            ,'$target' 
            ,'$approved') 
          "); 

      $this->db->query("INSERT INTO `user_has_trip` 
              (`user_has_trip_id` 
               ,`user_id` 
               ,`trip_target_id` 
              ) 
             VALUES (NULL 
               ,'$user_id' 
               ,'$trip_target_id' 
               ) 
          "); 


    } 


}//end class 

?> 

查看vauthorisation:

<?php 
    $surname_value = $this->session->userdata('surname'); 
?> 

    <?php 
    if ($flag =="wrong") 
{ 
    echo "...Bad very bad. Try use another language "; 
} 


?> 

HTML: 形式方法= “邮报” 行动= “authorisation_user” 输入类型= “文本” 名称= “姓”

查看vheader:

<?php 
if ($set_cookie!=NULL) 
{ 
    $this->session->set_userdata('surname',$set_cookie); 
    echo "cookie set".$set_cookie; 

} 


?> 

查看vuser_kmgld:

HTML : form action =“update_kmgld” inputs name = day,name = mon,name = year,name = spd_before ... etc。经过php代码:

if (isset($user_id[0]->user_id)) 
    { 
    foreach ($query as $row) 
{ 
    echo "<tr> 
           <td>".(isset($row->date)? date("d.m.Y",  strtotime($row->date)): "")."</td> 
        <td>". (isset($row->speedometer_before)? $row->speedometer_before : "")."</td> 
        <td>". (isset($row->speedometer_after)? $row->speedometer_after : "")."</td> 
      <td>". (isset($row->duration)? $row->duration : "")."</td> 
      <td>". (isset($row->target)? $row->target : "")."</td> 
      <td>". (isset($row->aproved)? $row->aproved : "")."</td> 
     </tr>"; 
    } 

    } //else redirect('kmgld/index'); 
    ?>